![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Quelque chose que je ne suis pas doué pour expliquer, apparemment. Voici un exemple concret. Voici le code :
et ainsi de suite.
Nous pouvons voir que le temps de réponse de OnTradeTransaction dans deux Expert Advisors coïncide avec des millisecondes. J'ai donc une question : l'événement "deal" arrive-t-il d'abord à un OnTradeTransaction dans un EA et ensuite au suivant dans un autre EA ou arrive-t-il d'une manière ou d'une autre à tous les handlers de tous les EA en même temps ? Eh bien, c'est comme une opération parallèle multithread ou quel que soit le nom qu'on lui donne en programmation. Je suis sûr que tout se passe de manière séquentielle, tout est simplement traité en une milliseconde, mais j'ai posé la question juste au cas où.
Quelque chose que je ne suis pas doué pour expliquer, apparemment. Voici un exemple concret. Voici le code :
void OnTradeTransaction(const MqlTradeTransaction& trans,
const MqlTradeRequest& request,
const MqlTradeResult& result)
{
Compte++ ;
Print("Ontrade_test = ",Count) ;
}
Le gestionnaire est implémenté dans deux Expert Advisors, il est donc exécuté plusieurs fois dans deux Expert Advisors lorsqu'une transaction est effectuée. Le code sort :
18:31:06.495 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 1
18:31:06.495 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 1
18:31:06.497 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 2
18:31:06.497 ontrade_trans_functions2 (MXI-12.17,M5) Ontrade_test = 2
18:31:06.498 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 3
18:31:06.498 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 3
18:31:06.500 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 4
18:31:06.500 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 4 ...
et ainsi de suite.
Vous pouvez voir que le temps de réponse de OnTradeTransaction dans les deux Expert Advisors est le même en millisecondes. J'ai donc une question : l'événement de transaction arrive-t-il d'abord à un OnTradeTransaction dans un EA et ensuite au suivant dans un autre EA ou arrive-t-il d'une manière ou d'une autre à tous les gestionnaires de tous les EA en même temps ? Eh bien, c'est comme une opération parallèle multithread ou quel que soit le nom qu'on lui donne en programmation. Je suis sûr que tout se passe de manière séquentielle, c'est juste que ça marche vite à la milliseconde près, mais j'ai posé la question juste au cas où.
Gestionnaire OnTradeTransaction pour UN symbole (m_symbol.Name()) et une magie (m_magic).
Attrapez d'abord la transaction
TRANSACTION_COMMERCIALE_ADDITIONNELLE
Ajouter la transaction à l'historique. Cela se fait à la suite de l'exécution d'un ordre ou de transactions sur le solde du compte.
puis nous regardons s'il s'agit d'une transaction.
DEAL_ENTRY_OUT
Sortie du marché
L'événementOnTradeTransaction est un événement de diffusion, toutes les actions effectuées par votre terminal y sont "déversées".
C'est juste que chaque EA doit filtrer ses propres actions.
Ensuite, dans chaque type, nous filtrons par ticket, si la commande est envoyée de manière asynchrone, alors
D'abord, nous obtenons le ticket par son ID de demande et ensuite nous filtrons par le ticket.
L'événementTRADE_TRANSACTION_REQUEST arrive toujours en premier, les autres "comme ils veulent".
Ajouté
Ce point a été discuté à de nombreuses reprises.
Consultez le site Exchange Trading
Merci, il semble que les bonnes affaires soient "écrites".