Скорее всего потому, что ваш ДЦ может без видимых причин на часок-другой увеличить стопуровни.
StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
Например, если допустимые значения стопуровней =10, то часто перед новостями, а ещё чаще "просто так" (чтоб жизсть малиной не казалась) какой ниб нетрезвый сотрудник ДЦ может увеличить стопуровень до 30 и более.
И если в коде этот форсмажор не предусмотрен, то журнал дает ошибку!
Попробуйте так:
В ОРДЕРСЕНД замените стопы на _sl и _tp
int init() { if(SL<StopLevel) _sl = StopLevel; else _sl=SL; if(TP<StopLevel) _tp = StopLevel; else _tp=TP; .... .... int start() { StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
только у топикстартера не 10 и даже не 30 а где-то 150 и 200.
РоманС, попробуй значения тейка и лося округлить до 4 знаком после занятой.
котировки идут с 5-ю знаками, но ограничение на тейки и лоси может быть до 4.
Но я не уверен
Скорее всего потому, ДЦ может без видимых причин на часок-другой увеличить стопуровни.
Например, если допустимые значения стопуровней =10, то часто перед новостями, а ещё чаще "просто так" (чтоб жизсть малиной не казалась) какой ниб нетрезвый сотрудник ДЦ может увеличить стопуровень до 30 и более.
И если в коде этот форсмажор не предусмотрен, то журнал дает ошибку!
10:53:41 '1263805': instant order buy 1.00 GBPCAD at 1.82150 sl: 1.80644 tp: 1.84325
считаем 1,82150-1,80644=0,01506 т.е. 1506 пунктов это насколько нужно быть нетрезвым, чтоб настолько задрать стопуровень, к тому же на следующий день ситуация повторилась. Тут проблема в другом зарыта, поэтому я интерисуюсь, кто-нибудь с таким сталкивался??? какие еще события могут приводить к ошибке 130???
Ну тогда можно вот так:
int init() { if(SL<StopLevel) _sl = StopLevel; else _sl=SL; if(TP<StopLevel) _tp = StopLevel; else _tp=TP; if(Digits == 5) {//Для котировок с 6-ти значн. нумерацией TP = TP * 10; SL = SL * 10; TrailingStop = Trailing*10; Max_Spread = Max_Spread*10; } }
Скорее всего так и есть, так как для этой пары установлено 5 знаком после запятой, но последний знак всегда 0.
Спасибо за совет, сейчас попробую. Хотя вчера советник мин 5 долбился за 5 мин. мог быть и "0"....
Хотя если учесть что "0" должен быть и у с.л. и у т.п. то да... такое возможно
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Эксперт пробует открыть позицию, а сервер возвращает ошибку130
10:53:41 '1263805': instant order buy 1.00 GBPCAD at 1.82150 sl: 1.80644 tp: 1.84325
10:53:41 '1263805': order buy 1.00 GBPCAD opening at 1.82150 sl: 1.80644 tp: 1.84325 failed [Invalid S/L or T/P]
10:53:41 '1263805': instant order buy 1.00 GBPCAD at 1.82140 sl: 1.80644 tp: 1.84299
10:53:42 '1263805': order buy 1.00 GBPCAD opening at 1.82140 sl: 1.80644 tp: 1.84299 failed [Invalid S/L or T/P]
10:53:42 '1263805': instant order buy 1.00 GBPCAD at 1.82120 sl: 1.80644 tp: 1.84247
10:53:43 '1263805': order buy 1.00 GBPCAD opening at 1.82120 sl: 1.80644 tp: 1.84247 failed [Invalid S/L or T/P]
значения SL и TP вродебы установлены верно.... В ручном режиме с данными значениями SL и TP ордер проходит, а в эксперте нет :(
Код вроде тоже составлен верно:
RefreshRates();
BID = MarketInfo("GBPCAD",9);
ASK = MarketInfo("GBPCAD",10);
SL=iMA("GBPCAD",5,8,0,1,0,24);
TP=BID + (BID-SL)*2;
Ticket=OrderSend("GBPCAD",OP_BUY,Lots,ASK,20,SL,TP);
Заранее благодарен.