Здравствуйте!
В мультивалютном советнике реализована система закрытия по TakeProfit и TrailingStop. ТP работает, а вот ТS нет :(
Почему вы смотрите Bid и Ask некоей валютной пары
lSymbol
, а в цикле исследуете ордера текущего символа:
if(... && // проверяем открытую позицию OrderSymbol()==Symbol()) // проверяет валюту
?
Почему вы смотрите Bid и Ask некоей валютной пары
, а в цикле исследуете ордера текущего символа:
?
extern double TrailingStop = 30; ---------------------------------+ start() { total=SymbolOrdersTotal(lSymbol) bid = MarketInfo(lSymbol,MODE_BID); ask = MarketInfo(lSymbol,MODE_ASK); point = MarketInfo(lSymbol,MODE_POINT); -------------------------------------------------------+ for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // проверяем открытую позицию OrderSymbol()==lSymbol()) // проверяет валюту { if(OrderType()==OP_BUY) // позиция на покупку открыта { // проверка на Trailing Stop if(TrailingStop>0) { if(bid-OrderOpenPrice()>point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),bid-point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } else // теперь сделки на продажу { // проверка на Trailing Stop if(TrailingStop>0) { if((OrderOpenPrice()-ask)>(point*TrailingStop)) { OrderModify(OrderTicket(),OrderOpenPrice(),ask+point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } return(0); }А теперь правильно?
А теперь правильно?
как минимум надо убрать скобки у lSymbol
а во-вторых добавить еще одно условие проверки - чтобы не двигать SL туда-сюда, а только в одну сторону
как минимум надо убрать скобки у lSymbol
а во-вторых добавить еще одно условие проверки - чтобы не двигать SL туда-сюда, а только в одну сторону
1- уже изменил :)
2- затрудняюсь написать условие, как определить в зависимости от типа сделки - двигать SL вверх или вниз?
if( OrderType==OP_BUY) {
1- уже изменил :)
2- затрудняюсь написать условие, как определить в зависимости от типа сделки - двигать SL вверх или вниз?
проверяйте OrderStopLoss() и сравнивайте с тем, что хотите ему присвоить.
Например для BUY-ордера ваша формула
bid-point*TrailingStop
соответственно это должно быть больше, чем текущий установленный OrderStopLoss()
Для SELL наоборот
проверяйте OrderStopLoss() и сравнивайте с тем, что хотите ему присвоить.
Например для BUY-ордера ваша формула
соответственно это должно быть больше, чем текущий установленный OrderStopLoss()
Для SELL наоборот
Огромное Вам спасибо, что удилили время и открыли мне глаза на немаловажные детали!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Пожалуйста, помогите найти причину!В мультивалютном советнике реализована система закрытия по TakeProfit и TrailingStop. ТP работает, а вот ТS нет :(