Gérer les ordres ouverts en MQL4

Gérer les ordres ouverts en MQL4

 

Sélection de l’ordre

Une fois l’ordre exécuté, il faut pouvoir accéder aux informations de l’ordre pour pouvoir le modifier ou le fermer. Pour cela on utilise la fonction OrderSelect() avec le numéro de ticket (identifiant unique retourné lors de la prise de position). On peut également parcourir avec une boucle l’ensemble des ordres actifs dans l’ordre de leur ouverture.

La fonction OrderSelect()

 

La syntaxe est la suivante :

bool OrderSelect(   int Index,

int Select,

int Pool = MODE_TRADES)

 

Index : Une variable Integer qui représente le numéro de ticket de l’ordre que l’on selectionne, ou alors la position de l’ordre dans le pool.

Select : une variable Integer qui précise si Index est un numéro de ticket ou un ordre dans le pool

SELECT_BY_TICKET : index est un numéro de ticket.

SELECT_BY_POS : index est un ordre dans le pool.

Pool : Une constante Integer optionnelle qui indique l’ordre du pool

MODE_TRADES : par défaut, le pool est examiné selon les ordres ouverts.

MODE_HISTORY : le pool est examiné selon les ordres fermés.

 

La fonction retourne True si l’ordre est bien sélectionné.

Une fois l’ordre sélectionné il est possible d’appeler les fonctions suivantes (liste non exhaustive) pour obtenir une information sur l’ordre :

OrderSymbol() : retourne le symbole de l’ordre

OrderType() : retourne le type d’ordre : buy ou sell, market, stop ou limite. Le retour est un entier.

OrderOpenPrice() : le prix d’ouverture de l’ordre.

OrderLots(): la taille du lot de l’ordre.

OrderStopLoss() : Le stop loss price de l’ordre.

OrderTakeProfit() : Le take profit price de l’ordre.

OrderTicket() : Le numéro de ticket associé à l’ordre.

OrderMagicNumber(): le magic number de l’ordre.

OrderComment(): Le commentaire associé à l’ordre.

OrderOpenTime(): L’heure d’ouverture de l’ordre.

OrderProfit() : le profit associé à l’ordre.

 

Modifier un ordre

 

Une fois l’ordre placé vous pouvez modifier le take profit, stop loss par appel à la fonction OrderModify(). Pour cela il faut avoir le numéro de ticket qui représente l’ordre.

 

bool OrderModify(  int ticket,

double price,

double StopLoss,

double TakeProfit,

datetime Expiration,

color Arrow = CLR_NONE)

 

Ticket : le numéro de ticket de l’ordre à modifier

Price : le prix désiré pour un pending order

StopLoss: Le prix StopLoss désiré

TakeProfit : le prix TakeProfit désiré

Expiration :la date d’expiration pour les pending orders

Arrow : un code couleur optionnel pour la flèche indiquant la modification de l’ordre.

 

Si la commande de modification OrderModify() s’est bien passé le retour est True, False sinon.

Pour être modifié l’ordre doit être ouvert, avant la modification d’un paramètre il faut avoir récupéré l’ensemble des paramètres de l’ordre. Tout d’abord par sélection de l’ordre avec OrderSelect() puis faire appel aux différentes fonctions de récupération des informations.

 

Fermer un ordre

 

Lorsque l’on ferme un ordre on le ferme au prix du marché, au prix BID pour les ordres BUY, au prix ASK pour les ordres SELL.

 

OrderClose()

 

bool OrderClose(     int Ticket,

double Lots,

double Price,

Int Slippage,

Color Arrow)

 

Ticket : le numéro de ticket de l’ordre à fermer

Lots : Le nombre de lots à fermer

Price : le prix auquel fermer, BID ou ASK

Slippage : le décalage accepté en points

Color : la couleur de la la flèche de fermeture