[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 4

 
splxgf:

Come si fa a determinare qual è l'uno o l'altro?

https://book.mql4.com/ru/trading/orderclose

E filtrare per simbolo se necessario, esempio perfettamente funzionante

https://book.mql4.com/ru/trading/ordermodify


Sto usando il seguente esempio per determinare, ma chiude solo l'ultimo ordine pendente invece del primo, anche se tutte le condizioni sono soddisfatte per il primo ordine pendente. Aiutami a trovare un errore!!!!!!!!!!!!!

 if (Bid>=Openup-0.0005)
 {
 for(int count = OrdersTotal()-1; count >= 0; count--)
  {  
     OrderSelect(count, SELECT_BY_POS, MODE_TRADES);
     if (OrderType() == OP_BUYLIMIT)
       {  
        OrderDelete(ticket,CLR_NONE);
       }
  }
 }
 
Andreev:


Sto usando il seguente esempio per determinare, ma chiude solo l'ultimo ordine pendente invece del primo, anche se tutte le condizioni sono soddisfatte per il primo ordine pendente. Aiutami a trovare un errore!!!!!!!!!!!!!


Il modo più semplice per determinare quale ordine dei due chiudere è il numero magico. Assegnate loro dei numeri diversi quando li impostate. Nell'esempio che hai mostrato sopra manca questo controllo. Scrivere anche OrderTicket() invece di ticket.
 
tol64:

Il modo più semplice per determinare quale ordine dei due chiudere è il numero magico. Assegnate loro dei numeri diversi quando li impostate. Nell'esempio che hai mostrato sopra manca questo controllo. Scrivere anche OrderTicket() invece di ticket.

Grazie per la risposta! Mi è già stato consigliato un numero magico, ma dove metterlo quando si definisce un ordine pendente e come collegarlo a un ticket - non capisco.
 
Andreev:

Grazie per la risposta! Mi è già stato consigliato di usare il numero magico, ma non capisco dove metterlo quando si definisce un ordine pendente e come metterlo in relazione con un ticket.


la magia dovrebbe essere impostata quando si apre un ordine, ma dobbiamo assicurarci che il numero di ordini diversi sia diverso, altrimenti non ha senso, qui sotto c'è un link a una descrizione completa della funzione OrderSend dove si trovano tutte le variabili che possono essere impostate quando si apre un ordine, sei TU che dovresti essere interessato alla variabile magica, ma per funzionare correttamente, tutte le variabili prima di essa devono essere compilate, tutte le variabili dopo - come meglio credi

https://docs.mql4.com/ru/trading/OrderSend

 
LazarevDenis:


la magia dovrebbe essere impostata quando si apre un ordine, ma assicuratevi che il numero di ordini diversi sia diverso, altrimenti non ha senso, qui sotto c'è un link a una descrizione completa della funzione OrderSend dove si trovano tutte le variabili che possono essere impostate quando si apre un ordine, VOI dovreste essere interessati alla variabile magia, ma per funzionare correttamente tutte le variabili prima di essa dovrebbero essere compilate, tutte le variabili dopo - come si vede bene

https://docs.mql4.com/ru/trading/OrderSend


Perché ordini diversi hanno bisogno di una magia diversa?
 

Ho scritto un EA e genera solo due errori durante la compilazione - non so come liberarmene.

questi errori 1) 'SL' - variabile già definita C:\Program Files\MetaTrader Finam\experts\$.mq4 (43, 11)

e 2) 'TP' - variabile già definita C:³ Files\MetaTrader Finam\experts\$.mq4 (45, 11)

Il codice dell'Expert Advisor qui sotto:

 
extern int  

            Diapazon=1200,
            Slipege=500,
            TP=1500,
            SL=15000;   
            
double pa, pb, pt;
int    ls, dg;                  

  int start()                                // Спец. функция start()
  {  
   
   pa=MarketInfo(Symbol(),MODE_ASK);
   pb=MarketInfo(Symbol(),MODE_BID);
   pt=MarketInfo(Symbol(),MODE_POINT);
   dg=MarketInfo(Symbol(),MODE_DIGITS);
   ls=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   //---------------------------------------+
    
   if
   
   {
   
   double variable1 = NormalizeDouble(pa+ls*pt,dg); 
  
   double variable2 = NormalizeDouble(pb-ls*pt,dg);
   
   //---------------------------------------------+ 
  
   double pa = NormalizeDouble(Ask+Diapazon*Point,Digits);
   
   double SL = NormalizeDouble(Bid+(Diapazon-SL)*Point,Digits);
  
   double TP = NormalizeDouble(Ask+(Diapazon+TP)*Point,Digits);

 
  
   double pb = NormalizeDouble((Bid+Diapazon*Point,Digits);
  
   double SL = NormalizeDouble(Bid+(Diapazon+SL)*Point,Digits);
  
   double TP = NormalizeDouble(Bid+(Diapazon-TP)*Point,Digits);
   
   }
  
                                       // Открытие BUY
                                         
   OrderSend(Symbol(),OP_BUYSTOP, 0.05,Ask+Diapazon*Point,3,Bid+(Diapazon-SL)*Point,Ask+(Diapazon+TP)*Point);
   
                                     // Открытие SELL
   
   OrderSend(Symbol(),OP_SELLSTOP,0.05,Bid+Diapazon*Point,3,Bid+(Diapazon+SL)*Point,Bid+(Diapazon-TP)*Point);  

   return;                                   // Выход из start()
  }
  
 
Vinin:

E perché mandati diversi hanno bisogno di magie diverse?

A quanto pare per questo - qualche post sopra :-))) - "Il modo più semplice per determinare quale ordine dei due chiudere è il numero magico. Assegnate loro dei numeri diversi quando li impostate. Nell'esempio che hai mostrato sopra manca questo controllo. Scrivere anche OrderTicket() invece di ticket".
 
tol64:

Il modo più semplice per determinare quale ordine dei due chiudere è il numero magico. Assegnate loro dei numeri diversi quando li impostate. Nell'esempio che hai mostrato sopra manca questo controllo. Inoltre, scrivi OrderTicket() invece di ticket.

Ricorda il tempo di impostazione degli ordini, poi confronta il tempo nel ciclo e cancella il più vecchio.
 
Andreev:


Sto usando il seguente esempio per determinare, ma chiude solo l'ultimo ordine pendente invece del primo, anche se tutte le condizioni sono soddisfatte per il primo ordine pendente. Aiutami a trovare un errore!!!!!!!!!!!!!


Non si esclude la variante di trasformazione del primo ordine in un ordine a mercato, e, di conseguenza, l'impossibilità della sua rimozione da questo ciclo su ordini limite?
Motivazione: