Ciao a tutti! Oggi voglio condividere con voi un Expert Advisor (EA) che ho sviluppato utilizzando l'indicatore DeMarker. È davvero semplice e potrebbe essere un'ottima aggiunta alle vostre strategie di trading. Fateci sapere cosa ne pensate dopo averlo provato!
Questo EA è progettato per lavorare su un singolo strumento. Potete impostare il timeframe, il numero di lotti, lo stop loss e il take profit direttamente nel menù delle proprietà.

externENUM_TIMEFRAMES TF = PERIOD_CURRENT;// Seleziona il Time Frameexternint period = 8;// Periodo DeMarkerexterndouble lt = 0.01;// Lottiexternint sl = 100;// Stop Lossexternint tp = 100;// Take Profitexterndouble OB = 0.7;// Over Soldexterndouble OS = 0.3;// Over Boughtexternbool OPENBAR = false;// Trading al prezzo di apertura del nuovo bar
Il segreto del mio EA è suddividere le variabili in tre parti:
- Dati | timeframe
- Ordine
- Coppia
//+------------------------------------------------------------------+//-- timeframe|indicatoredouble dmrk[5]; int signal = -1;//-- 0.buy 1.sellint hold = 0; //-- ordineint ticket = 0; double lot = 0.0; int typ = -1; //-- coppiadatetime t1 = 0; bool newbar = false; bool entry = false; //+------------------------------------------------------------------+
All'interno della funzione OnInit(), inizializzo l'array dell'indicatore DeMarker e verifico la dimensione minima dei lotti necessari per il broker specifico.
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnInit() { ArrayInitialize(dmrk,0.0); //--- constdouble test_lot = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); if(ltNella funzione OnTick(), calcolo l'indicatore e determino i segnali di acquisto e vendita.
//--------------------------------------------------------------------------- signal = -1; //---------------------------------------------------------------------------//---calcolo for(int i = 0; i ArraySize(dmrk); i++) { dmrk[i] = iDeMarker(Symbol(), TF, period, i); } //--- if(dmrk[1] > OB) { hold = 1;//set } else if(dmrk[1] 1;//set } else { hold = 0;//reset } if(hold == 1) { if(dmrk[0] 1] > OB) { signal = OP_SELL; } } if(hold == -1) { if(dmrk[0] > OS && dmrk[1]Per aprire un segnale di acquisto o vendita...
//--------------------------------------------------------------------------- if(signal != -1) if(newbar == true) if(entry == false)//porta aperta { //--- entry = true;//set //--- if(signal == OP_BUY) { ticket = OrderSend(Symbol(), OP_BUY, lt, Ask, (int)((Ask-Bid)/Point, sl >0?Bid-sl*Point:0.0, tp >0?Bid+tp*Point:0.0, EAName + ":signal= " + IntegerToString(signal) + ":hold= " + IntegerToString(hold), EANumber, 0, clrBlue); signal = -1; //hold =0; }//reset }//reset signal }Per la chiusura...
if(entry == true) // chiusura { if(OrderSelect(ticket, SELECT_BY_TICKET)) { if(OrderCloseTime() == 0)//-- ordine attivo { /* da fare condizione per chiudere */ //entry = false; } //else if(OrderCloseTime() != 0)//-- chiudi per 1. manuale 2. sl/tp 3. ea { entry = false;//reset entry } } }
In conclusione, questo EA può sembrare semplice, ma con le giuste impostazioni e un po' di pratica, potrebbe diventare un prezioso alleato nel vostro trading. Provate e fatemi sapere come va!



Commento 0