Поставить условие модификации стопа такое, при котором происходит ТОЛЬКО улучшение стопа:
- для 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, вместо существуещего стопа, в проверку возвращает первый стоп.
- www.mql5.com
Посмотрите пример в этой статье >> Рецепты MQL5 - Как не получить ошибку при установке/изменении торговых уровней?
Перед тем, как запрашивать свойство позиции, её нужно выбрать.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите, пожалуйста, какое значение стоп-лосса возвращает функция PositionGetDouble(POSITION_SL) - на момент открытия позиции или на момент запроса функции?
У меня какая проблема: открываеться позиция, устанавливаеться стоп-лосс. Дальше трайлинг постепенно подтягивает слоп-лосс за ценою (для проверки условия трейлинга запрашиваеться стоп-лосс открытой позиции функцией PositionGetDouble(POSITION_SL), если стоп-лосс будет изменен, то дальнейшая проверка должна запрашивать новый стоп-лосс) но как только цена развертаеться, трейлинг откатывает установленный стоп-лосс назад из того, что функция PositionGetDouble(POSITION_SL) выдает не предедущий стоп-лосс, а самый первый установленный стоп-лосс. В результате стоп-лосс постоянно скачет то вверх, то вниз. Как исправить ошибку?