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

Aucun commentaire:

Enregistrer un commentaire