В варианте с параболиком не учитывается направление торговли.
И если менять только СЛ, то правильнее будет Ans=OrderModify(OrderTicket(),OrderOpenPrice(),SLnew,OrderTakeProfit());
В варианте с параболиком не учитывается направление торговли.
И если менять только СЛ, то правильнее будет Ans=OrderModify(OrderTicket(),OrderOpenPrice(),SLnew,OrderTakeProfit());
а все равно выдает ошибки...
а все равно выдает ошибки...
Я имела в виду, что тестировала его на ордерах без тейкпрофита, поэтому дополнение про тейкпрофит роли не играет, но все равно спасибо
И в трале по экстремумам направление учтено, но ошибки вылезают все равно, хотелось бы понять почему и как их устранить
Заранее спасибо тем, кто поможет. Я понимаю, что вопрос глупый, но сама ошибку найти не могу
Traling Stop - не лучший объект для начинающего программиста, имхенько.
Ошибки вылезают потому, что Вы торопитесь. Объект уже почти создан, но - почти, а Вы уже на него ссылаетесь. Ну, или цена еще не сильно отличается от цены открытия, а Вы уже говорите: при этой цене - стоп.
if(OrderStopLoss()!=SLnew) не очень правильно, о чём и сказал Алексей. Лучше бы сравнивать разницу с величиной стоплевела:
if(OrderStopLoss()-SLnew > MarketInfo(symbol, MODE_SPREAD)*2*_Point) - если разница стопа нынешнего и стопа вычисленного больше двойного спреда, то можно избежать 130.
Спред взят на случай, если ДЦ выдаст стоплевел=0, что бывает.
В варианте с эсктремальным тралом непонятно откуда берётся значение Indent, так что помочь сложнее.
Что до 4051, может всё же перестанете пытаться менять время истечения отложенного ордера на рыночном ордере (OrderModify(OrderTicket(),OrderOpenPrice(),SLnew,0,0)), просто не трогайте этот параметр.
Я новичок в программировании, недавно начала изучать. Написала 3 трала: 1 простой фиксированное кол-во пунктов, второй по экстремумам, третий по параболику.
Из них работает только простой, в остальных ошибки выдает 130, 4051. Не подскажите, что не так и где я накосячила??? Заранее спасибо
Надо разделить понятия цена SL и расстояние до SL
SLnew =NormalizeDouble(Bid-TStep,Digits); // Новый StopLoss StopCorrect(Symbol(),SLnew); // Здесь цена SL
А здесь
Extrem_Stop = MarketInfo(symbol, MODE_STOPLEVEL)*Point; if(Stop < Extrem_Stop) CorrStop = Extrem_Stop; // Сравнивается цена с расстоянием
Простой трейлинг работает совершенно случайно. Потому, что функция double StopCorrect(string symbol, double Stop) всегда возвращает то значение Stop которое получила на входе.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я новичок в программировании, недавно начала изучать. Написала 3 трала: 1 простой фиксированное кол-во пунктов, второй по экстремумам, третий по параболику.
Из них работает только простой, в остальных ошибки выдает 130, 4051. Не подскажите, что не так и где я накосячила??? Заранее спасибо