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

 
EVGENII SHELIPOV #:

Макар а можете пояснить а с какого места кода будет отсылка к функции 

Если ордеров больше 1

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
   {
//---
   if(CountTrade()>1) TrailingGroupOrder();
   }
 
MakarFX #:

Сорри, я для 4 писал...

Проверил в 5! Все работает.

спасиб. Очень странно что мой вариант не работал. Весь мозг сломал))

 
Andrey Sokolov #:

спасиб. Очень странно что мой вариант не работал.

Не странно...

ты пути не прописал, вот твой код

   string src_path; 
   string dst_path; 
   StringConcatenate(src_path,"","//",name_file); 
   StringConcatenate(dst_path,name_folder,"//",name_file); 
   ResetLastError();
   if(FileMove(src_path,0,dst_path,0)){

и чему равны "src_path" и "dst_path"?

 
MakarFX #:

Если ордеров больше 1

Нет Макар это не работает

 
MakarFX #:

Не странно...

ты пути не прописал, вот твой код

и чему равны "src_path" и "dst_path"?

в них записываются в следующих двух строчках, брал из справки https://www.mql5.com/ru/docs/files/filemove

И дело не в этом, этот код в мт4 работал, и в мт5 первый скрин перемещал.

 
EVGENII SHELIPOV #:

Нет Макар это не работает

Не может быть... Давай весь код в личку
 
MakarFX #:
Не может быть... Давай весь код в личку

Я Вам отправил

 
EVGENII SHELIPOV #:

Я Вам отправил

Ответил
 
MakarFX #:
Ответил

Макар спасибо буду думать дальше

 
MakarFX #:
Ответил

Макар доброго времени суток !!!

По Вашей рекомендации я нашел место в функции void OnTick() куда можно прикрутить функцию TrailingGroupOrder() для отсылки команды на модификацию трала групповых ордеров и о чудо трал групповых ордеров заработал. Но радость была не долгой . Присмотревшись я увидел что тралится только ордер с мин тикетом. 

//+----------------------------------------------------------------------------+
//| Трейлинг стоп групповых ордеров                                            |
//+----------------------------------------------------------------------------+
void TrailingGroupOrder()
{
    for(int i = OrdersTotal()-1; i>=0; i--)
    {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
       if(OrderType() == OP_BUY && Bid - GetAveragePrice() > TrailingStopGroupOrder*Point)
        {
        if(Bid - GetAveragePrice() > TrailingStopGroupOrder*Point || OrderStopLoss() == 0)
         {
         if(OrderStopLoss() < Bid - (TrailingStep + TrailingStopGroupOrder )*Point || OrderStopLoss() == 0)
          {
          if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - TrailingStopGroupOrder*Point, Digits), tp, 0))
                    Print("Ошибка модификации групповых ордеров на покупку!");
          }
         }
        }
        if(OrderType() == OP_SELL && GetAveragePrice() - Ask > TrailingStopGroupOrder*Point)
         {
         if(GetAveragePrice() - Ask > TrailingStopGroupOrder*Point || OrderStopLoss() == 0)
           {
            if(OrderStopLoss() > Ask + (TrailingStep + TrailingStopGroupOrder)*Point || OrderStopLoss() == 0)
              {
              if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + TrailingStopGroupOrder*Point, Digits), tp, 0))
                    Print("Ошибка модификации групповых ордеров на продажу!");
              }
           }
         }
      } 
    }
}

Могу с большой долей вероятности предположить что проблема в в модификации только первого (минимального) ордера а не всех сразу.

Макар подскажите как сделать так чтобы модифицировались  сразу все ордера в сетке????

 

Причина обращения: