MetaTrader4
Massimizzare i Trade Dopo il Break Even: Guida all'uso di un Expert Advisor per MetaTrader 4
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!
2021.07.13