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

 
Andrey Kaunov #:

Да, Владимир, Но статьи пишут люди. А людям свойственно ошибаться, заблуждаться или просто иметь собственное мнение. Главную мысль этого абзаца, на мой взгляд, я выделил.

Я отталкиваюсь лишь от правил работы функции, заявленной в документации и на собственных тестах. Если функция несколько раз срабатывает на событие добавления одной уникальной сделки в историю, то какой от неё в таком случае смысл. Проще использовать тогда OnTrade(), и написать все нужные проверки самому как в MQL4.

Честно говоря, сам сижу, читаю эти статьи и чувствую себя так же, как когда начинал изучать язык программирования MQL5. Полная беспомощность перед этой функцией. Для меня понятие события - это то, что уже произошло. А когда пытаюсь вникнуть в суть статей, то получается, что событие это ещё не то, что уже произошло, а то, что может находиться в процессе того, что должно будет произойти.

Поправьте меня, если это не так, а то мозг уже взрывается!

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

 
MrBrooklin #:

Честно говоря, сам сижу, читаю эти статьи и чувствую себя так же, как когда начинал изучать язык программирования MQL5. Полная беспомощность перед этой функцией. Для меня понятие события - это то, что уже произошло. А когда пытаюсь вникнуть в суть статей, то получается, что событие это ещё не то, что уже произошло, а то, что может находиться в процессе того, что должно будет произойти.

Поправьте меня, если это не так, а то мозг уже взрывается!

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

В процессе не того, что должно произойти, а именно уже произошло и что можно в сей момент обработать.

Что такое сделка? Ничто иное, как переход ордера в позицию. Вот в данном случае если был отложенный ордер, цена сравнялась с ценой ордера, в этот момент происходит сделка. Фиксация исполнения приказа. Ведь ордер это ни что иное как приказ на покупку\продажу актива по заявленной цене. Так? Все условия сложились, приказ выполнен, вот вам и сделка… Сделка свершилась, получили позицию.

Ведь у вас не возникает непонимания событие OnTick(). Пришёл новый тик, выполняется функция обработки события. А почему возникает проблема с событием  OnTradeTransaction не понимаю…

 
Alexey Viktorov #:

В процессе не того, что должно произойти, а именно уже произошло и что можно в сей момент обработать.

Что такое сделка? Ничто иное, как переход ордера в позицию. Вот в данном случае если был отложенный ордер, цена сравнялась с ценой ордера, в этот момент происходит сделка. Фиксация исполнения приказа. Ведь ордер это ни что иное как приказ на покупку\продажу актива по заявленной цене. Так? Все условия сложились, приказ выполнен, вот вам и сделка… Сделка свершилась, получили позицию.

Ведь у вас не возникает непонимания событие OnTick(). Пришёл новый тик, выполняется функция обработки события. А почему возникает проблема с событием  OnTradeTransaction не понимаю…

Спасибо, Алексей! Твоему терпению моей тугодумости можно только позавидовать. Наверное нужно сделать так, как делал раньше - ещё несколько раз перечитать эти статьи, затем взять паузу, а потом попробовать самостоятельно применить эту функцию в каком-нибудь новом своём советнике.

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

 

Немного дополню Алексея.

Сделка в общем случае, это транзакция, связанная так или иначе с изменением Баланса. Сделка на вход, например, это списание комиссии на вход. Выход из позиции это фиксация профита. Есть сделки на пополнение/списание баланса

Сделки на закрытие/открытие по начислению/списанию вариационной маржи, и сделки корректировки Баланса


Последние происходят НЕ на основании ордера. И позиция на их основании открывается не всегда.

P.S. В контексте темы этой ветки, конечно, сделка определённого типа отражает изменение позиции в момент её добавления в историю.

 
Andrey Kaunov #:

Немного дополню Алексея.

Сделка в общем случае, это транзакция, связанная так или иначе с изменением Баланса. Сделка на вход, например, это списание комиссии на вход. Выход из позиции это фиксация профита. Есть сделки на пополнение/списание баланса

Сделки на закрытие/открытие по начислению/списанию вариационной маржи, и сделки корректировки Баланса


Все они происходят НЕ на основании ордера. И позиция на их основании открывается не всегда.

Совершенно верно. Если позиция открывается по рынку, то ордер отсутствует. А сделки с изменением баланса фильтруются по типу сделки deal_type. Но с этим Владимиру легко будет разобраться когда он разберётся с событием.

А в этом случае, я говорил о позициях потому, что вопрос был связан со сделками DEAL_TYPE_BUY или DEAL_TYPE_SELL и никакими другими.

 
Alexey Viktorov #:

Совершенно верно. Если позиция открывается по рынку, то ордер отсутствует. А сделки с изменением баланса фильтруются по типу сделки deal_type. Но с этим Владимиру легко будет разобраться когда он разберётся с событием.

А в этом случае, я говорил о позициях потому, что вопрос был связан со сделками DEAL_TYPE_BUY или DEAL_TYPE_SELL и никакими другими.

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

Настоятельно рекомендую вам почитать эту статью, ссылку на которую предоставил Владимир.

Рецепты MQL5 - обработка события TradeTransaction
Рецепты MQL5 - обработка события TradeTransaction
  • www.mql5.com
В статье описываются возможности языка MQL5 с точки зрения событийно-ориентированного программирования. Преимущество данного подхода состоит в том, что программа может получать информацию о поэтапном выполнении торговой операции. Приводится пример того, как с помощью обработчика события TradeTransaction можно получать и обрабатывать информацию о совершаемых торговых действиях. Думаю, что такой подход можно смело применять для целей копирования торговых сделок с терминала на терминал.
 

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

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

Andrey Kaunov, 2023.03.21 18:51

Сделки на закрытие/открытие по начислению/списанию вариационной маржи, и сделки корректировки Баланса


Последние происходят НЕ на основании ордера. И позиция на их основании открывается не всегда.

Прошу пояснить по сделкам в красном прямоугольнике. Это некоторая коррекция баланса счета, но могущая быть логически привязана к каким-то конкретным торговым операциям?
 
fxsaber #:
Прошу пояснить по сделкам в красном прямоугольнике. Это некоторая коррекция баланса счета, но могущая быть логически привязана к каким-то конкретным торговым операциям?

Так такая причина проведения сделки есть. Причём, сделки по последним 4 свойствам происходят НЕ на основании ордера, как показывает практика.


 
fxsaber #:
Прошу пояснить по сделкам в красном прямоугольнике. Это некоторая коррекция баланса счета, но могущая быть логически привязана к каким-то конкретным торговым операциям?

Это клиринг, когда происходит зачисление/списание накопленной вариационной маржи. Далее начисление профита происходит "с нуля".

Происходит как бы закрытие и открытие той же позиции.

Это биржа, фьючерсы.

 
JRandomTrader #:

Происходит как бы закрытие и открытие той же позиции.

Переоткрытие, спасибо.