Home Trading Sistematico Post

EA Semplice con Indicatore DeMarker: Guida per MetaTrader 4

Allegato
32418.zip (1.46 KB, Scarica 0 volte)

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

Commento (0)