Propriétés des Ordres

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()

ENUM_ORDER_PROPERTY_INTEGER

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

ENUM_ORDER_TYPE

ORDER_STATE

Etat de l'ordre

ENUM_ORDER_STATE

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

ENUM_ORDER_TYPE_FILLING

ORDER_TYPE_TIME

Durée de l'ordre

ENUM_ORDER_TYPE_TIME

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

ENUM_ORDER_REASON

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()

ENUM_ORDER_PROPERTY_DOUBLE

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()

ENUM_ORDER_PROPERTY_STRING

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.

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.

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.

  • Si le courtier accepte le prix, l'ordre est exécuté.
  • Si le courtier n'accepte pas le prix demandé, une "Recotation" est envoyée - le courtier renvoie les prix auxquels cet ordre peut être exécuté .

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.

ENUM_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 .

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