Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот записи журнала о закрытии позиции по сработавшему тейк-профиту. Как это можно обнаружить в OnTradeTransaction( const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result)?
Не установлен ни код возврата const MqlTradeResult& result (result.retcode) (0 - нет опции, TRADE_RETCODE_DONE = 10009), ни один из идентификаторов (Deal ticket, Order ticket, Request ID ), чтобы найти их, не перебирая каждый раз все сделки.
Это Print в строке #376, который выводит соответствующие(?) флаги:
А это то, что я могу прочитать в журнале:
10:04:40 take profit triggered #2 sell 0.01 EURUSD 1.00319 sl: 1.00816 tp: 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 deal #3 buy 0.01 EURUSD at 1.00171 done (based on order #3)
10:04:40 deal performed [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 order performed buy 0.01 at 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 373 New trade operation dTime1970.01.01 09:03:41
10:04:40 376 0 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_DEAL_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_STARTED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 489 MqlTradeTransaction: TRADE_TRANSACTION_DEAL_ADD deal #3 DEAL_TYPE_BUY EURUSD 0.01 lot
10:04:40 376 1 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 383 1 prc:trans.price=1.00171 tckt: 2 res.Ord:0 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdFill: ORDER_STATE_FILLED Tr.OrdType: ORDER_TYPE_BUY Tr.tckt:3 2 0 Res::0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
10:04:40 376 2 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_HISTORY_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
2022.09.26 14:08:33.755 disconnected
Терминал так красиво пишет "Take profit triggered #2 sell 0.01 EURUSD 1.00319 sl: 1.00816 tp: 1.00171 [#3 buy 0.01 EURUSD at 1.00171]".
Так почему же, черт возьми, нет флагов типа TRADE_TRANSACTION_TRIGGERED_PT и TRADE_TRANSACTION_TRIGGERED_SL?
И всегда ли код возврата запроса не установлен?
Денис, спасибо за статью! С интересом прочитал, но ещё пока до конца не осознал прочитанное. Так же скачал Ваш советник TradeProcessor и запустил на своем терминале, где у меня сейчас имеется открытая позиция. Посмотрел распечатки и сразу же появились вопросы, на которые хочу самостоятельно найти ответы. Ну, уж если не сдюжу, то тогда, не обессудьте - придётся Вас побеспокоить. ))
С уважением, Владимир.
Денис, спасибо за статью! С интересом прочитал, но ещё пока до конца не осознал прочитанное. Так же скачал Ваш советник TradeProcessor и запустил на своем терминале, где у меня сейчас имеется открытая позиция. Посмотрел распечатки и сразу же появились вопросы, на которые хочу самостоятельно найти ответы. Ну, уж если не сдюжу, то тогда, не обессудьте - придётся Вас побеспокоить. ))
С уважением, Владимир.
Спасибо за мнение. You are welcome, MrBrooklin! ))
Спасибо за мнение. You are welcome, MrBrooklin! ))
Денис, извините, но без Вашей помощи моё сознание "взрывается". Вот результат одного из проходов Вашего советника (кстати, очень классный советник!!!):
В чём моё непонимание:
ENUM_DEAL_TYPE
Идентификатор
Описание
DEAL_TYPE_BUY
Покупка
Вопрос - как при модификации отложенного ордера SELL_STOP тип сделки определяется на ПОКУПКУ??? ))
С уважением, Владимир.
А сделки никакой нет. Выставление отложенного ордера и его обработка не влечёт за собой никакой сделки. Тикет сделки = 0, тип = 0, где 0 - это для перечисления ENUM_DEAL_TYPE эквивалентно DEAL_TYPE_BUY. Т.е. в структуре MqlTradeTransaction trans некоторые поля заполняются, а некоторые нет. Незаполненные поля обычно обнулены.
Подробнее: в Документации про отложенные ордера.
Поле deal будет заполнено для транзакции такого типа:
TRADE_TRANSACTION_DEAL_*
Для торговых транзакций, касающихся обработки сделок (TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE и TRADE_TRANSACTION_DEAL_DELETE), в структуре MqlTradeTransaction заполняются следующие поля:
К "сделочным" типам транзакций относятся всего 3 типа: TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE, TRADE_TRANSACTION_DEAL_DELETE.
А сделки никакой нет. Выставление отложенного ордера не влечёт за собой никакой сделки. Тикет сделки = 0, тип = 0, где 0 - это для перечисления ENUM_DEAL_TYPE эквивалентно DEAL_TYPE_BUY. Т.е. в структуре MqlTradeTransaction trans некоторые поля заполняются, а некоторые нет. Незаполненные поля обычно обнулены.
Подробнее: в Документации про отложенные ордера.
А-а-а, вот оно что!!! Блин, всю голову сломал! ))
Спасибо!!!
С уважением, Владимир.