Announcement

Collapse
No announcement yet.

Funzione CloseAll

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Funzione CloseAll

    Ragazzi buona sera ho fatto questa funzione che dovrebbe chiudermi tutti gli ordini aperti

    PHP Code:
    void CloseAllint Magic)
    {
    for( 
    int i OrdersTotal(); >= 0i-- )
    {
    if( 
    OrderSelectiSELECT_BY_POS ) && OrderMagicNumber() == Magic )
    {
    for( 
    int k 010k++ )
    {
    RefreshRates();
    if( !
    OrderCloseOrderTicket(), OrderLots(), OrderClosePrice(), 20clrRed ))
    {
    Print(
    "Error close order sell!, error#"GetLastError());
    }
    else
    {

    Print(
    "Chiuso tutto" GetLastError());
    }
    }
    }
    }

    Ma mi dà sempre l'errore #4108 che "non conosce l'id del tiket" e siccome ho provato a farla in vari modi e l'errore è sempre lo stesso ricorro al vostro aiuto, dove sbaglio??

    #2
    prima di chiudere l'ordine, stampa il numero di ordine OrderTicket()
    così da verificare se il ciclo for sta trovando qualche ordine aperto
    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 .

    Comment


      #3
      Originally posted by texcs View Post
      Ragazzi buona sera ho fatto questa funzione che dovrebbe chiudermi tutti gli ordini aperti

      PHP Code:
      void CloseAllint Magic)
      {
      for( 
      int i OrdersTotal(); >= 0i-- )
      {
      if( 
      OrderSelectiSELECT_BY_POS ) && OrderMagicNumber() == Magic )
      {
      for( 
      int k 010k++ )
      {
      RefreshRates();
      if( !
      OrderCloseOrderTicket(), OrderLots(), OrderClosePrice(), 20clrRed ))
      {
      Print(
      "Error close order sell!, error#"GetLastError());
      }
      else
      {

      Print(
      "Chiuso tutto" GetLastError());
      }
      }
      }
      }

      Ma mi dà sempre l'errore #4108 che "non conosce l'id del tiket" e siccome ho provato a farla in vari modi e l'errore è sempre lo stesso ricorro al vostro aiuto, dove sbaglio??
      Per chiudere tutti gli ordini correttamente è necessario differenziare per tipologia (buy, sell, pending order), ad esempio usando OrderType().
      Da quello che vedo in questo pezzo di codice il ciclo for con la variabile k invia per 10 volte la stessa OrderClose() con il medesimo ticket_id e dubito possa funzionare correttamente, prova a togliere questo ciclo perchè ti reitera per 10 volte la stessa istruzione e probabilmente tenta di chiudere un ticket già chiuso.
      Questi sono dei suggerimenti che ti possono aiutare. P.S. ti ho risposto al pm

      un saluto

      Comment

      Working...
      X