Avec quoi remplacer OnTradeTransaction() dans mql4 ?

 

En fait, c'est ma question. J'utilise MT5 depuis longtemps, mais je dois utiliser MT4 pour une raison quelconque. Mais mql4 n'a pas de OnTrade() et OnTradeTransaction() ce qui est très triste.

Je dois donc résoudre le problème à moindre coût (en termes de ressources).

Jusqu'à présent, je n'ai rien trouvé de mieux que de passer en revue les ordres ouverts et de comparer l'état actuel avec l'état précédent.

Il existe peut-être des solutions plus raisonnables.

 
C'est exactement la solution la plus raisonnable. Et c'est aussi la plus raisonnable pour MT5, car on ne peut pas se fier uniquement à OnTrade() et OnTradeTransaction(). Ils ne sont pas garantis.
 
Aleksandr Volotko:

En fait, c'est ma question. J'utilise MT5 depuis longtemps, mais je dois utiliser MT4 pour une raison quelconque. Mais mql4 n'a pas de OnTrade() et OnTradeTransaction() ce qui est très triste.

Je dois donc résoudre le problème à moindre coût (en termes de ressources).

Jusqu'à présent, je n'ai rien trouvé de mieux que de passer en revue les ordres ouverts et de comparer l'état actuel avec l'état précédent.

Il existe peut-être des solutions plus raisonnables.

La variante la plus facile n'est pas de lire les articles d'Artyom Trishkin. Et il y en a 31 au total ou déjà 32. J'ai vérifié et communiqué avec lui à ce sujet. Tous les événements sont pris "avec un bang".

Bien sûr, si vous n'essayez pas d'entrer dans l'essence du contenu de ses codes, cela devrait être plus facile.


ps ; Oh... Je viens de revenir sur ce fil et le fil de discussion sur la 32e partie de l'article a immédiatement attiré mon attention. L'article lui-même est ici.

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

Igor a raison, il est difficile de trouver quelque chose de plus intelligent et de plus simple à la fois, car toute autre solution sera basée sur le même appel à OrdersTotal() avec filtrage des commandes par goût et traitement ultérieur des dates.

Je m'arrête là pour l'instant, cela suffira pour mon problème.

 
Ihor Herasko:
C'est exactement la solution la plus raisonnable. Et c'est aussi la plus raisonnable pour MT5, car on ne peut pas se fier uniquement à OnTrade() et OnTradeTransaction(). Ils ne sont pas garantis.

Cela doit faire longtemps que vous ne vous y intéressez plus. L'idée qu'une transaction puisse être perdue a été supprimée de la documentation il y a longtemps. Ainsi, pour mql5, il n'y a rien de mieux que OnTradeTransaction(). J'ai vérifié la vitesse d'obtention de l'événement d'activation de l'ordre en attente dans OnTradeTransaction() et via la bibliothèque d'Artem. OnTradeTransaction() est plus rapide. Je ne l'ai pas mesuré. Je dois faire plus de mesures pour faire une estimation juste mais je ne voulais pas y passer du temps.

 
Pour être honnête, je n'ai jamais eu de problèmes avec OnTradeTransaction() sur MT5, tout a toujours été fluide. Aucune perte.
 
Alexey Viktorov:

Vous ne vous êtes probablement pas penché sur la question depuis très longtemps. Il y a longtemps qu'ils ont supprimé l'avertissement selon lequel une transaction peut se perdre dans la documentation. Donc, il n'y a rien de mieux que OnTradeTransaction() pour mql5. J'ai vérifié la vitesse d'obtention de l'événement d'activation de l'ordre en attente dans OnTradeTransaction() et via la bibliothèque d'Artem. OnTradeTransaction() est plus rapide. Je ne l'ai pas mesuré. Je dois faire plus de mesures pour faire une estimation juste mais j'étais trop gourmand pour y consacrer du temps.

C'est naturel - j'ai une fréquence fixe d'analyse de l'environnement. Par conséquent, le fait de l'événement lui-même dans le terminal et le fait du changement d'environnement se suivent. Mais c'est le fait de changer d'environnement qui est saisi, pas l'arrivée de l'événement. Cela a ses mérites. Mais vous les niez quand même ;) Il n'y a donc pas lieu de débattre.
 
Artyom Trishkin:
C'est naturel, j'ai une fréquence fixe pour scanner l'environnement. Par conséquent, le fait de l'événement lui-même dans le terminal et le fait du changement d'environnement se suivent. Mais dans mon cas, c'est le fait du changement d'environnement qui est capté, pas l'arrivée de l'événement. Cela a ses mérites. Mais vous les niez quand même ;) Il n'y a donc pas lieu de débattre.

Quels sont les avantages dont je nie l'existence ? Je n'ai qu'un seul démenti. Je veux comprendre comment les choses fonctionnent, et s'il n'est possible de comprendre les choses que par l'esprit, alors je ne suis pas à l'aise pour les utiliser, et je nie tout ce avec quoi je ne suis pas à l'aise. Je vous ai déjà dit que vous écriviez plus de lettres que je ne pourrais en lire pour le reste de ma vie. Ne t'en prends pas à moi...

 
Ihor Herasko:
C'est exactement la solution la plus raisonnable. Et c'est aussi la plus intelligente pour MT5, car on ne peut pas se fier uniquement à OnTrade() et OnTradeTransaction(). Ils ne sont pas garantis.

Vous êtes désespérément en retard sur votre temps !

Depuis longtemps, ces événements sont garantis!

 
Échec de la communication pendant (après) l'exécution d'OrderSend (-Async) - perte de OnTrade*.
 
prostotrader:

Vous êtes désespérément en retard sur votre temps !

Ces événements sont garantis depuis longtemps !

Et la disponibilité de l'éclairage et de l'internet ? Sans parler de l'habituelle perte de paquets du réseau. Comme c'est devenu cool, les MetaQuotes - ils garantissent tout ! ))