Les demandes d'exécution des trades sont formalisées comme des ordres. Chaque ordre a une variété de propriétés pour la lecture. Les informations les concernant peuvent être obtenues en utilisant les fonctionsOrderGet...() etHistoryOrderGet...().
Pour les fonctions OrderGetInteger() et HistoryOrderGetInteger()
Identificateur |
Description |
Type |
---|---|---|
ORDER_TICKET |
Ticket de l'ordre. Numéro unique attribué à chaque ordre |
long |
ORDER_TIME_SETUP |
Heure d'installation de l'ordre |
datetime |
ORDER_TYPE |
Type d'ordre |
|
ORDER_STATE |
Etat de l'ordre |
|
ORDER_TIME_EXPIRATION |
Heure d'expiration de l'ordre |
datetime |
ORDER_TIME_DONE |
Heure d'éxécution et d'annulation de l'ordre |
datetime |
ORDER_TIME_SETUP_MSC |
L'heure de placement d'un ordre pour son exécution en millisecondes depuis le 01.01.1970 |
long |
ORDER_TIME_DONE_MSC |
Heure d'éxécution/annulation d'un ordre en millisecondes depuis le 01.01.1970 |
long |
ORDER_TYPE_FILLING |
Type de remplissage de l'ordre |
|
ORDER_TYPE_TIME |
Durée de l'ordre |
|
ORDER_MAGIC |
ID d'un Expert Advisor qui a passé l'ordre (conçu pour s'assurer que chaque Expert Advisor place son propre numéro unique) |
long |
ORDER_REASON |
La raison ou la source du placement d'un ordre |
|
ORDER_POSITION_ID |
L'identifiant de la position qui définit un ordre dés qu'il est éxécuté. Chaque ordre exécuté donne lieu à une transaction qui ouvre ou modifie une position déjà existante. L'identifiant de cette position est définit à l'ordre exécuté à ce moment. |
long |
ORDER_POSITION_BY_ID |
L'identifiant d'une position opposée utilisé pour fermer par l'ordre ORDER_TYPE_CLOSE_BY |
long |
Pour les fonctions OrderGetDouble() et HistoryOrderGetDouble()
Identificateur |
Description |
Type |
---|---|---|
ORDER_VOLUME_INITIAL |
Volume de l'ordre initial |
double |
ORDER_VOLUME_CURRENT |
Volume de l'ordre courant |
double |
ORDER_PRICE_OPEN |
Prix indiqué de l'ordre |
double |
ORDER_SL |
Valeur du Stop Loss |
double |
ORDER_TP |
Valeur du Take Profit |
double |
ORDER_PRICE_CURRENT |
Le prix actuel de l'ordre |
double |
ORDER_PRICE_STOPLIMIT |
Le prix de l'ordre Limit pour l'ordre StopLimit |
double |
Pour les fonctions OrderGetString() et HistoryOrderGetString()
Identificateur |
Description |
Type |
---|---|---|
ORDER_SYMBOL |
Symbole de l'ordre |
string |
ORDER_COMMENT |
Commentaire de l'ordre |
string |
ORDER_EXTERNAL_ID |
Identifiant de l'ordre dans un système de trading externe (sur l'Echange) |
string |
Lors de l'envoi d'une demande de trade avec la fonction OrderSend(), certaines opérations nécessite d'indiquer le type de l'ordre. Le type de l'ordre est spécifié dans le champ type de la structure spéciale MqlTradeRequest, et peut être l'une des valeurs de l'énumération ENUM_ORDER_TYPE.
Identificateur |
Description |
---|---|
ORDER_TYPE_BUY |
Ordre d'Achat au Marché |
ORDER_TYPE_SELL |
Ordre de Vente au Marché |
ORDER_TYPE_BUY_LIMIT |
Ordre en attente Buy Limit |
ORDER_TYPE_SELL_LIMIT |
Ordre en attente Sell Limit |
ORDER_TYPE_BUY_STOP |
Ordre en attente Buy Stop |
ORDER_TYPE_SELL_STOP |
Ordre en attente Sell Stop |
ORDER_TYPE_BUY_STOP_LIMIT |
Une fois le prix de l'ordre atteint, un ordre en attente Buy Limit est placé au prix StopLimit |
ORDER_TYPE_SELL_STOP_LIMIT |
Une fois le prix de l'ordre atteint, un ordre en attente Sell Limit est placé au prix StopLimit |
ORDER_TYPE_CLOSE_BY |
Ordre pour fermer une position par une position opposée |
Chaque ordre a un statut qui décrit son état. Pour obtenir une information, utilisez OrderGetInteger() ou HistoryOrderGetInteger() avec le modificateur ORDER_STATE. Les valeurs autorisées sont stockées dans l'énumération ENUM_ORDER_STATE.
Identificateur |
Description |
---|---|
ORDER_STATE_STARTED |
Ordre vérifié, mais pas encore accepté par le courtier |
ORDER_STATE_PLACED |
Ordre accepté |
ORDER_STATE_CANCELED |
Ordre annulé par le client |
ORDER_STATE_PARTIAL |
Ordre partiellement éxécuté |
ORDER_STATE_FILLED |
Ordre complètement éxécuté |
ORDER_STATE_REJECTED |
Ordre rejeté |
ORDER_STATE_EXPIRED |
Ordre expiré |
ORDER_STATE_REQUEST_ADD |
L'ordre est enregistré (placé dans le système de trading) |
ORDER_STATE_REQUEST_MODIFY |
L'ordre est modifié (modification de ses paramètres) |
ORDER_STATE_REQUEST_CANCEL |
L'ordre est annulé (annulé dans le système de trading) |
Lors de l'envoi d'une demande de trade pour exécution à l'heure actuelle (heure en vigueur), le prix et le volume d'achat/vente requis doivent être spécifiés. De plus, gardez à l'esprit que les marchés financiers ne garantissent pas que l'intégralité du volume demandé est disponible pour un certain instrument financier au prix souhaité. Par conséquent, les opérations de trading en temps réel sont régulées à l'aide des modes d'exécution prix et volume. Les modes, ou politiques d'exécution, définissent les règles pour les cas où le prix a changé ou le volume demandé ne peut pas être complètement rempli pour le moment.
Le mode d'exécution des prix peut être obtenu à partir de la propriété de symbole SYMBOL_TRADE_EXEMODE contenant la combinaison des drapeaux de l'énumération ENUM_SYMBOL_TRADE_EXECUTION.
Mode d'exécution |
Description |
Une valeur de ENUM_SYMBOL_TRADE_EXECUTION |
---|---|---|
Mode d'exécution
(Exécution de la demande) |
Exécuter un ordre de marché au prix précédemment reçu du courtier.
Les prix d'un certain ordre au marché sont demandés au courtier avant l'envoi de l'ordre. Dès réception des prix, l'exécution de l'ordre au prix indiqué peut être soit confirmée, soit refusée. |
SYMBOL_TRADE_EXECUTION_REQUEST |
Instant Execution
(Exécution instantanée) |
Exécuter immédiatement un ordre de marché au prix spécifié.
Lors de l'envoi d'une demande de trade à exécuter, la plateforme ajoute automatiquement les prix actuels à l'ordre.
|
SYMBOL_TRADE_EXECUTION_INSTANT |
Market Execution
(Exécution du marché) |
Un courtier prend une décision sur le prix d'exécution de l'ordre sans aucune discussion supplémentaire avec le trader.
L'envoi de l'ordre dans un tel mode signifie le consentement préalable à son exécution à ce prix. |
SYMBOL_TRADE_EXECUTION_MARKET |
Exchange Execution
(Exécution boursière) |
Les opérations de trading sont exécutées aux prix des offres de marché en cours. |
SYMBOL_TRADE_EXECUTION_EXCHANGE |
La politique de remplissage des volumes est spécifiée dans la propriété ORDER_TYPE_FILLING de l'ordre et peut contenir uniquement les valeurs de l'énumération ENUM_ORDER_TYPE_FILLING
Politique de remplissage |
Description |
Une valeur de ENUM_ORDER_TYPE_FILLING |
---|---|---|
Fill or Kill |
Un ordre ne peut être exécuté que dans le volume spécifié.
Si le montant nécessaire d'un instrument financier est actuellement indisponible sur le marché, l'ordre ne sera pas exécuté.
Le volume souhaité peut être composé de plusieurs offres disponibles.
La possibilité d'utiliser des ordres FOK est déterminée sur le serveur de trading. |
ORDER_FILLING_FOK |
Immediate or Cancel |
Un trader s'engage à exécuter une transaction avec le volume maximum disponible sur le marché dans la limite de celui indiqué dans l'ordre.
Si la demande ne peut pas être entièrement satisfaite, un ordre avec le volume disponible sera exécuté et le volume restant sera annulé.
La possibilité d'utiliser les ordres IOC est déterminée au niveau du serveur de trading.
|
ORDER_FILLING_IOC |
Retour |
En cas de remplissage partiel, un ordre avec le volume restant n'est pas annulé mais traité ultérieurement.
Les ordres de retour ne sont pas autorisés en mode d'exécution de marché (exécution de marché SYMBOL_TRADE_EXECUTION_MARKET). |
ORDER_FILLING_RETURN |
Lors de l'envoi d'une demande de trade à l'aide de la fonction OrderSend(), la politique d'exécution du volume nécessaire peut être définie dans le champ type_filling dans la structure MqlTradeRequest. Les valeurs de l'énumération ENUM_ORDER_TYPE_FILLING sont disponibles. Pour obtenir la valeur de la propriété dans un ordre actif/terminé spécifique, utilisez la fonction OrderGetInteger() ou HistoryOrderGetInteger() avec le modificateur ORDER_TYPE_FILLING.
Avant d'envoyer un ordre avec l'heure d'exécution actuelle, pour le réglage correct de la valeur ORDER_TYPE_FILLING (type d'exécution du volume), vous pouvez utiliser la fonction SymbolInfoInteger() avec chaque instrument financier pour obtenir la valeur de la propriété SYMBOL_FILLING_MODE, qui montre les types d'exécution de volume autorisés pour le symbole en tant que combinaison de drapeaux. Le type de remplissage ORDER_FILLING_RETURN est activé à tout moment sauf pour le mode "Exécution au marché" (SYMBOL_TRADE_EXECUTION_MARKET).
L'utilisation des types de remplissage en fonction du mode d'exécution peut être illustrée dans le tableau suivant :
Type d'exécution\\Politique de remplissage |
Fill or Kill (FOK ORDER_FILLING_FOK) |
Immediate or Cancel (IOC ORDER_FILLING_IOC) |
Return (Return ORDER_FILLING_RETURN) |
---|---|---|---|
Instant Execution
(SYMBOL_TRADE_EXECUTION_INSTANT) |
+ (quel que soit le réglage du symbole) |
+ (quel que soit le réglage du symbole) |
+ (toujours) |
Exécution de la Requête
SYMBOL_TRADE_EXECUTION_REQUEST |
+ (quel que soit le réglage du symbole)
|
+ (quel que soit le réglage du symbole) |
+ (toujours) |
Market Execution
SYMBOL_TRADE_EXECUTION_MARKET |
+ (défini dans les paramètres des symboles) |
+ (défini dans les paramètres des symboles) |
- (désactivé quels que soient les paramètres des symboles) |
Exchange Execution
SYMBOL_TRADE_EXECUTION_EXCHANGE |
+ (défini dans les paramètres des symboles) |
+ (défini dans les paramètres des symboles) |
+ (toujours) |
En cas d'ordres en attente, le type de remplissage ORDER_FILLING_RETURN doit être utilisé quel que soit le type d'exécution (SYMBOL_TRADE_EXEMODE), car ces ordres ne sont pas destinés à être exécutés au moment de l'envoi. Lors de l'utilisation d'ordres en attente, un trader accepte à l'avance que, lorsque les conditions d'une transaction sur cet ordre sont remplies, le courtier utilisera le type de remplissage pris en charge par la bourse.
La période de validité de l'ordre peut être définie dans le champ type_time de la structure MqlTradeRequest lors de l'envoi d'une demande de trade en utilisant la fonction OrderSend(). L'énumération des valeurs de ENUM_ORDER_TYPE_TIME est autorisée. Pour obtenir la valeur de cette propriété, utilisez la fonction OrderGetInteger() ou HistoryOrderGetInteger() avec le modificateur ORDER_TYPE_TIME.
Identificateur |
Description |
---|---|
ORDER_TIME_GTC |
Valide jusqu'à l'annulation de l'ordre |
ORDER_TIME_DAY |
Valide pour la journée courante de trading |
ORDER_TIME_SPECIFIED |
Valide jusqu'à l'expiration spécifiée |
ORDER_TIME_SPECIFIED_DAY |
L'ordre sera effectif jusqu'à 23:59:59 du jour spécifié. Si cette heure est en dehors d'une séance de trading, l'ordre expire dans l'heure de trading le plus proche. |
La raison du placement de l'ordre est contenue dans la propriété ORDER_REASON. Un ordre peut être placé par un programme MQL5, depuis une application mobile, comme le résultat d'un StopOut, etc. Les valeurs possibles de ORDER_REASON sont décrites dans l'énumération ENUM_ORDER_REASON .
Identificateur |
Description |
---|---|
ORDER_REASON_CLIENT |
L'ordre a été placé depuis le terminal de bureau |
ORDER_REASON_MOBILE |
L'ordre a été placé depuis une application mobile |
ORDER_REASON_WEB |
L'ordre a été placé depuis une plateforme web |
ORDER_REASON_EXPERT |
L'ordre a été placé depuis un programme MQL5, c'est à dire par un Expert Advisor ou un script |
ORDER_REASON_SL |
L'ordre a été placé comme étant le résultat de l'activation d'un Stop Loss |
ORDER_REASON_TP |
L'ordre a été placé comme étant le résultat de l'activation d'un Take Profit |
ORDER_REASON_SO |
L'ordre a été placé comme étant le résultat d'un évènement Stop Out |