Ошибки, баги, вопросы - страница 1789
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В чем ошибка?
ORDER_TIME_GTC на символе не поддерживается
Серьезный баг, т.к. касается самой торговли.
Сервер FIBOGroup-MT5 Server, демо, базовая валюта USD, Netting, build 1525.
Сначала скрин "Ордера, Сделки"
Была открыта позиция на 1 лот, и закрыта (не перевернута!) на 1.5 лота.
То, что это одна позиция, подтверждает скрин режим "Позиции"
Выделил красным, что еще ошибка произошла с начислением свопа (позиция жила 1 секунду) и с каким-то огромным убытком.
Так выглядит лог
2017.02.09 08:39:15.352 Trades '1013175': deal #1542796 buy 1.00 EURUSD at 1.06763 done (based on order #2246162)
2017.02.09 08:39:15.354 Trades '1013175': order #2246162 buy 1.00 / 1.00 EURUSD at 1.06763 done in 1069.212 ms
2017.02.09 08:39:15.354 Trades '1013175': failed modify #2156238 buy 1.50 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.06990, tp: 1.07190 [Invalid stops]
2017.02.09 08:39:15.355 Trades '1013175': exchange sell 1.50 EURUSD at market, close #2156238 buy 1.50 EURUSD 1.07090333
2017.02.09 08:39:16.421 Trades '1013175': deal #1542797 sell 1.50 EURUSD at 1.06761 done (based on order #2246163)
2017.02.09 08:39:16.422 Trades '1013175': order #2246163 sell 1.50 / 1.50 EURUSD at 1.06761 done in 1066.734 ms
Красным выледил автоматическую попытку установить SL/TP открытой позиции. PositionGetDouble(POSITION_VOLUME) вернул 1.5 лота, вместо 1.0. Возникла ошибка Invalid stops, хотя SYMBOL_TRADE_STOPS_LEVEL == 0.
Нужно, наверное, добавить, что закрытие позиции происходило с указанием Request.position = PositionTicket. Т.е. этот параметр был не нулевой.
В общем, БАЖИЩЕ, которое напрямую касается денег!
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
ФОРТС. Вопросы по исполнению
fxsaber, 2017.02.09 08:56
Правильно ли понимаю, что в данном случае OrderSend вернул true практически мгновенно, но 65 секунд наблюдалось (ENUM_ORDER_STATE)::OrderGetInteger(ORDER_STATE) == ORDER_STATE_STARTED ?
Кстати, а почему при выставлении отложки через OrderSend он возвращает true сразу, как состояние ордера становится ORDER_STATE_STARTED, а не дожидается ORDER_STATE_PLACED?
Это же не асинхронная OrderSendAsync.
Кстати, а почему при выставлении отложки через OrderSend он возвращает true сразу, как состояние ордера становится ORDER_STATE_STARTED, а не дожидается ORDER_STATE_PLACED?
Это же не асинхронная OrderSendAsync.
Наверное потому, что это результат успешного выполнения OrderSend, а не результата успешности установки ордера?
ORDER_STATE_STARTED - это результат успешного OrderCheck.
А когда ордер уже выставлен, то что-то возвращается?
ORDER_STATE_PLACED.
Идентификатор
Описание
ORDER_STATE_STARTED
Ордер проверен на корректность, но еще не принят брокером
ORDER_STATE_PLACED
Ордер принят
Отправляете торговый запрос (OrderSend) - проверяется его корректность и, если ОК, то возвращается true. Те., это ответ о корректности торгового запроса. Сервер ещё не принял этот запрос.
Далее, когда запрос будет принят сервером, то вернётся ответ об этом: ORDER_STATE_PLACED - ордер установлен.
Не берусь утверждать, но по логике так получается. Камней подводных не знаю.
Ну так описано же:
Идентификатор
Описание
ORDER_STATE_STARTED
Ордер проверен на корректность, но еще не принят брокером
ORDER_STATE_PLACED
Ордер принят
Отправляете торговый запрос (OrderSend) - проверяется его корректность и, если ОК, то возвращается true. Те., это ответ о корректности торгового запроса. Сервер ещё не принял этот запрос.
Далее, когда запрос будет принят сервером, то вернётся ответ об этом: ORDER_STATE_PLACED - ордер установлен.
Не берусь утверждать, но по логике так получается. Камней подводных не знаю.