Чем в mql4 заменить OnTradeTransaction()?

 

Собственно сабж. Давно на MT5, но по ряду причин придётся ещё по-пользовать MT4. Но вот в mql4 нет OnTrade() и OnTradeTransaction(), что печалит сильно.

Соответственно надо решить малой кровью (по ресурсам) задачу.

Пока ничего лучше в голову не пришло, как перебирать открытые ордера и сравнивать текущее состояние с предыдущим.

Возможно есть более разумные решения.

 
Это как раз и есть самое разумное решение. Причем самое разумное и для МТ5, т. к. ориентироваться только на OnTrade() и OnTradeTransaction() нельзя. Они не гарантированы.
 
Aleksandr Volotko:

Собственно сабж. Давно на MT5, но по ряду причин придётся ещё по-пользовать MT4. Но вот в mql4 нет OnTrade() и OnTradeTransaction(), что печалит сильно.

Соответственно надо решить малой кровью (по ресурсам) задачу.

Пока ничего лучше в голову не пришло, как перебирать открытые ордера и сравнивать текущее состояние с предыдущим.

Возможно есть более разумные решения.

Не самый лёгкий вариант, ознакомиться со статьями Артёма Тришкина. А всего их 31 или уже 32. Я проверял и общался с ним по этому поводу. Все события отлавливаются "на ура".

Конечно если не стараться вникнуть в суть содержимого его кодов, то должно быть легче.


ps; О... только вернулся из этой темы и сразу бросилось в глаза тема обсуждения 32й части статьи. Сама статья тут.

Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть XXXII): Отложенные торговые запросы - установка ордеров по условиям"
Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть XXXII): Отложенные торговые запросы - установка ордеров по условиям"
  • 2020.01.24
  • www.mql5.com
Опубликована статья Библиотека для простого и быстрого создания программ для MetaTrader (Часть XXXII): Отложенные торговые запросы - установка орде...
 

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

Я пока на этом и остановлюсь, для решения моей задачи это подойдёт.

 
Ihor Herasko:
Это как раз и есть самое разумное решение. Причем самое разумное и для МТ5, т. к. ориентироваться только на OnTrade() и OnTradeTransaction() нельзя. Они не гарантированы.

Вы наверное очень давно этим не интересовались. Из документации давным-давно убрали оговорку, что транзакция может потеряться. Так-что для mql5 ничего лучшего чем OnTradeTransaction() придумать не получится. Я проверял скорость получения события активации отложенного ордера в OnTradeTransaction() и через библиотеку Артёма. OnTradeTransaction() отрабатывает раньше. На сколько я не замерял. Для справедливых оценок надо делать больше замеров, а тратить на это время пожадничал.

 
Справедливости ради проблем с OnTradeTransaction() на МТ5 не испытывал ни разу, всё всегда было чётенько. Без потеряшек.
 
Alexey Viktorov:

Вы наверное очень давно этим не интересовались. Из документации давным-давно убрали оговорку, что транзакция может потеряться. Так-что для mql5 ничего лучшего чем OnTradeTransaction() придумать не получится. Я проверял скорость получения события активации отложенного ордера в OnTradeTransaction() и через библиотеку Артёма. OnTradeTransaction() отрабатывает раньше. На сколько я не замерял. Для справедливых оценок надо делать больше замеров, а тратить на это время пожадничал.

Это же естественно - у меня задана частота сканирования окружения. Поэтому факт самого события в терминале и факт изменения окружения идут друг за другом. Но у меня отлавливается именно факт изменения окружения, а не приход события. В этом есть свои плюсы. Но ты их всё равно отрицаешь ;) Поэтому нет смысла дискутировать.
 
Artyom Trishkin:
Это же естественно - у меня задана частота сканирования окружения. Поэтому факт самого события в терминале и факт изменения окружения идут друг за другом. Но у меня отлавливается именно факт изменения окружения, а не приход события. В этом есть свои плюсы. Но ты их всё равно отрицаешь ;) Поэтому нет смысла дискутировать.

Это какие плюсы я отрицаю? У меня только одно отрицание. Я хочу понимать как что работает, а если понять можно только не моим умом, то пользоваться этим мне не комфортно, а всё что мне не комфортно я отрицаю. Я тебе уже говорил, что ты пишешь буковок, больше чем я могу прочесть до конца жизни своей. Не кати на меня бочку...

 
Ihor Herasko:
Это как раз и есть самое разумное решение. Причем самое разумное и для МТ5, т. к. ориентироваться только на OnTrade() и OnTradeTransaction() нельзя. Они не гарантированы.

Вы безнадежно отстали от жизни!

Давно эти события гарантированы!

 
Обрыв связи во время (после) выполнения OrderSend (-Async) - потеря OnTrade*.
 
prostotrader:

Вы безнадежно отстали от жизни!

Давно эти события гарантированы!

И наличие света, и интернета? Не говоря об обычных для сети пропаже пакетов. Крутые MetaQuotes стали - у всех все гарантируют! ))

Причина обращения: