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'un ordre pour exécution à l'heure actuelle (heure en vigueur), le prix et le volume d'achat/vente requis doivent être spécifiés. Gardez également à l'esprit que les marchés financiers ne garantissent pas que l'intégralité du volume demandé soit 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 en utilisant les 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 entièrement satisfait pour le moment.

Le mode d'exécution des prix peut être obtenu à partir de la propriété SYMBOL_TRADE_EXEMODE du symbole, contenant la combinaison d'indicateurs de l'énumération ENUM_SYMBOL_TRADE_EXECUTION.

Mode d'exécution

Description

La valeur dans ENUM_SYMBOL_TRADE_EXECUTION

Mode d'exécution

 

(Demande de l'Exécution)

Exécute un ordre au marché au prix précédemment reçu du courtier.

 

Les prix pour un ordre au marché sont demandés au courtier avant l'envoi de l'ordre. A la réception des prix, l'exécution de l'ordre au prix donné peut être soit confirmé, soit rejeté.

SYMBOL_TRADE_EXECUTION_REQUEST

Exécution Instantanée

 

(Exécution Instantanée)

Exécution immédiate d'un ordre au marché au prix spécifié.

 

Lors de l'envoi de la demande d'un ordre à 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

Exécution au Marché

 

(Exécution au Marché)

Le courtier choisit le prix d'exécution de l'ordre sans autre discussion avec le trader.

 

L'envoi de l'ordre dans ce mode vaut consentement préalable à son exécution à ce prix.

SYMBOL_TRADE_EXECUTION_MARKET

Exécution Boursière

 

(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 du volume est spécifiée dans la propriété ORDER_TYPE_FILLING de l'ordre et ne peut contenir que des valeurs de l'énumération ENUM_ORDER_TYPE_FILLING

Politique de remplissage

Description

Une valeur de ENUM_ORDER_TYPE_FILLING

Rempli ou Annulé (Fill or Kill)

Un ordre ne peut être exécuté qu'avec le volume spécifié.

 

Si le volume 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

Immédiat ou Annulé (Immediate or Cancel)

Un trader s'engage à exécuter une transaction avec le volume disponible maximum sur le marché dans la limite de celui indiqué dans l'ordre.

 

Si la demande ne peut pas être satisfaite complètement, 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 sur le serveur de trading.

 

ORDER_FILLING_IOC

Passif (Book or Cancel)

L'ordre BoC suppose que l'ordre ne peut être placé que dans le Depth of Market et ne peut pas être exécuté immédiatement. Si l'ordre peut être exécuté immédiatement après avoir été passé, il est alors annulé.

 

En fait, la politique BOC garantit que le prix de l'ordre passé sera moins bon que le prix actuel. Les ordres BoC sont utilisés pour mettre en œuvre le trading passif, de sorte que l'ordre n'est pas exécuté immédiatement lorsqu'il est placé et n'affecte pas la liquidité actuelle.

 

Seuls les ordres limit et stop limit sont supportés (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT, ORDER_TYPE_SELL_STOP_LIMIT).

ORDER_FILLING_BOC

Retour

En cas de remplissage partiel, un ordre avec un volume restant n'est pas annulé mais traité ultérieurement.

 

Les ordres Retour ne sont pas autorisés en mode d'Exécution au Marché (exécution au 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 type_filling, à savoir dans la structure spéciale 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 les fonctions 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é pour le symbole sous la forme d'une 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 représentée dans le tableau suivant :

Type d'Exécution\Politique de Remplissage

Rempli ou Annulé / Fill or Kill (FOK ORDER_FILLING_FOK)

Immédiat ou Annulé / Immediate or Cancel (IOC ORDER_FILLING_IOC)

Retour (ORDER_FILLING_RETURN)

Exécution Instantanée

 

(SYMBOL_TRADE_EXECUTION_INSTANT)

+ (quel que soit les paramètres du symbole)

+ (quel que soit les paramètres du symbole)

+ (toujours)

Demande de l'Exécution

 

SYMBOL_TRADE_EXECUTION_REQUEST

+ (quel que soit les paramètres du symbole)

 

+ (quel que soit les paramètres du symbole)

+ (toujours)

Exécution au Marché

 

SYMBOL_TRADE_EXECUTION_MARKET

+ (défini dans les paramètres du symbole)

+ (défini dans les paramètres du symbole)

- (désactivé quel que soit les paramètres du symbole)

Exécution Boursière

 

SYMBOL_TRADE_EXECUTION_EXCHANGE

+ (défini dans les paramètres du symbole)

+ (défini dans les paramètres du symbole)

+ (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, le trader accepte à l'avance que, lorsque les conditions d'un accord sur cet ordre sont remplies, le courtier utilisera le type de remplissage pris en charge par la place boursière.

 

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