Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1627

 
MakarFX #:

Не критичны, но всему есть объяснение...

У ВАС есть это объяснение

 
MakarFX #:

Не критичны, но всему есть объяснение...

Или предположения

 
EVGENII SHELIPOV #:

Или предположения

Нужен весь код, чтобы в тестере смотреть.
 
MakarFX #:
Нужен весь код, чтобы в тестере смотреть.

Пожалуйста смотрите

Файлы:
111.mq4  48 kb
 
EVGENII SHELIPOV #:

У ВАС есть это объяснение

Перед модификацией ордера нужно проверять совпадают ли устанавливаемые значения с теми что уже есть в ордере. 
И если все значения такие же, то не нужно делать модификацию.

 
Taras Slobodyanik #:

Перед модификацией ордера нужно проверять совпадают ли устанавливаемые значения с теми что уже есть в ордере. 
И если все значения такие же, то не нужно делать модификацию.


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

Вы про эту проверку говорите???

 
EVGENII SHELIPOV #:

Вы про эту проверку говорите???

Проверять нужно уже установленное в ордере значение, совпадает ли оно с тем которое будет устанавливаться.

  • tp==OrderTakeProfit()
  • также если нужно sl==OrderStopLoss()
  • также если нужно price==OrderOpenPrice()

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

Проверять нужно уже установленное в ордере значение, совпадает ли оно с тем которое будет устанавливаться.

  • tp==OrderTakeProfit()
  • также если нужно sl==OrderStopLoss()
  • также если нужно price==OrderOpenPrice()

Тарас Вы мне можете пояснить зачем мне это надо если я модифицирую в сетку ордеров в которой сокращены мин и макс ордер соответственно нужно рассчитать новую среднюю цену модифицировать новый тейк профит  

 
EVGENII SHELIPOV #:

Тарас Вы мне можете пояснить зачем мне это надо если я модифицирую в сетку ордеров в которой сокращены мин и макс ордер соответственно нужно рассчитать новую среднюю цену модифицировать новый тейк профит  

эээ, разве не вы спрашивали про ошибку при модификации и ее критичность?
...и про ее объяснение

 
MakarFX #:
Нету там
Причина обращения: