MetaTrader4
Optimisez vos trades après le break-even avec cet EA sur MetaTrader 4
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 ?
2021.07.13