Здесь не работают условия:
if (NormalizeDouble(Bid - OrderOpenPrice(),Digits) <= iTrailStart * MarketInfo(Symbol(),MODE_POINT) );//true ... if(OrderStopLoss() < OrderOpenPrice() || OrderStopLoss() == 0 && NormalizeDouble(Bid - OrderStopLoss(),Digits) <= iTrailDist * MarketInfo(Symbol(),MODE_POINT));//true ... if(iTrailStep > 0.0 && OrderStopLoss() != 0.0 && NormalizeDouble((Bid - OrderStopLoss()) - iTrailDist * MarketInfo(Symbol(),MODE_POINT),Digits) < iTrailStep * MarketInfo(Symbol(),MODE_POINT));//true ... if(NormalizeDouble(Bid - sl_lev,Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL));//false
так как после них зачем-то поставлены указанные символы
Вот такой код работает:
void TrailSL() { if (iTrailStart <= 0.0 || iTrailStep <= 0.0) return; double sl_lev; for (int i = OrdersTotal() - 1; i >= 0; i--) { if(!OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue; if(OrderType() == OP_BUY) { if (NormalizeDouble(Bid - OrderOpenPrice(),Digits) < iTrailStart * MarketInfo(Symbol(),MODE_POINT) ) continue; if (OrderStopLoss() >= OrderOpenPrice() || NormalizeDouble(Bid - OrderStopLoss(), Digits()) < iTrailDist * MarketInfo(Symbol(),MODE_POINT)) continue; if (OrderStopLoss() == 0.0 || NormalizeDouble((Bid - OrderStopLoss()) - iTrailDist * MarketInfo(Symbol(),MODE_POINT),Digits) < iTrailStep * MarketInfo(Symbol(),MODE_POINT)) continue; sl_lev = Bid - iTrailDist * MarketInfo(Symbol(),MODE_POINT); if (NormalizeDouble(Bid - sl_lev,Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL)) continue; if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed)) Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } }
Убрал из кода лишнее (с Take Profit непонятная возня была) и немного причесал для читабельности.
Ihor Herasko #:
Вот такой код работает:
Убрал из кода лишнее (с Take Profit непонятная возня была) и немного причесал для читабельности.
Спасибо, ТП нужен был для переноса если сработал ТСЛ.
Ihor Herasko #:
Вот такой код работает:
Убрал из кода лишнее (с Take Profit непонятная возня была) и немного причесал для читабельности.
Подскажите код у вас работал?Включали?
Ну как еще сказать? ))

Нет понимания, одни сложности.MT4 TSL
- 2021.12.15
- www.mql5.com
Алгоритм планировался; Если ордер в + на кол-во пункта тогда должне сработать по логике, старт-дистанция от рынка до тсл далее шаг движения...

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Алгоритм планировался;
Если ордер в + на кол-во пункта тогда должне сработать по логике, старт-дистанция от рынка до тсл далее шаг движения.
iTrailStart = 10; //Кол-во пунктов для включения тралa;
iTrailDist = 10; //Расстояние от стопа до рынка;
iTrailStep = 10; //Шаг трейлинг стопа";
iTrailTakeProfit = 10; //TakeProfit после включения трейлинга";
Если ордер в плюсе на 11п, тогда 11-10=1п без убытка.
Получилось вот так
Подскажите, что делаю не правильно?