Вопрос о функции OnTradeTransaction - страница 8

 

Алексей, вы думаете я не проверил всё, прежде чем написать публичный пост.   ID позиции вообще тут не причём.

Ситуация обстоит так, как я её многократно описал. В логах все есть. Посчитайте количество уникальных тикетов сделок на закрытие  DEAL_ENTRY_OUT, и получите ровно семь. А продублированные срабатывания  функции OnTradeTransaction по тем же тикетам сделок не вписываются в правила её работы, описанной в документации.

Вопрос только в том, неправильно срабатывает подсистема терминала, инициируя ошибочные вызовы функции OnTradeTransaction, или есть ещё какое то свойство сделки, по изменению которого происходит вызов. Я склоняюсь к первому.

З.Ы. Вот исполнение этого отложенного ордера 14 лотов, 7 ушло на закрытие, 7 на открытие. Никаких, разумеется, продублированных номеров сделок.

По количеству сделок  DEAL_ENTRY_OUT функция OnTradeTransaction должна была сработать 5 раз, а сработала по логам 14 раз !!!

 
Andrey Kaunov #:

Алексей, вы думаете я не проверил всё, прежде чем написать публичный пост.   ID позиции вообще тут не причём.

Ситуация обстоит так, как я её многократно описал. В логах все есть. Посчитайте количество уникальных тикетов сделок на закрытие  DEAL_ENTRY_OUT, и получите ровно семь. А продублированные срабатывания  функции OnTradeTransaction по тем же тикетам сделок не вписываются в правила её работы, описанной в документации.

Вопрос только в том, неправильно срабатывает подсистема терминала, инициируя ошибочные вызовы функции OnTradeTransaction, или есть ещё какое то свойство сделки, по изменению которого происходит вызов. Я склоняюсь к первому.

З.Ы. Вот исполнение этого отложенного ордера 14 лотов, 7 ушло на закрытие, 7 на открытие. Никаких, разумеется, продублированных номеров сделок.

По количеству сделок  DEAL_ENTRY_OUT функция OnTradeTransaction должна была сработать 5 раз, а сработала по логам 14 раз !!!

Андрей, я не пытаюсь вас учить или ещё чего… Я пытаюсь разбираясь в вашей ситуации чего-то понять, чтобы если когда-то столкнусь понимать, что уже проверено.

А это в тестере повторить можно?
 
В тестере, видимо, не моделируется частичное открытие отложенного ордера, а с полным открытием может и не произойти такого.
Не уверен, в общем, нужно проверять. 
 
Andrey Kaunov #:
В тестере, видимо, не моделируется частичное открытие отложенного ордера, а с полным открытием может и не произойти такого.
Не уверен, в общем, нужно проверять. 

Здравствуйте, Андрей! Есть статья Дениса Кириченко. В ней советник. Случайно не пробовали ещё его запускать и смотреть на результаты?

С уважением, Владимир.

Файлы:
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопрос о функции OnTradeTransaction

Andrey Kaunov, 2023.03.17 19:12

З.Ы. Вот исполнение этого отложенного ордера 14 лотов, 7 ушло на закрытие, 7 на открытие. Никаких, разумеется, продублированных номеров сделок.

По количеству сделок  DEAL_ENTRY_OUT функция OnTradeTransaction должна была сработать 5 раз, а сработала по логам 14 раз !!!

Совпадают числа... Сколько раз упоминается сделка 17157064 в логе терминала?


При таком перевороте, как на скрине, получается новая позиция. Т.е. переворот позиции не гарантирует сохранение POSITION_ID.

 
MrBrooklin #:

Здравствуйте, Андрей! Есть статья Дениса Кириченко. В ней советник. Случайно не пробовали ещё его запускать и смотреть на результаты?

С уважением, Владимир.

Здравствуйте, Владимир.

Спасибо, что обратили моё внимание на эту статью. Очень подробно описаны все типы транзакций. Но она лишь подтверждает моё мнение о том, что  функция OnTradeTransaction должна вызываться подсистемой терминала на добавление сделки в историю (по типу TRADE_TRANSACTION_DEAL_ADD) один раз для каждой сделки. Мои же тесты показывают неоднократный вызов  функции OnTradeTransaction.

Попробую и советник этот погонять, но видимо уже в понедельник. Сейчас рынок ММВБ закрыт.

 
fxsaber #:

Совпадают числа... Сколько раз упоминается сделка 17157064 в логе терминала?


При таком перевороте, как на скрине, получается новая позиция. Т.е. переворот позиции не гарантирует сохранение POSITION_ID.

Нет нет, ты не ищи совпадение количества лотов и количество вызова функции OnTradeTransaction. Это просто совпадение. И переворота здесь никакого нет, ты видишь сделку in/out хоть одну? ID позиции вообще тут не причём. То что ты пишешь, к делу никакого отношения вообще не имеет.

Функция OnTradeTransaction вызывается на добавление сделки 17157064 и 17157065 (событие TRADE_TRANSACTION_DEAL_ADD) по одному разу. А на остальные по нескольку. Вот что главное! Тогда как должна на каждое добавление сделки в историю вызываться один раз. Или я в этом не прав?


P.S. Я логи привел. На добавление сделки 17157066 в историю  функция OnTradeTransaction вызывалась 5 раз, на добавление 17157067 - 4 раза, на добавление 17157068 - 3 раза, на добавление 17157069 - как минимум 2 раза (может ещё там ниже в логах, надо посмотреть). Какие ещё нужны факты?

 
Andrey Kaunov #:

И переворота здесь никакого нет, ты видишь сделку in/out хоть одну?

Предполагался переворот позиции через лимитник, но его не произошло: POSITION_ID поменялся. Произошло это из-за частичного исполнения. В том же Тестере был бы переворот.

Функция OnTradeTransaction вызывается на добавление сделки 17157064 и 17157065 по одному разу. А на остальные по нескольку.

Сколько раз в логе терминала упоминаются сделки, на которые приходили двойные DEAL_ADD?

 
fxsaber #:

Предполагался переворот позиции через лимитник, но его не произошло: POSITION_ID поменялся. Произошло это из-за частичного исполнения. В том же Тестере был бы переворот.

Сколько раз в логе терминала упоминаются сделки, на которые приходили двойные DEAL_ADD?

Дополнил пост выше, посчитал. Хотя и в логах всё отметил разными цветами.

 
Andrey Kaunov #:

Дополнил пост выше, посчитал. Хотя в логах всё отметил разными цветами.

Речь шла про лог терминала, а не советника.