Home Trading Sistematico Post

Massimizzare i Trade Dopo il Break Even: Guida all'uso di un Expert Advisor per MetaTrader 4

Allegato
35609.zip (12.47 KB, Scarica 0 volte)

Ciao a tutti, oggi parliamo di un argomento che interessa a molti trader: come ottimizzare i propri trade dopo aver raggiunto il break even grazie a un Expert Advisor (EA). Questo piccolo gioiello di EA ha una funzione fondamentale: il conteggio degli ordini.

Funzione OrdersCounter

int OrdersCounter() { 
   int counter=0;
   //---
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS))
         if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
          // se l'ordine è stato aperto da questo EA
          //--- se è avvenuto il break even
          double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();
            if(!XBreakeven) {
              counter++; // conta la posizione
              }
          }
   return counter;
}

Questa funzione conta solo gli ordini che non hanno uno stop loss superiore o uguale al prezzo di apertura per gli acquisti e inferiore per le vendite. In breve, stiamo contando tutti gli ordini che non sono andati in break even o che non hanno un trailing stop che protegge il prezzo di apertura.

 double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice(); 
            if(!XBreakeven) // se solo il break even e il trailing stop non sono avvenuti

Attraverso questo contatore, otteniamo un valore che utilizzeremo per limitare la nostra posizione massima, che in questo caso è impostata a 1 ordine alla volta.

   if(OrdersCounter()<MaximumOrders) 

Quindi, ogni volta che si verifica un break even, questa funzione ignorerà il conteggio, permettendo di aprire un altro ordine di vendita, e il ciclo continua.

Naturalmente, tutto ciò non sarebbe possibile senza una funzione di break even.

void BreakEvenFunction() { 
   //---
   for(int i=OrdersTotal()-1; i>=0; i--) {
      if(OrderSelect(i,SELECT_BY_POS)) {
        if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
          // per acquisti se il Bid è sopra il prezzo di apertura + pips di break even, viceversa per le vendite
          double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice());
          /* per acquisti solo se lo StopLoss è uguale o superiore al prezzo di apertura, viceversa per le vendite */
          if(xHybrid) {
            bool modfy = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);
          }
      }
  }
}

Che ne dite? Vale la pena provarlo!

Post correlati

Commento (0)