Affichage des articles dont le libellé est ordres. Afficher tous les articles
Affichage des articles dont le libellé est ordres. Afficher tous les articles

jeudi 27 janvier 2011

Modifier un ordre

Le MQL4 donne aussi la possibilité de modifier les paramètres d' un ordre en cours ou en attente. Pour cela, on utilise la fonction  OrderModify().


La fonction :
bool OrderModify(int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color = CLR_NONE)

   - numéro : est le ticket ( numéro unique ) de l' ordre passé sur lequel la modification porte.

   - prix : est le prix à modifier.

   - stoploss et taketprofit : sont les nouvelles valeurs que prendra l' ordre pour le stoploss et le takeprofit.

   - expiration : est la date de validité de l' ordre.

   - arrow : indique un point ou une flèche sur la courbe du graphique Metatrader à l' endroit où l' ordre a été clôturé. Pas obligatoire.


Un exemple incontournable, le TrailingStop :
La fonction suivante associe un TrailingStop de 20 pips au dernier ordre passé.
bool vrai = true;
double trailingstop = 0;
double offre = 0;
double demande = 0;
int ecart = 20

int start()
  {
   int i = OrdersTotal() - 1;
   OrderSelect(i, SELECT_BY_POS);
   int type = OrderType();
   if (type == OP_BUY)
     {
      if ( Bid - ecart * Point > trailingstop )
       {
        double demande = MarketInfo(Symbol(), MODE_ASK);
        trailingstop = demande - Point * ecart;
        OrderModify(OrderTicket(), OrderOpenPrice(), trailingstop, OrderTakeProfit(), 0);
       }
     }
   if (type == OP_SELL)
     {
      if ( Ask - ecart * Point > trailingstop )
       {
        double offre = MarketInfo(Symbol(), MODE_BID);
        trailingstop = offre + Point * ecart;
        OrderModify(OrderTicket(), OrderOpenPrice(), trailingstop, OrderTakeProfit(), 0);
       }
     }
  return;
  }

   - OrderOpenPrice() est le prix auquel l' ordre a été ouvert

   - OrderTakeProfit() et OrderStopLoss sont les takeprofit et stoploss de l' ordre

Après ces quelques leçons compliquées, je vous invite à suivre une dernière leçon plus simple et clore ce chapitre.

---> Leçon suivante

mardi 25 janvier 2011

Fermer un ordre

Si tout ne se passe pas comme prévu, ou bien si l' ordre n' a pas de Stoploss ni de Takeprofit, il est nécessaire de clore la position à un moment ou à un autre. Il faut donner l' ordre à Metatrader de fermer la position grâce à la fonction OrderClose().


La fonction :
bool OrderClose(int ticket, double nblots, double prix, int slippage, color arow = CLR_NONE)
Cette fonction est booléenne ( comme true et false ). C' est logique, il n' y a que 2 dénouements : soit l' ordre est stoppé, soit il ne l' est pas.   

   - ticket : est le ticket ( numéro unique ) de l' ordre passé sur lequel l' ordre de clôture porte.

   - nblots : est le nombre de lots que concernent l' ordre de fermeture.

   - prix : est le prix auquel on souhaite clôturer l' ordre.

   - slippage : est la différence maximale de pips acceptée par le trader entre le prix souhaité et le prix auquel l' ordre est finalement exécuté.

   - arrow : indique un point ou une flèche sur la courbe du graphique Metatrader à l' endroit où l' ordre a été clôturé. Pas obligatoire.


A noter : pour fermer les ordres en attente, on utilise la fonction OrderDelete() de la même façon que OrderClose().


Un exemple d' utilisation :
La fonction suivante va fermer tous les ordres, passés ou en attente, d' un seul coup s' il est 20 heures passées.

bool vrai = true;

int start()
  {
   int dath = Hour();
   if (dath > 20)
    {
     int i = OrdersTotal() - 1;
     while (i >= 0)
      {
       OrderSelect(i, SELECT_BY_POS);
       int type = OrderType();
       if (type == OP_BUY)
        {
     OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 2);
        }
       if (type == OP_SELL)
        {
     OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 2);
        }
       if (type == OP_BUYLIMIT || type == OP_BUYSTOP || type == OP_SELLLIMIT || type == OP_SELLSTOP)  
        {
         OrderDelete(OrderTicket());
        }
       i -= 1  // décrémentation i = i - 1
      }
    }
return;
}

Cette fonction contient beaucoup de nouveaux éléments que je vais expliquer un par un :

   - OrdersTotal() renvoie le nombre total d' ordre passé ou en attente.

   - OrderSelect() permet de sélectionner un ordre. Cette fonction prends en compte 2 paramètres : la place de l' ordre choisi ( ici c' est la variable i ), et la manière de trier les ordres. Ici, on classe les ordres du plus ancien au plus récent avec SELECT_BY_POS. Cela signifie que l' ordre le plus ancien est numéroté 0, le suivant 1, et ainsi de suite...

   - OrderType() désigne le type de l' ordre en question ( achat, vente, stop, limité )

   - OrderTicket() est le ticket unique de l' ordre.

   - OrderLots() est le nombre de lots engagés dans l' ordre.

   - OrderSymbol() est similaire à Symbol() et renvoie donc le nom de la paire traitée.

   - || correspond à OU dans une parenthèse. Dans le même registre && correspond à ET.

---> Leçon suivante

jeudi 20 janvier 2011

Fermer tous les ordres

Ce programme ferme immédiatement tous les ordres, qu ' ils soient passés ou en attente.
bool vrai = true;

int start()
  {
   int dath = Hour();
   if (dath > 20)
    {
     int i = OrdersTotal() - 1;
     while (i >= 0)
      {
       OrderSelect(i, SELECT_BY_POS);
       int type = OrderType();
       if (type == OP_BUY)
        {
     OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 2);
        }
       if (type == OP_SELL)
        {
     OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 2);
        }
       if (type == OP_BUYLIMIT || type == OP_BUYSTOP || type == OP_SELLLIMIT || type == OP_SELLSTOP)  
        {
         OrderDelete(OrderTicket());
        }
       i -= 1  // décrémentation i = i - 1
      }
    }
return;
}

mercredi 12 janvier 2011

OrderSend()

Les Expert Advisor passent leurs ordres d' achat ou de vente grâce à la fonction OrderSend().
Si vous avez un compte démo avec argent fictif sur Metatrader ( si vous n' en avez pas, choisissez un broker ici et ouvrez en un ), vous devez voir en bas de l' interface l' onglet trading. Cliquez dessus. Vous voyez maintenant votre balance et les ordres passés ( s' il en est ).



La fonction :
int OrderSend (string paire, int operation, double nblots, double prix, int slippage, double stoploss, double takeprofit, string comment = NULL, int numero = 0, datetime expiration = 0, color arrow = CLR_NONE)

Comme vous pouvez le constater, cette fonction a besoin de beaucoup de paramètres. Nous allons les voir un par un.

   - paire : est le nom de la paire sur lequel l' Expert Advisor doit passer un ordre. Par exemple "EURUSD", ou "EURGBP". Pour rendre les choses plus pratiques, on entre souvent pour ce paramètre la fonction Symbol(). En effet, celle-ci renvoie automatiquement la paire sur laquelle le robot est installé.

   - operation : est comme son nom l' indique l' opération à passer. Au choix : OP_Buy, OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, et OP_SELLSTOP. ( Voir cours ).

   - nblots : est le nombre de lots sur lesquels porte l' opération. ( Voir cours ).

   - prix : est le prix ! Sert pour les ordres Limit et Stop.

   - slippage : est la différence maximale de pips acceptée par le trader entre le prix souhaité et le prix auquel l' ordre est finalement exécuté.

   - stoploss et takeprofit : est le prix auquel les pertes doivent être coupées et les plus-values prises. ( Voir cours ).

   - comment : est la possibilité de laisser un commentaire sur le trade.

   - numéro : est le numéro de l' ordre passé. C' est au trader de le définir.

   - expiration : date à laquelle l' ordre prend fin. Les brokers fixent en effet une limite de durée à chaque ordre. N' entrez rien pour laisser l' ordre ouvert jusqu' à la date limite autorisée par le broker.

   - arrow : indique un point ou une flèche sur la courbe du graphique Metatrader de la paire sur laquelle l' ordre a été placé. Pas obligatoire.


Un exemple d' utilisation :

bool vrai = true;

int
start()

  {
   if (vrai == true)
    {
     vrai = false;

     OrderSend
(Symbol(), OP_BUY, 0.1, Ask, 3, Bid-15*Point, Bid+15*Point, "Premier ordre !", 1);

    }
return
;

  }

Point correspond à 1 pip.
En d' autres termes, on achète 0,1 Lot de la paire de notre choix, au prix de la demande ( à 3 pips près ), on coupe les pertes si le cours atteint le prix de l' offre moins 15 pips, on prend les bénéfices si le cours atteint le prix de l' offre + 15 pips.
L' ordre est le numéro 1, et a pour commentaire Premier ordre !.

Compilez puis exécutez le code. Au moment de lancer l' exécution, cochez la case 'Autoriser Trading en direct' sur la fenêtre qui apparaît ( comme ci-dessous ).


Que se passe t-il maintenant ?
D' abord, vous devez voir l' ordre passé et tous les détails dans votre balance de trading ( en bas de l' interface de Metatrader ). Ensuite, sur le graphique de la paire tradée, vous devez pouvoir observer trois ou quatre lignes. La droite verte ( celle du milieu ) est à la hauteur du prix d' achat. Les deux lignes rouges symbolisent les niveaux de prix du takeprofit et du stoploss. Enfin, peut-être voyez-vous aussi une ligne blanche qui suite l' indice du prix en temps réel.


Quand le trade sera clos ( une affaire de quelques minutes si le forex est volatile ), vous aurez une nouvelle balance de compte avec quelques euros en moins ou en plus. Je vous rappelle qu' un pip de 10 000 euros vaut environ 1€. Si l' ordre avait été exécuté sur un compte avec argent réel, le résultat aurait été exactement le même.


---> Leçon suivante

vendredi 7 janvier 2011

Ask et Bid

A partir de maintenant, les programmes ne vont pas agir indépendamment de tout contexte, mais au contraire prendre en compte les données en temps réel que nous fournit Metatrader.


Ask et Bid :
Pour ceux qui ne le savent pas, bid et ask sont les mots anglais pour offre et demande.
Nous allons écrire un petit programme qui nous renverra le prix de l' offre, et celui de la demande.

double start()                 // fonction start
  {                       
   double prixo = Bid;     // variable prixo = valeur de l' offre

   double prixd = Ask;     // variable prixd = valeur de la demande
   Alert(" Demande = ", prixo, "€ et offre = ", prixd, "€");
   return;                     
  }

En soi, rien de bien compliqué dans cette fonction. Mais il est primordial de bien la savoir pour comprendre la suite du cours.
Vous vous demandez sûrement : cette fonction renvoie le prix de l' offre et de la demande... mais de quelle offre et de quelle demande ??? Celle que vous voulez !
En effet, allez dans l' interface Metatrader et cliquez sur un des graphiques ( voir ci-dessous ).


Si vous n' avez pas encore compilé le code, faîtes-le.
Une fois le code compilé et le graphique sélectionné, il ne vous reste plus qu' à lancer l' Expert Advisor.
Vous verrez certainement une alerte avec les prix de l' offre et de la demande ( qui diffèrent de quelques pips : c' est le spread ).
Vous pouvez remarquer qu' une petite tête de bonhomme apparait dans le coin du tableau où l' Expert Consultant fonctionne.



---> Leçon suivante

jeudi 6 janvier 2011

Pour commencer...

Pour commencer, il vous faut choisir un broker. C' est lui qui se chargera de passer vos ordres sur lesquels il prendra une commission. Le broker doit accepter que ses clients passent des ordres via la plateforme Metatrader.

Première étape : choisir un broker.
Je vous recommande le broker YouTradeFX qui propose un compte démo illimité avec argent fictif. Le service clientèle est excellent et la sécurité assurée.
Si vous voulez passer par un autre broker, je vous invite à vous rendre dans le comparatif des brokers forex.


Deuxième étape : Ouvrir un compte démo.
Aller sur le site de votre broker favori, ouvrez votre compte démo.


Troisième étape : Télécharger et installer Metatrader
Enfin, téléchargez depuis le même site la plateforme Metatrader. Attention, certains antivirus font parfois de l' excès de zèle ( je pense entre autres à MacAfee ). Il sera peut-être nécessaire de les désactiver lors du téléchargement et de l' installation.


Dernière étape : Lancer Metatrader
Une fois le logiciel Metatrader lancé, il devrait vous demander vos login. Entrez les. Finalement, vous devriez arriver à ceci :

Le logiciel de Metatrader et son tableau de bord.




Votre compte doit apparaître dans le navigateur ( voir ci-dessus ).

---> Leçon suivante

jeudi 21 janvier 2010

Passer des ordres - Metatrader

L' effet de levier : 
L' effet de levier est le même pour tous les ordres. Il est défini par votre broker et est en général par défaut au maximum. Vous pouvez le réduire en contactant le service clientèle de votre broker.


Choix de la paire :
Dans la fenêtre Observation du marché, double-cliquez sur la paire choisie. Une nouvelle fenêtre apparaît alors.


Passer un ordre :
Il vous faut maintenant régler les détails :
   - Le volume, en fait le nombre de lots
   - Le StopLoss et le TakeProfit ( facultatif )
   - Un commentaire ( facultatif )
   - Le type d' ordre, une exécution immédiate ou un ordre différé ( ordre stop ou à cours limité )
   - Le slippage ( déviation maximale du prix côté )


Modifier un ordre :
Les ordres passés apparaissent dans l' onglet trading, tout en bas de l' interface Metatrader.


Vous pouvez modifier les paramètres d' un ordre en cliquant-droit dessus, puis 'Modifier ou annuler l' ordre'.

Une autre applications très intéressante de Metatrader est la possibilité d' associer un Trailing Stop à un ordre. Pour cela, cliquez-droit sur l' ordre, puis 'Trailing Stop'. Le minimum est de 15 pips.


Clore un ordre :
Attention, Metatrader permet le hedging. Cela signifie que vous pouvez acheter et vendre en même temps une même paire.

La seule manière de fermer un ordre est de cliquer-droit sur l' ordre, puis 'Fermer Ordre'. Ensuite, dans la fenêtre qui s' affiche, appuyez sur le bouton jaune 'prix ferme'.