Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так вроде всё правильно:
вот и я про это, запрос прошел предварительную проверку, но при отправке вместо ожидаемого кода 10008 (TRADE_RETCODE_PLACED) был получен неизвестный код возврата 10001. Если торговый сервер определил, что что-то не так, пусть уточнит с помощью понятного кода возврата, а так причина непонятна...
Кстати, очень похожая ситуация и в MT4, когда, в качестве успешного подтверждения открытия/модификации ордера от торгового сервера можно получить не только код возврата 0, но и 1.
Код
Константа
Описание
0
ERR_NO_ERROR
Нет ошибки
1
ERR_NO_RESULT
Нет ошибки, но результат неизвестен
Возможно, что и в МТ5 окажется, что признаком успешного подтверждения отправки и размещения ордера на бирже окажутся оба кода возврата: 10008 и 10001.
После добавления дополнительной отладочной информации в советник не осталось сомнений в том, что как только торговый сервер в ответ на запрос о размещении ордера генерирует неизвестный код возврата 10001, то это приводит к противоречивым действиям на стороне сервера. Как результат, функция OrderSend() возвращает false, но ордер все равно пробирается на биржу, что приводит к открытию сделки.
Что можно предпринять в данной ситуации, пока сервис-деск не расследовал эту проблему? Пока я решил для себя эту проблему так. Если встречается такая ситуация, т.е. одновременно выполняются следующие 4 условия:
1) retcode=10001, "Неизвестный код результата операции"
2) OrderSend()=false
3) GetLastError()=4756, "Не удалось отправить торговый запрос" (ERR_TRADE_SEND_FAILED)
4) получен ненулевой тикет ордера (ticket>0)
то программа считает, что рыночный ордер был успешно размещен. Пока это помогает, а там посмотрим...
По-прежнему жду ответа от сервис-деска...Сегодня с утра было еще несколько аналогичных ошибок, например:
Из справки - "При успешном принятии ордера торговым сервером функция OrderSend() возвращает значение true."
ГОСПОДА, РАЗРАБОТЧИКИ, ЭТО НЕ ФОРЕКС , где на сервере "торговля" ведется. Тут на бирже торговля ведется.
Нужно бы сделать так, чтобы "синхронный" OrderSend() возвращал true при успешной установке ордера
в ядро биржи!! А то мучения одни с этим сервером - такое ощущение, что специально накидали почвы для косяков.
Иногда обожаю разработчиков, а иногда хочется поубивать.
.Хотя, Возможно (как правило), это я косячу. Будем разбираться.
ORDER_STATE неверно выдает тоже местами!!
Попробуйте обновить терминал с MetaQuotes-Demo, пожалуйста.
Там статус OrderSend для биржевого исполнения поправлен.
Попробуйте обновить терминал с MetaQuotes-Demo, пожалуйста.
Там статус OrderSend для биржевого исполнения поправлен.
Проверил работу на реале OrderGetInteger(ORDER_STATE) и HistoryOrderGetInteger(ticket,ORDER_STATE) - все корректно работает!
Блин, а раньше я от них ушел другим путем потому что они что-то не то на мой взгляд иногда выдавали.
Вчера когда на демо разбирался с OrderGetInteger(ORDER_STATE) на ум пришел
АНЕКДОТ
-Господа разработчики, так в документации ведь написано..........
-На заборе тоже написано.
))