Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1627

 
MakarFX #:

Não é crítico, mas há uma explicação para tudo...

VOCÊ tem essa explicação

 
MakarFX #:

Não é crítico, mas há uma explicação...

Ou suposições

 
EVGENII SHELIPOV #:

Ou suposições

Precisa de todo o código para ser examinado no testador.
 
MakarFX #:
Precisa de todo o código para ser examinado no testador.

Por favor, veja

Arquivos anexados:
111.mq4  48 kb
 
EVGENII SHELIPOV #:

A BAC tem esta explicação

Antes de modificar uma ordem, você deve verificar se os valores que estão sendo definidos são os mesmos que já estão na ordem.
E se todos os valores forem os mesmos, não há necessidade de fazer a modificação.

 
Taras Slobodyanik #:

Antes de modificar uma ordem, deve-se verificar se os valores definidos são os mesmos que já estão na ordem.
E se todos os valores forem os mesmos, não há necessidade de fazer a modificação.


//+----------------------------------------------------------------------------+
//| Модификация групповых ордеров                                              |
//+----------------------------------------------------------------------------+
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("Ошибка модификации ордеров!");
           }
       }
    }
}

É este o cheque de que você está falando?

 
EVGENII SHELIPOV #:

É este o cheque de que você está falando?

É necessário verificar se o valor já definido na ordem corresponde ao valor a ser definido.

  • tp==OrderTakeProfit()
  • Além disso, se sl==OrderStopLoss() for necessário
  • também se necessário price===OrderOpenPrice()

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

O valor já definido na ordem deve ser verificado para ver se coincide com o valor a ser definido.

  • tp==OrderTakeProfit()
  • Além disso, se sl==OrderStopLoss() for necessário
  • também se necessário price===OrderOpenPrice()

Taras, você poderia explicar para que preciso dele se eu modificar uma grade de pedidos com pedidos min e max reduzidos e precisar calcular um novo preço médio e modificar o novo take profit

 
EVGENII SHELIPOV #:

Taras, você pode explicar porque eu preciso disso se eu modificar uma grade de pedidos onde os pedidos min e max são reduzidos, respectivamente, eu preciso calcular um novo preço médio e modificar o novo take profit

er, você não perguntou sobre o erro de modificação e sua criticidade?
...e sua explicação

 
MakarFX #:
Não está lá.
Razão: