annuncio

Comprimi
Ancora nessun annuncio.

Valori Open/Close di un ordine appena chiuso!

Comprimi
X
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • Valori Open/Close di un ordine appena chiuso!

    Ciao a tutti,
    sto facendo qualche test, per risolvere una mia problematica. Come da titolo non riesco a capire com poter trovare i valori di un ordine appena chiuso...Il MetaEditor non rileva errori ma il risultato finale non avviene correttamente...idee?!?
    il codice è questo:

    Codice PHP:
    //Condizione SELL Primo Colpo
       
    if(OrdersTotal() == 0  // Controllo Ordini Aperti
       
    && iRSI(Symbol(),0,2,PRICE_CLOSE,2) > 70
       
    && iRSI(Symbol(),0,2,PRICE_CLOSE,1) < 70
     
       
    )
       
       
       {     
       
    Ticket OrderSend(Symbol(), OP_SELL10.0Open[0], 000"BO exp:60"00clrRed); // Invio ordine (dedicato per Broker di Opzioni Binarie)
       
    if(Ticket 0) Print("Errore invio ordine:"+IntegerToString(GetLastError())); // Controllo errori
       
    else Print("Ordine inviato correttamente"); // Ordine ok
       
    }
       
       if(
    OrderSelect(TicketSELECT_BY_TICKET))
        {
         Print(
    "order #12470 open price is "OrderOpenPrice());
         Print(
    "order #12470 close price is "OrderClosePrice());
        }
      else
        Print(
    "OrderSelect returned the error of ",GetLastError());
       
       
    //-------------------------------------------------------------------------------------------


       //Condizione SELL Secondo Colpo
       
    if( OrderSelect(TicketSELECT_BY_TICKET)) // Selezione dell'ordine precedente  
       
    {      
       if(
    OrderClosePrice() > OrderOpenPrice() )// Determinare se la chiusura dell'ordine selezionato ha un prezzo maggiore all'apertura   
       
    Ticket OrderSend(Symbol(), OP_SELL10.0Open[0], 000"BO exp:60"00clrRed);// Invio del nuovo ordine
       
       
    if(Ticket 0) Print("Errore invio ordine:"+IntegerToString(GetLastError())); // Controllo errori
       
    else Print("Ordine inviato correttamente");  // Ordine ok
       


  • #2
    Non esiste una funzione di Mql4 che individui un ordine appena chiuso, perciò DOPO che l'EA ha aperto un trade, ad ogni tick devi interrogare i TotalOrders degli ordini aperti dell'EA e se il valore degli ordini aperti dall'EA corrente è zero, vuol dire che il trade è stato appena chiuso: immediatamente interroghi il basket degli ordini CHIUSI e prendi il ticket dell'ultimo ordine chiuso che è l'ultimo partendo dalla fine.
    Ora che hai il ticket fai OrderSelect e hai tutti i valori di questo trade.
    La vita non è un giro di prova, cogli l’attimo.
    Realizzazione per Metatrader4 di trading system, indicatori, pattern grafici, Ottimizzazioni IS-OOS su Forex e CFD, Analisi di Portafoglio

    Commenta


    • #3
      Ciao Umberto grazie della risposta, avevo pensato di far cosi ma in base a ciò che mi hai scritto non dovrebbe essere corretto?

      Codice PHP:
      //Condizione SELL
         
      if( OrderSelect(TicketSELECT_BY_TICKET)) // Selezione dell'ordine
         
      {      
         if(
      OrderClosePrice() > OrderOpenPrice() )// Determinare se la chiusura dell'ordine selezionato ha un prezzo maggiore all'apertura   
         
      Ticket OrderSend(Symbol(), OP_SELL10.0Open[0], 000"BO exp:60"00clrRed);// Invio del nuovo ordine
         
         
      if(Ticket 0) Print("Errore invio ordine:"+IntegerToString(GetLastError())); // Controllo errori
         
      else Print("Ordine inviato correttamente");  // Ordine ok
         

      Commenta


      • #4
        Prima di fare OrderSelect devi avere verificato che il trade è stato chiuso, quindi ci sono tante righe di codice da inserire prima.
        La vita non è un giro di prova, cogli l’attimo.
        Realizzazione per Metatrader4 di trading system, indicatori, pattern grafici, Ottimizzazioni IS-OOS su Forex e CFD, Analisi di Portafoglio

        Commenta


        • #5
          Leggendo dalla guida ufficiale, si può estrapolare questo dato cosi:

          Codice PHP:
                                                    if(OrderSelect(12470SELECT_BY_TICKET)==true)
                          {
                           Print(
          "order #12470 open price is "OrderOpenPrice());
                           Print(
          "order #12470 close price is "OrderClosePrice());
                          }
                        else
                          Print(
          "OrderSelect returned the error of ",GetLastError()); 
          Se riesce a printare sia il prezzo di apertura e chiusura, pensavo che era corretto il mio ragionamento!

          Commenta

          Sto operando...
          X