Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1627

 
MakarFX #:

Pas critique, mais il y a une explication pour tout...

VOUS avez cette explication

 
MakarFX #:

Pas critique, mais il y a une explication...

Ou des hypothèses

 
EVGENII SHELIPOV #:

Ou des hypothèses

J'ai besoin de l'ensemble du code à regarder dans le testeur.
 
MakarFX #:
J'ai besoin de l'ensemble du code à regarder dans le testeur.

Veuillez consulter

Dossiers :
111.mq4  48 kb
 
EVGENII SHELIPOV #:

Le BAC a cette explication

Avant de modifier une commande, vous devez vérifier si les valeurs définies sont les mêmes que celles qui figurent déjà dans la commande.
Et si toutes les valeurs sont les mêmes, il n'est pas nécessaire d'effectuer la modification.

 
Taras Slobodyanik #:

Avant de modifier un ordre, vous devez vérifier si les valeurs définies sont les mêmes que celles qui figurent déjà dans l'ordre.
Et si toutes les valeurs sont les mêmes, il n'est pas nécessaire d'effectuer la modification.


//+----------------------------------------------------------------------------+
//| Модификация групповых ордеров                                              |
//+----------------------------------------------------------------------------+
void ModifyOrders(int otype)
{
    double avg_price, order_lots = 0;
    price = 0;


    for(int i = OrdersTotal()-1; i>=0; i--)
    {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
         {
            price += OrderOpenPrice() * OrderLots();
            order_lots += OrderLots() ;
         }
       }
    }
    avg_price = NormalizeDouble(price / order_lots, Digits);
     {
     ObjectDelete(0, "AveragePriceLine");
     ObjectCreate(0,"AveragePriceLine" ,OBJ_HLINE, 0, 0, avg_price);
     ObjectSet("AveragePriceLine",OBJPROP_COLOR, Magenta);
     }
    if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits);
    if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits);
    if ((otype == OP_BUY || otype == OP_SELL) && (Drawdown > DrawdownClosingTakeprofitZero)) 
    tp = NormalizeDouble (avg_price, Digits);
    for(int i = OrdersTotal()-1; i>=0; i--) 
    {
       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
           if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
           {
               if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))
                  Print("Ордера успешно модифицированы!");
                else Print("Ошибка модификации ордеров!");
           }
       }
    }
}

C'est le chèque dont vous parlez ?

 
EVGENII SHELIPOV #:

C'est le chèque dont vous parlez ?

Vous devez vérifier si la valeur déjà définie dans l'ordre correspond à celle qui doit être définie.

  • tp==OrderTakeProfit()
  • De même, si sl==OrderStopLoss() est requis
  • également si nécessaire price==OrderOpenPrice()

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype && tp!=OrderTakeProfit() )
 
Taras Slobodyanik #:

La valeur déjà définie dans l'ordre doit être vérifiée pour voir si elle coïncide avec celle qui doit être définie.

  • tp==OrderTakeProfit()
  • De même, si sl==OrderStopLoss() est requis
  • également si nécessaire price==OrderOpenPrice()

Taras, pouvez-vous m'expliquer pourquoi j'en ai besoin si je modifie une grille d'ordres avec des ordres min et max diminués et que je dois respectivement calculer un nouveau prix moyen et modifier le nouveau take profit.

 
EVGENII SHELIPOV #:

Taras, pouvez-vous expliquer pourquoi j'ai besoin de cela si je modifie une grille d'ordres où les ordres min et max sont réduits, respectivement j'ai besoin de calculer un nouveau prix moyen et de modifier le nouveau take profit.

er, n'avez-vous pas demandé l'erreur de modification et sa criticité ?
...et son explication

 
MakarFX #:
Il n'est pas là.
Raison: