Trading Systématique 게시글

Optimisez vos trades après le break-even avec cet EA sur MetaTrader 4

첨부파일
35609.zip (12.47 KB, 다운로드 0회)

Salut les traders ! Aujourd'hui, je vais vous parler d'un petit bijou d'expert advisor (EA) qui va vous aider à gérer vos positions après avoir atteint le break-even. Accrochez-vous, c'est parti !

La fonction de comptage des ordres

Le chef-d'œuvre de cet EA réside dans sa fonction de comptage des ordres :

int OrdersCounter() {
  int counter=0;
  //---
  for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS))
        if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
          // Si l'ordre a été ouvert par cet EA
          //--- Vérifie si le break-even a eu lieu
          double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();
          if(!XBreakeven) {
            counter++; // Compte la position
          }
      }
  return counter;
}

Nous ne comptons que les ordres qui n'ont PAS de stop-loss au-dessus ou égal à leur prix d'ouverture pour les achats, et en dessous pour les ventes. En gros, on compte tous les ordres qui n'ont pas atteint le break-even ou dont le trailing stop n'a pas protégé le prix d'ouverture.

double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();
          if(!XBreakeven) {
          // Si le break-even n'a pas eu lieu

Grâce à cela, nous créons un compteur qui renvoie une valeur que nous utiliserons pour limiter notre position maximale, que nous avons fixé à 1 ordre à la fois.

if(OrdersCounter()<MaximumOrders)

Donc, dès qu'un break-even a lieu, cette fonction ne le comptera pas. Dans notre exemple, avec une seule position, elle retournera zéro et boum, on ouvre une autre vente et le processus continue !

Ce serait impossible sans ma fonction de break-even :

void BreakEvenFunction() {
  //---
  for(int i=OrdersTotal()-1; i>=0; i--) {
      if(OrderSelect(i,SELECT_BY_POS))
        if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
          // Pour les achats, si le Bid est au-dessus du prix d'ouverture + pips de break-even
          double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice());
          /* Pour les achats, seulement si le StopLoss est égal ou supérieur au prix d'ouverture, vice versa pour les ventes */
          if(xHybrid) {
            bool modfy = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);
          }
      }
  }

Alors, prêt à essayer ?

연관 포스트

댓글 (0)