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à.

extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;// Seleziona il Time Frame extern int period = 8;// Periodo DeMarker extern double lt = 0.01;// Lotti extern int sl = 100;// Stop Loss extern int tp = 100;// Take Profit extern double OB = 0.7;// Over Sold extern double OS = 0.3;// Over Bought extern bool 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|indicatore double dmrk[5]; int signal = -1;//-- 0.buy 1.sell int hold = 0; //-- ordine int ticket = 0; double lot = 0.0; int typ = -1; //-- coppia datetime 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.
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnInit() { ArrayInitialize(dmrk,0.0); //--- const double test_lot = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); if(lt < test_lot) lt = test_lot; }
Nella 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] < OS) { hold = -1;//set } else { hold = 0;//reset } if(hold == 1) { if(dmrk[0] < OB && dmrk[1] > OB) { signal = OP_SELL; } } if(hold == -1) { if(dmrk[0] > OS && dmrk[1] < OS) { signal = OP_BUY; } }
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!
Post correlati
- Dematus: Il Sistema di Trading per MetaTrader 5
- Rilevare il Venerdì della Prima Settimana del Mese: La Guida per il Giorno NFP
- EA Efficiente: Come Aggiungere la Chiusura del Venerdì per Migliorare le Performance
- MQL5 Wizard: Creare Trading Signals con Morning/Evening Stars e MFI per MetaTrader 5
- MQL5 Wizard: Strategia di Trading con Dark Cloud Cover/Piercing Line e RSI