Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В противном случае, какова цель этой функции, которая автоматически вызывается для торговых событий (но не для всех)?
Почему вы думаете не для всех?
Эта функция вызывается даже тогда, когда позиция закрывается по SL или TP.
Я надеюсь вы писали на mql4. Вот как можно было отследить закрытие ордера по SL? На каждом тике выбирать его по тикету и проверять его OrderCloseTime()… В m1l5 нет такой необходимости. Если позиция закрылась, отрабатывает функция OnTradeTransaction() и в ней можно получить все свойства и принять решение в зависимости как позиция закрылась.
Я не проверял, но думаю, что пополнение счёта тоже вызовет OnTradeTransaction()
Написано (https://www.mql5.com/ru/docs/runtime/event_fire#tradetransaction), что он вызывается, когда:
обработка торгового запроса;
изменение открытых ордеров;
изменение истории ордеров;
изменение истории сделок;
изменение позиций.
Но когда я меняю SL и TP на открытой позиции (ручная покупка), функция НЕ вызывается. Поэтому нельзя с уверенностью сказать, что OnTradeTransaction() вызывается всегда, нельзя также предположить четкий порядок вызовов, и, кроме того, нельзя с уверенностью сказать, что свойство не установлено (=0) или установлено также =0.
Что я могу сделать с такой функцией?
Для безопасного управления деньгами я должен избегать этой функции.
Ну :(
Написано (https://www.mql5.com/ru/docs/runtime/event_fire#tradetransaction), что он вызывается, когда:
обработка торгового запроса;
изменение открытых ордеров;
изменение истории ордеров;
изменение истории сделок;
изменение позиций.
Но когда я меняю SL и TP на открытой позиции (ручная покупка), функция НЕ вызывается. Поэтому нельзя с уверенностью сказать, что OnTradeTransaction() вызывается всегда, нельзя также предположить четкий порядок вызовов, и, кроме того, нельзя с уверенностью сказать, что свойство не установлено (=0) или установлено также =0.
Что я могу сделать с такой функцией?
Для безопасного управления деньгами я должен избегать этой функции.
Внимательней читайте документацию.
TRADE_TRANSACTION_POSITION
Изменение позиции, не связанное с исполнением сделки. Данный тип транзакции свидетельствует именно о том, что позиция была изменена на стороне торгового сервера. У позиции может быть изменен объем, цена открытия, а также уровни Stop Loss и Take Profit. Информация об изменениях передается в структуре MqlTradeTransaction через обработчик OnTradeTransaction. Изменение позиции (добавление, изменение или ликвидация) в результате совершения сделки не влечет за собой появление транзакции TRADE_TRANSACTION_POSITION.
Ещё и последовательность транзакций не гарантирована ))
Последовательность транзакций и их наличие.