Lors de l'exécution de certains actions définies sur un compte de trading, son état change. De telles actions incluent :
Les transactions de trading suivantes sont effectuées suite à ces actions :
Par exemple, lors de l'envoi d'un ordre d'achat, il est pris en compte par le gestionnaire, un ordre d'achat correspondant est créé pour le compte, l'ordre est ensuite exécuté et supprimé de la liste des ordres ouverts, puis il est ajouté à l'historique des ordres, une transaction correspondante est ajoutée à l'hisorique et une nouvelle position est créée. Toutes ces actions sont des transactions de trading.
Le gestionnaire spécial OnTradeTransaction() est fourni dans MQL5 pour récupérer les transactions de trading appliquées à un compte. Le premier paramètre du gestionnaire est la structure MqlTradeTransaction décrivant les transactions de trading.
struct MqlTradeTransaction
|
Description des Champs
Champ |
Description |
|---|---|
deal |
Ticket de la transaction. |
ordre |
Ticket de l'ordre. |
symbol |
Le nom du symbole de trading, pour lequel une transaction est effectuée. |
type |
Type de la transaction de trading. La valeur peut être l'une des valeur de l'énumération ENUM_TRADE_TRANSACTION_TYPE. |
order_type |
Type de l'ordre de trading. La valeur peut être l'une des valeur de l'énumération ENUM_ORDER_TYPE. |
order_state |
Etat de l'ordre de trading. La valeur peut être l'une des valeur de l'énumération ENUM_ORDER_STATE. |
deal_type |
Type de la transaction. La valeur peut être l'une des valeur de l'énumération ENUM_DEAL_TYPE. |
time_type |
Durée de vie de l'ordre. La valeur peut être l'une des valeur de l'énumération ENUM_ORDER_TYPE_TIME. |
time_expiration |
Expiration de l'ordre en attente (pour les ordres de type ORDER_TIME_SPECIFIED et ORDER_TIME_SPECIFIED_DAY). |
prix |
Prix. Suivant le type de la transaction de trading, il peut être le prix d'un ordre, d'une transaction ou d'une position. |
price_trigger |
Prix stop (d'activation) d'un ordre stop limit (ORDER_TYPE_BUY_STOP_LIMIT et ORDER_TYPE_SELL_STOP_LIMIT). |
price_sl |
Prix du Stop Loss. Suivant le type de la transaction de trading, il peut être relatif à un ordre, à une transaction ou à une position. |
price_tp |
Prix du Take Profit. Suivant le type de la transaction de trading, il peut être relatif à un ordre, à une transaction ou à une position. |
volume |
Volume en lots. Suivant le type de la transaction de trading, il peut indiquer le volume actuel d'un ordre, d'une transaction ou d'une position. |
position |
Le ticket de la position affectée par la transaction. |
position_by |
Le ticket de la position opposée. Utilisé lors de la fermeture d'une position par une position opposée, c'est à dire par une position sur le même symbole ouvert dans une direction opposée. |
Le principal paramètre pour l'analyse de la transaction reçue est son type spécifié dans le champ type. Par exemple, si une transaction est de type TRADE_TRANSACTION_REQUEST (un résultat du traitement de la demande a été reçue du serveur), la structure n'a qu'un seul champ rempli - type. Les autres champs ne sont pas analysés. Dans ce cas, nous pouvons analyser deux paramètres supplémentaires request et result soumis par le gestionnaire OnTradeTransaction(), comme montré ci-dessous.
Avec les données sur le type de l'opération de trading, vous pouvez décider de l'analyse de l'état actuel des ordres, des positions et des transactions sur un compte de trading. N'oubliez pas qu'une demande de trade envoyée au serveur depuis le terminal peut générer plusieurs nouvelles transactions. La priorité de leur arrivée au terminal n'est pas garantie.
La structure MqlTradeTransaction est remplie de différentes façons suivant le type (ENUM_TRADE_TRANSACTION_TYPE) de la transaction :
TRADE_TRANSACTION_ORDER_* et TRADE_TRANSACTION_HISTORY_*
Les champs suivants de la structure MqlTradeTransaction sont remplis pour les transactions de trading relatives au traitement des ordres d'ouverture (TRADE_TRANSACTION_ORDER_ADD, TRADE_TRANSACTION_ORDER_UPDATE and TRADE_TRANSACTION_ORDER_DELETE) et à l'historique des ordres (TRADE_TRANSACTION_HISTORY_ADD, TRADE_TRANSACTION_HISTORY_UPDATE, TRADE_TRANSACTION_HISTORY_DELETE) :
TRADE_TRANSACTION_DEAL_*
Les champs suivants de la structure MqlTradeTransaction sont remplis pour les transactions relatives au traitement des deals (TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE et TRADE_TRANSACTION_DEAL_DELETE) :
TRADE_TRANSACTION_POSITION
Les champs suivants de la structure MqlTradeTransaction sont remplis pour les transactions de trading relatives au changement des positions non connectées à l'exécution des transactions (TRADE_TRANSACTION_POSITION):
Le changement de la position (ajout, changement ou clôture), comme étant le résultat de l'exécution d'une transaction, ne mène pas à une transaction TRADE_TRANSACTION_POSITION. |
TRADE_TRANSACTION_REQUEST
Seul un champ de la structure MqlTradeTransaction est rempli pour les transactions décrivant le fait qu'une demande de trade a été traitée par un serveur et que le résultat a été reçu (TRADE_TRANSACTION_REQUEST):
Un seul champ (type de la transaction de trading) doit être analysé pour ces transactions. Les deuxième et troisième paramètres de la fonction OnTradeTransaction (demande et résultat) doivent être analysés pour obtenir des données supplémentaires. |
Exemple :
input int MagicNumber=1234567; |
Voir aussi