Я думал такой ошибку у меня не будет никогда. Но, как оказалось, это произошло. На нескольких ДЦ, в том числе, на Альпари у меня всё чёто отрабатывается на протяжении нескольких лет. Сегодня, решил закинуть сову на Робофорекс по некоторым причинам. Оказалось, что там сова отказывается торговать с первого сигнала. Причина, довольно-таки странная и, на данный момент, для меня остаётся загадкой.
Вот что вижу в терминале:
Т.е. сервер сообщает нам, что причина якобы в некорректной цене, но цена корректная. Объясняю. Вот участок кода, где устанавливается торговый ордер:
В момент установки имеем такие вот данные:
Цена открытия отложенного ордера типа BUY_STOP = 173,398
Ask = 173,364
spread = 0,020
Получается от цены установки стопового лонгового ордера до Ask есть запас = 173,398 - 173,364 = 0,034
Проверки на стоплевел и на фризлевел пройдены до этого места. Что ему тогда мешает вообще?
Кстати, все цены у меня нормализованы как по тику, так и по количеству знаков после запятой цены символа. Т.е. цены правильные. Соответственно, я показал из журпнала приходящую цену.
Возможно в момент обработки сервером приказа цена уже изменилась и нарушился стоплевел или фризлевел. Попробуйте увеличить дистанцию и потом переместить ордер куда надо. И в Print выведеите не только номер ошибки но и текущую цену + Стоплевел *_Point.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
fxsaber, 2018.07.24 09:46
2018.07.24 10:24:19.177 Trades '35247942': market buy 0.01 USDHKD 2018.07.24 10:24:19.246 Trades '35247942': failed market buy 0.01 USDHKD [No prices] 2018.07.24 10:24:19.246 Trades '35247942': buy limit 0.01 USDHKD at 7.83618 2018.07.24 10:24:19.315 Trades '35247942': failed buy limit 0.01 USDHKD at 7.83618 [No prices] 2018.07.24 10:24:19.316 Trades '35247942': buy stop 0.01 USDHKD at 7.85618 2018.07.24 10:24:19.384 Trades '35247942': failed buy stop 0.01 USDHKD at 7.85618 [No prices]
Какие записи в логе самого Терминала?
И надо понять, это сервер сообщает или Терминал (OrderCheck). Это можно сделать, если сравнить время отправки ордера и ответа. Если совпадает с точностью до мс - OrderCheck. Ну а если OrderCheck, то проблема становится локальной и разобраться будет проще.
Я думал такой ошибку у меня не будет никогда. Но, как оказалось, это произошло. На нескольких ДЦ, в том числе, на Альпари у меня всё чёто отрабатывается на протяжении нескольких лет. Сегодня, решил закинуть сову на Робофорекс по некоторым причинам. Оказалось, что там сова отказывается торговать с первого сигнала. Причина, довольно-таки странная и, на данный момент, для меня остаётся загадкой.
Вот что вижу в терминале:
Т.е. сервер сообщает нам, что причина якобы в некорректной цене, но цена корректная. Объясняю. Вот участок кода, где устанавливается торговый ордер:
В момент установки имеем такие вот данные:
Цена открытия отложенного ордера типа BUY_STOP = 173,398
Ask = 173,364
spread = 0,020
Получается от цены установки стопового лонгового ордера до Ask есть запас = 173,398 - 173,364 = 0,034
Проверки на стоплевел и на фризлевел пройдены до этого места. Что ему тогда мешает вообще?
Кстати, все цены у меня нормализованы как по тику, так и по количеству знаков после запятой цены символа. Т.е. цены правильные. Соответственно, я показал из журпнала приходящую цену.
А тип исполнения у Робофорекса какой? Вроде, как вспоминаю, на заре общения с МТ5, тоже нарывался на это, хотя уже не помню.
В общем, попробуйте вообще не указывать price в MqlTradeRequest, пусть 0 будет. И, на будущее, делайте проверку типа исполнения и, только если она по потоковым ценам или по запросу, указывайте price.
делайте проверку типа исполнения и, только если она по потоковым ценам или по запросу, указывайте price.
Это лишнее.
В общем-то, я этот вопорс решил в тот же день, когда напоролся на него. Был касяк в классе, который отвечает за реализацию торговых приказов, проверок и тд связанных с этим. Не корректно был ренализован блок проверки на стоплевел. На Альпари stopLevel= 0, поэтому я и не натыкался на него. А на Робе по GBPJPY, вроде бы 8. В итоге поправил этот блок и всё чётко теперь. Была идея проверить одну вещь на безсвоповом счёте. Но с таким стоплевелом это не вариант. Я забил. Переключился на другие мысли.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я думал такой ошибку у меня не будет никогда. Но, как оказалось, это произошло. На нескольких ДЦ, в том числе, на Альпари у меня всё чёто отрабатывается на протяжении нескольких лет. Сегодня, решил закинуть сову на Робофорекс по некоторым причинам. Оказалось, что там сова отказывается торговать с первого сигнала. Причина, довольно-таки странная и, на данный момент, для меня остаётся загадкой.
Вот что вижу в терминале:
Т.е. сервер сообщает нам, что причина якобы в некорректной цене, но цена корректная. Объясняю. Вот участок кода, где устанавливается торговый ордер:
В момент установки имеем такие вот данные:
Цена открытия отложенного ордера типа BUY_STOP = 173,398
Ask = 173,364
spread = 0,020
Получается от цены установки стопового лонгового ордера до Ask есть запас = 173,398 - 173,364 = 0,034
Проверки на стоплевел и на фризлевел пройдены до этого места. Что ему тогда мешает вообще?
Кстати, все цены у меня нормализованы как по тику, так и по количеству знаков после запятой цены символа. Т.е. цены правильные. Соответственно, я показал из журпнала приходящую цену.