Может, указанная строка стоит не вначале функции start и до нее происходят какие-то действия, вызывающие открытие позиции? Потому как не должна позиция открываться в 09:59:59. Хотя, может имеет место некая рассинхронизация времени сервера и времени терминала.
А с реквотами не поборешься. Разве что выставлять диапазон цен открытия (закрытия) побольше и корректно обрабатывать ситуацию с отказом операции.
Реквот - это ошибка? Если да, то ее номер?
Да, ошибка, но не разработчика.
ERR_REQUOTE 138 Новые цены
Спасибо.
Дело в том, что записал в коде:
OrderSend(Symbol(),OP_BUY,Lots,Ask,Spread,SL,TP,nameEA,0,0,Blue);
if(GetLastError()==0) OpenBuy=0;
и после этого сигнал на покупку/продажу может образоваться только уже на следующем баре....... так вот, внимание обратил, что у меня после реквотирования по очередному тику несколько раз даже попытки на открытие позиции не было ..... убрал строку - все в порядке.
А с реквотами не поборешься. Разве что выставлять диапазон цен открытия (закрытия) побольше и корректно обрабатывать ситуацию с отказом операции.
Что значит "диапазон", когда "по рынку" открываешься? Слип не поможет, здесь где-то разработчики разъясняли, что больше 1-2 спредов смысла не имеет, все равно при сильных движениях не откроется.
Вопрос такой: насколько правильно отображается время в журнале? Поясню: в моем конкурсном эксперте есть такое условие
if(Hour()!=10||Minute()>3) return(0);
То есть по логике вещей он должен был открыть сделку в 10 часов по времени сервера, однако в логе написано следующее:
Вы видите логи терминала, а не сервера. Судя по всему время на компьютере, где запущен эксперт, отличается от серверного времени на 1 секунду (отстает).
Эксперт же работает по котировкам, где указано серверное время. То есть, все идет нормально.
Что значит "диапазон", когда "по рынку" открываешься? Слип не поможет, здесь где-то разработчики разъясняли, что больше 1-2 спредов смысла не имеет, все равно при сильных движениях не откроется.
Ясно, что есть допустимый предел слипаджа, но других методов нет. После реквота (поза не открылась) не выполняйте действий, которые бы выполняли после ее открытия, и на следующем тике попытайтесь вновь открыть позицию. И так до тех пор, пока не будет открыта позиция или не пропадет сигнал на открытие.
Вот, например, открытие позиции на открытии бара:
if(LastBar != Time[0]) if(Signal == 1) { if(OrderSend(...) > 0) LastBar = Time[0]; } else LastBar = Time[0];
здесь Signal - сигнал на открытие позиции, сгенерированный вашим алгоритмом.Эксперт будет пытаться открыть позицию пока не откроет или пока не закроется бар. С нового бара, если сигнал все еще активен, все начнется заново. Так что реквоты или другие ошибки можно обработать именно так.
Кстати не знаю как с советниками, но у меня в ручном режиме в настройках терминала стоит slippage 10 пипсов, а реквоты всё равно прилетают. Дилер мне так и не смог помочь.
Если ценовой геп больше 2-3 спредов (параметр динамический, а не фиксированный), то будет неминуемый реквот вне зависимости от уровня слиппажа. Это сделано ради защиты трейдеров от своих же ошибок (даже если выставить слиппаж 100 пипсов).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вопрос такой: насколько правильно отображается время в журнале? Поясню: в моем конкурсном эксперте есть такое условие
if(Hour()!=10||Minute()>3) return(0);
То есть по логике вещей он должен был открыть сделку в 10 часов по времени сервера, однако в логе написано следующее:
Ну и реквоты конечно. Я так понимаю, что совершил оплошность, не уделив особого внимания этой ошибке. Хочется узнать, как все-таки правильно с ней бороться. Теперь уже на будущее(((