[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 4

 
splxgf:

Comment déterminer laquelle des deux est la bonne ?

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

Et filtrez par symbole si nécessaire, exemple entièrement fonctionnel

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


J'utilise l'exemple suivant pour déterminer, mais il ne ferme que le dernier ordre en attente au lieu du premier, bien que toutes les conditions soient remplies pour le premier ordre en attente. Aidez-moi à trouver une erreur !!!!!!!!!!!!!

 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:


J'utilise l'exemple suivant pour déterminer, mais il ne ferme que le dernier ordre en attente au lieu du premier, bien que toutes les conditions soient remplies pour le premier ordre en attente. Aidez-moi à trouver une erreur !!!!!!!!!!!!!


Le moyen le plus simple de déterminer l'ordre des deux à fermer est le nombre magique. Attribuez-leur des numéros différents lorsque vous les configurez. L'exemple que vous avez montré ci-dessus ne comporte pas ce contrôle. Écrivez également OrderTicket() au lieu de ticket.
 
tol64:

Le moyen le plus simple de déterminer l'ordre des deux à fermer est le nombre magique. Attribuez-leur des numéros différents lorsque vous les configurez. L'exemple que vous avez montré ci-dessus ne comporte pas ce contrôle. Écrivez également OrderTicket() au lieu de ticket.

Merci pour la réponse ! On m'a déjà conseillé un numéro magique, mais où le mettre lors de la définition d'une commande en attente et comment le lier à un ticket - je ne comprends pas.
 
Andreev:

Merci pour la réponse ! On m'a déjà conseillé d'utiliser le numéro magique, mais je ne comprends pas où le placer lors de la définition d'un ordre en attente et comment le relier à un ticket.


la variable magique doit être définie lors de l'ouverture d'une commande, mais nous devons nous assurer que le nombre de commandes différentes est différent, sinon cela n'a aucun sens, ci-dessous se trouve un lien vers une description complète de la fonction OrderSend où toutes les variables qui peuvent être définies lors de l'ouverture d'une commande, c'est VOUS qui devriez être intéressé par la variable magique, mais pour fonctionner correctement, toutes les variables avant doivent être remplies, toutes les variables après - comme vous l'entendez

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

 
LazarevDenis:


la variable magique doit être définie lors de l'ouverture d'une commande, mais assurez-vous que le nombre de commandes différentes est différent, sinon cela n'a aucun sens, ci-dessous se trouve un lien vers une description complète de la fonction OrderSend où toutes les variables qui peuvent être définies lors de l'ouverture d'une commande, VOUS devriez être intéressé par la variable magique, mais pour fonctionner correctement toutes les variables avant elle doivent être remplies, toutes les variables après - comme vous l'entendez

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


Pourquoi des commandes différentes ont-elles besoin d'une magie différente ?
 

S'il vous plaît, donnez-moi le code correct. J'ai écrit un EA et il génère seulement deux erreurs pendant la compilation - je ne sais pas comment m'en débarrasser.

ces erreurs 1) 'SL' - variable déjà définie C:\Program Files\MetaTrader Finam\experts\$.mq4 (43, 11)

et 2) "TP" - variable déjà définie C:³ Files\MetaTrader Finam\experts\$.mq4 (45, 11)

Le code de l'Expert Advisor ci-dessous :

 
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:

Et pourquoi des mandats différents ont besoin de magik différents ?

Apparemment pour cela - quelques posts plus haut :-)))) - "Le moyen le plus simple de déterminer l'ordre des deux à fermer est le nombre magique. Attribuez-leur des numéros différents lorsque vous les configurez. L'exemple que vous avez montré ci-dessus ne comporte pas ce contrôle. Écrivez également OrderTicket() au lieu de ticket".
 
tol64:

Le moyen le plus simple de déterminer l'ordre des deux à fermer est le nombre magique. Attribuez-leur des numéros différents lorsque vous les configurez. L'exemple que vous avez montré ci-dessus ne comporte pas ce contrôle. De même, écrivez OrderTicket() au lieu de ticket.

Mémorisez l'heure de la mise en place des commandes, puis comparez l'heure dans la boucle et supprimez la plus ancienne.
 
Andreev:


J'utilise l'exemple suivant pour déterminer, mais il ne ferme que le dernier ordre en attente au lieu du premier, bien que toutes les conditions soient remplies pour le premier ordre en attente. Aidez-moi à trouver une erreur !!!!!!!!!!!!!


N'exclut-on pas la variante de la transformation du premier ordre en un ordre de marché, et, en conséquence, l'impossibilité de son retrait par ce cycle sur les ordres à cours limité ?