Ce qui empêche le conseiller de gagner de l'argent. - page 6

 
valenok2003: Roma, ne mens pas, la première fois que tu as écrit
while(OrderSelect(ticket,SELECT_BY_TICKET)==false)

Faux. Le cycle entier est comme ça :

while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                Sleep(100);        

C'est vrai, le commentaire est faux. Mais le cycle est exactement le suivant : jusqu'à ce qu'un ordre soit sélectionné - attendre 100 millisecondes.

Vrai, s'il n'y a pas de commande avec un ticket déjà (fermé), Roma entrera dans une boucle infinie. Le plus souvent, ce contrôle est effectué plus tôt.

 
Roman.:

Cette construction était à l'origine dans le post de quelqu'un avec la question : Comment puis-je savoir le prix d'un ordre? la réponse que j'ai utilisé dans cette boucle - voir ci-dessus.

Voici la réponse à cette question:

Vous l'avez, Roman. Parfois, le ticket revient et la commande a disparu. Et vous vous accrocherez comme un ange.

En plus, ça doit être là.

// Si la commande n' est PAS sélectionnée

PS Vous et moi avons discuté de ce sujet récemment.

 

Oh, allez.....

Comment ça, qu'est-ce qui va se passer ? Je ne comprends pas du tout cette question. ....

Lisez la doc - constantes standard/erreurs - tout y est...

Si vous ne le trouvez pas - erreur 4108

 
valenok2003:



Roma, ne mens pas, la première fois que tu as écrit

ce modèle

while(OrderSelect(ticket,SELECT_BY_TICKET)==false)

fait partie du cycle de travail en ligne, je l'utilise pour obtenir les caractéristiques de l'ordre sélectionné

// ------------------------------------------------Ищем наш ордер---------------------------------
   int orderType;
   for (int orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (!OrderSelect(orderIndex, SELECT_BY_POS))     continue;
      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber)) continue;
      orderType = OrderType();
      if ((orderType != OP_BUY) && (orderType != OP_SELL)) continue;
          ticket = OrderTicket( );                         // Номер ордера
          orderLots = OrderLots();                         // Lots   
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenPrice();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера          
          if (ticket>0)                                    // Если позиция открылась
              {
                while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                Sleep(100);                                 
                double OpenPrice=OrderOpenPrice();
       // Print("OrderTicket()=",OrderTicket(),  "OrderOpenTime()=",OrderOpenTime()); 
       // Print("TimeLocal()=",TimeLocal());                                                                    
                     //---------------------Запоминаем значения сл и тп ордера                     
                if (orderType == OP_BUY) 
                   {                
                     
                   }
            
                if (orderType == OP_SELL) 
                   {        
                     
                   }   
                            
               }
             
     // Проверка на предельную просадку      
      double loss = - ((orderProfit * 100.0) / AccountBalance());
      if (loss > MaxLoss)
      {
         Print ("MaxLoss");
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return (0);
      }  
        
      return (0);
   }
   
 
 

J'ai déjà écrit combien de fois, après avoir sélectionné un ordre, il faut vérifier l'heure de fermeture, si !=0 alors l'ordre est déjà fermé.

"Et ces gens m'apprennent à me curer le nez..."

 

Et quand ça se bloque dans votre cycle... Maman chérie.

Вот эта строка вашше не очем : if (!OrderSelect(orderIndex, SELECT_BY_POS)) continue;

 
FAQ: "Et ces gens m'apprennent à me curer le nez..."

Cela me vient à l'esprit :

Le fils est accidentellement témoin de l'acte sexuel de ses parents et pense : "Et ces gens m'interdisent encore de me curer le nez...".

 
Mathemat:

Faux. Le cycle entier est comme ça :

C'est vrai, le commentaire est faux. Mais le cycle est exactement le suivant : jusqu'à ce qu'un ordre soit sélectionné, attendre 100 millisecondes.
Oui j'ai oublié d'ajouter une ligne dans ce post, mais il y en a une dans d'autres posts, où la réponse complète à cette question est...
 

Quand vas-tu apprendre à ne pas écrire des "si" composés, tu es trop paresseux pour ajouter une ligne, et quand tu commences à l'analyser, tu peux te frapper la tête contre le mur.

Et en plus, ça prend plus de temps que deux

 
FAQ:

J'ai déjà écrit combien de fois, après avoir sélectionné un ordre, il faut vérifier l'heure de fermeture, si !=0 alors l'ordre est déjà fermé.

"Et ces gens m'apprennent à me curer le nez..."

Oui, au fait, je me souviens maintenant...

Si vous en avez par ici, vous pouvez copier ça... avec un contrôle de temps, quelque chose comme - si ce n'est pas égal à/égal à zéro... parce que seuls les ordres fermés ont une heure de clôture...