Трейлинг откатывает установленный стоп-лосс

 

Подскажите, пожалуйста, какое значение стоп-лосса возвращает функция PositionGetDouble(POSITION_SL) - на момент открытия позиции или на момент запроса функции?

У меня какая проблема: открываеться позиция, устанавливаеться стоп-лосс. Дальше трайлинг постепенно подтягивает слоп-лосс за ценою (для проверки условия трейлинга запрашиваеться стоп-лосс открытой позиции функцией PositionGetDouble(POSITION_SL), если стоп-лосс будет изменен, то дальнейшая проверка должна запрашивать новый стоп-лосс) но как только цена развертаеться, трейлинг откатывает установленный стоп-лосс назад из того, что функция PositionGetDouble(POSITION_SL) выдает не предедущий стоп-лосс, а самый первый установленный стоп-лосс. В результате стоп-лосс постоянно скачет то вверх, то вниз. Как исправить ошибку?

Документация по MQL5: Торговые функции / PositionGetDouble
Документация по MQL5: Торговые функции / PositionGetDouble
  • www.mql5.com
Торговые функции / PositionGetDouble - Документация по MQL5
 
papaklass:

 Поставить условие модификации стопа такое, при котором происходит ТОЛЬКО улучшение стопа:

   - для buy позиций стоп должен  быть > существующего;

   - для sell позиций стоп должен быть < существующего. 

{Buy_opened=true;
double OpenPrice=PositionGetDouble(POSITION_PRICE_OPEN);     // Цена открытия
double OpenSL=PositionGetDouble(POSITION_SL);                       // Стоп-лосс октрытия позиции (текущий)
double NewSL=NormalizeDouble(Bid-SL*_Point,_Digits);              // Новый стоп-лосс
  if(Bid-OpenPrice>_Point*Trail                                                  // Если разница между текущай ценой и ценой открытия больше размера трала и... 

   && OpenSL<NewSL)                                                                       // ...установленный стоп-лосс (текущий) меньше нового стопа 
{mrequest.action = TRADE_ACTION_SLTP;
  mrequest.sl=NewSL;                                                                     // Изменяем стоп на новый
Alert("StopLoss изменен, тикет ордера #:",mresult.order,",новый SL=",mrequest.sl,"!!");

return;}
}

 Вот такой код  трала. Но после второй проверки условия, когда запрашиваеться POSITION_SL, вместо существуещего стопа, в проверку возвращает первый стоп. 

 
Возможно такое, что PositionGetDouble(POSITION_SL) не возвращеет текущий стоп?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 
sergey250581:
Возможно такое, что PositionGetDouble(POSITION_SL) не возвращеет текущий стоп?

Посмотрите пример в этой статье >> Рецепты MQL5 - Как не получить ошибку при установке/изменении торговых уровней?

Перед тем, как запрашивать свойство позиции, её нужно выбрать.