- Structure du Type Date
- Structure des Paramètres d'Entrée
- Structure des Données Historiques
- Structure DOM
- Structure de la Requête de Trading
- Structure des Résultats de la Vérification d'une Requête
- Structure des Résultat d'une Requête de Trading
- Structure d'une Transaction de Trading
- Structure des Prix Courants
- Structures du Calendrier Economique
La Structure de Résultat d'une Demande de Trade (MqlTradeResult)
Comme résultat d'une demande de trade, un serveur de trades retourne des informations sur le résultat du traitement de la demande de trade sous la forme d'une structure spéciale prédéfinie de type MqlTradeResult.
struct MqlTradeResult
|
Description des champs
Champ |
Description |
---|---|
retcode |
Code de retour d'un serveur de trades |
deal |
Ticket de la transaction si la transaction a été effectuée. Il est disponible pour une opération de trading de type TRADE_ACTION_DEAL |
ordre |
Ticket de l'ordre, si un ticket a été placé. Il est disponible pour une opération de type TRADE_ACTION_PENDING |
volume |
Volume de la transaction, confirmé par le courtier. Il dépend du type de remplissage de l'ordre |
prix |
Prix de la transaction confirmé par le courtier. Il dépend de la déviation de la demande de trade et/ou de l'opération de trading |
bid |
Le prix du marché Bid actuel (requote price) |
ask |
Le prix du marché Ask actuel (requote price) |
comment |
Le commentaire du courtier pour l'opération (par défaut, il est rempli avec la description du code de retour du serveur de trades) |
request_id |
Identifiant de la demande défini par le terminal lors de l'envoi au serveur de trades |
retcode_external |
Le code de l'erreur retourné par un système de trading externe. L'utilisation et les types de ces erreurs dépendent du courtier et du système de trading externe auquel les opérations de trading sont envoyées. |
Le résultat de l'opération de trading est retourné dans une variable de type MqlTradeResult, qui est passée en second argument à OrderSend() pour effectuer des opérations de trading.
Le terminal détermine l'identifiant de la demande dans le champ request_id lors de son envoi au serveur de trades en utilisant les fonctions OrdersSend() et OrderSendAsync(). Le terminal reçoit les messages à propos des transactions effectuées depuis le serveur de trades et les soumet pour le traitement via la fonction OnTradeTransaction() contenant les paramètres suivantes :
- la description de la transaction de trading dans une structure MqlTradeTransaction ;
- la description de la demande de trade envoyée par la fonction OrderSend() ou par la fonction OrdersSendAsync(). L'identifiant de la demande est envoyée par le terminal au serveur de trades, tandis que la demande elle-même et son identifiant request_id sont stockés dans la mémoire du terminal ;
- le résultat de l'exécution de la demande de trade dans une structure MqlTradeResult avec le champ request_id contenant l'identifiant de cette demande.
La fonction OnTradeTransaction() reçoit 3 paramètres en entrée mais les deux derniers ne sont utilisés que pour les transactions de type TRADE_TRANSACTION_REQUEST. Dans tous les autres cas, les données de la demande de trade et le résultat de son exécution ne sont pas remplis. Un exemple d'analyse des paramètres est disponible dans le chapitre Structure d'une Demande de Trade.
L'ajout du request_id par le terminal pour la demande de trade lors de son envoi au serveur a été principalement introduit pour l'utilisation de la fonction asynchrone OrderSendAsync(). Cet identifiant permet d'associer l'action effectuée (appels aux fonctions OrderSend ou OrderSendAsync) avec le résultat de cette action envoyé à la foncion OnTradeTransaction().
Exemple :
//+----------------------------------------------------------------------------------------------------+
|