Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1627

 
MakarFX #:

No es una crítica, pero hay una explicación para todo...

Usted tiene esa explicación

 
MakarFX #:

No es crítico, pero hay una explicación...

O suposiciones

 
EVGENII SHELIPOV #:

O suposiciones

Necesito el código completo para mirarlo en el probador.
 
MakarFX #:
Necesito el código completo para mirarlo en el probador.

Por favor, vea

Archivos adjuntos:
111.mq4  48 kb
 
EVGENII SHELIPOV #:

BAC tiene esta explicación

Antes de modificar una orden, hay que comprobar si los valores que se van a establecer son los mismos que los que ya están en la orden.
Y si todos los valores son iguales, no es necesario hacer la modificación.

 
Taras Slobodyanik #:

Antes de modificar una orden, debe comprobar si los valores establecidos son los mismos que los que ya están en la orden.
Y si todos los valores son iguales, no es necesario hacer la modificación.


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

¿Es este el cheque del que habla?

 
EVGENII SHELIPOV #:

¿Es este el cheque del que habla?

Hay que comprobar si el valor ya establecido en la orden coincide con el que se va a establecer.

  • tp==OrderTakeProfit()
  • Además, si sl==OrderStopLoss() es necesario
  • también si es necesario price==OrderOpenPrice()

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

Se debe comprobar si el valor ya fijado en la orden coincide con el que se va a fijar.

  • tp==OrderTakeProfit()
  • Además, si sl==OrderStopLoss() es necesario
  • también si es necesario price==OrderOpenPrice()

Taras, ¿podrías explicarme para qué lo necesito si modifico una parrilla de órdenes con órdenes mínimas y máximas disminuidas y respectivamente necesito calcular un nuevo precio medio y modificar el nuevo take profit

 
EVGENII SHELIPOV #:

Taras, ¿puedes explicar por qué necesito esto si modifico una parrilla de órdenes donde se reducen las órdenes mínimas y máximas, respectivamente necesito calcular un nuevo precio medio y modificar el nuevo take profit

er, ¿no preguntó por el error de modificación y su criticidad?
...y su explicación

 
MakarFX #:
No está ahí.
Razón de la queja: