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

 
Andrey Kaunov #:

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

Встречал еще реализации DEAL_REASON_TP без ордера.

 
Andrey Kaunov #:

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

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

Вот это было сказано относительно этой статьи

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

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

Andrey Kaunov, 2023.03.21 16:42

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

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

А теперь вы предлагаете мне её читать?

Андрей, я очень много написал на mql5 и всё это я говорю из собственного опыта. В одном советнике надо было строить сетку с равным шагом, а открытие происходит с проскальзыванием довольно часто и как следствие разность цен 5го ордера и 1го разделить на 4 мы не получим значение равное шагу цены.

Так вот я просто взял и начал считать от цены ордера. Казалось бы ничего сложного, но наткнулся на неадекватное поведение при первом ордере сетки. Я долго пытался разобраться сам, потом писал на форуме и fxsaber мне тогда объяснил этот феномен. Проверив это я убедился в том, что открытие позиции по рынку не имеет ордера в истории…

 
Alexey Viktorov #:

открытие позиции по рынку не имеет ордера в истории…

Наверное, имели в виду не ордер, а его цену.

 
fxsaber #:

Наверное, имели в виду не ордер, а его цену.

Может быть… Несмотря на мой маразм и склероз, я отлично помню, что это вы отвечали на мой вопрос. А вот ордер как таковой или его цена, попало под влияние склероза. В общем с тех пор я не ориентируюсь на цену ордера.

 
Alexey Viktorov #:

Вот это было сказано относительно этой статьи

А теперь вы предлагаете мне её читать?

Андрей, я очень много написал на mql5 и всё это я говорю из собственного опыта. В одном советнике надо было строить сетку с равным шагом, а открытие происходит с проскальзыванием довольно часто и как следствие разность цен 5го ордера и 1го разделить на 4 мы не получим значение равное шагу цены.

Так вот я просто взял и начал считать от цены ордера. Казалось бы ничего сложного, но наткнулся на неадекватное поведение при первом ордере сетки. Я долго пытался разобраться сам, потом писал на форуме и fxsaber мне тогда объяснил этот феномен. Проверив это я убедился в том, что открытие позиции по рынку не имеет ордера в истории…

Я про другую статью это написал. Вы хоть потрудитесь переходить по ссылкам, прежде чем что то голословно утверждать.

Это документация. Как, скажите мне, позиции может быть присвоен ID, если ордера, открывающего её, нет?

POSITION_IDENTIFIER

Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.

 

Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.

 

При развороте позиции в режиме неттинга (единой сделкой in/out) идентификатор позиции POSITION_IDENTIFIER не изменяется. Однако при этом POSITION_TICKET изменяется на тикет ордера, в результате которого произошел разворот. В режиме хеджинга разворот позиции не предусмотрен.

long


Это тоже документация. Если вас мои доводы не убеждают.


Будете дальше спорить? Алексей, может вы немного в тему погрузитесь, прежде чем открывать подобные дискуссии. Не знаю, что вы там написали на MQL5, но ваши знания очень красноречиво говорят о качестве ваших продуктов.

 
Andrey Kaunov #:

Я про другую статью это написал. Вы хоть потрудитесь переходить по ссылкам, прежде чем что то голословно утверждать.

Это документация. Как, скажите мне, позиции может быть присвоен ID, если ордера, открывающего её, нет?

POSITION_IDENTIFIER

Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.

 

Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.

 

При развороте позиции в режиме неттинга (единой сделкой in/out) идентификатор позиции POSITION_IDENTIFIER не изменяется. Однако при этом POSITION_TICKET изменяется на тикет ордера, в результате которого произошел разворот. В режиме хеджинга разворот позиции не предусмотрен.

long


Это тоже документация. Если вас мои доводы не убеждают.


Будете дальше спорить? Алексей, может вы немного в тему погрузитесь, прежде чем открывать подобные дискуссии. Не знаю, что вы там написали на MQL5, но ваши знания очень красноречиво говорят о качестве ваших продуктов.

Андрюша, поосторожней с оценками чужих знаний и качества продуктов.

Пока что только вы не можете разобраться как работает функция и откуда у вас лишние записи в логе. Вы единственный. И соответственно говорить о неправильной работе функции преждевременно, мягко выражаясь…

 
Alexey Viktorov #:

Андрюша, поосторожней с оценками чужих знаний и качества продуктов.

Пока что только вы не можете разобраться как работает функция и откуда у вас лишние записи в логе. Вы единственный. И соответственно говорить о неправильной работе функции преждевременно, мягко выражаясь…

А я и не про функцию в этом посте писал. И Андрюшей сына своего называйте. Для вас я, как минимум, Андрей.

 
Andrey Kaunov #:

А я и не про функцию в этом посте писал...

Андрей, Вы молодец, что так глубоко исследовали вопрос... Пришла идея о том, что стоит сделать парсер или сортировщик транзакций. Его задача видится такой: из всех поступивших транзакций пытается сформировать полноценные цепочки, которые описывают пришедшие транзакции... Ну и лишние или продублированные транзакции можно в таком случае игнорировать...

 
Denis Kirichenko #:

Андрей, Вы молодец, что так глубоко исследовали вопрос... Пришла идея о том, что стоит сделать парсер или сортировщик транзакций. Его задача видится такой: из всех поступивших транзакций пытается сформировать полноценные цепочки, которые описывают пришедшие транзакции... Ну и лишние или продублированные транзакции можно в таком случае игнорировать...

Идея отличная, Денис. А вы в своей статье разве не такую программу написали?

 
Вроде, правильные DEAL_ADD всегда имеют возрастающую Trans.deal. Тогда костыль может быть очень легким.