Template Indicator per Divergenze su MetaTrader 4: Guida Completa

Mike 2024.03.10 23:41 10 0 0
Allegato

DivEurusd

Come funziona il template?

Questo indicatore offre un template da utilizzare per tracciare le divergenze basate sull'oscillatore che preferisci.

Puoi scegliere tra diversi oscillatori (come CCI, RSI o anche un tuo indicatore personalizzato) modificando questa parte del codice:

   /////////////////////////////////////////////
   //Carica i dati dell'indicatore nel buffer
   //Puoi facilmente sostituire RSI con qualsiasi indicatore tu voglia
   int BARS=MathMax(rates_total-IndicatorCounted()-pivots_period,1);
   for(int i=BARS;i>=0;i--)
   {
      indicatorBuffer[i]=iRSI(_Symbol, PERIOD_CURRENT, 14, PRICE_CLOSE, i);
   }
   //Fine della sezione di caricamento dell'indicatore
   /////////////////////////////////////////////


Buffer dei segnali

Questo indicatore ha quattro buffer differenti per tenere traccia dei segnali generati. Si ha un segnale ogni volta che il buffer corrispondente contiene un valore non vuoto.
   SetIndexBuffer(3,bull_reg_divBuffer);
   SetIndexBuffer(4,bear_reg_divBuffer);
   SetIndexBuffer(5,bull_hid_divBuffer);
   SetIndexBuffer(6,bear_hid_divBuffer);


Sezione degli input

input int pivots_period=5; //periodo per trovare i pivot degli indicatori
input int alert_confirm_candles=1; //numero di candele per conferma (0=disabilita avviso)

Trovare massimi pivot e minimi pivot nel indicatorBuffer dipende dall'input pivots_period. Maggiore è il valore scelto, più ampie saranno le oscillazioni cercate per possibili divergenze.

Un altro input è alert_confirm_candles, che definisce quante barre aspettare per la conferma di un segnale. Gli indicatori di divergenza tendono ad essere ritardati e possono generare molti falsi segnali. Scegliendo un valore maggiore, il sistema aspetterà di più, riducendo il numero di falsi segnali. È un compromesso tra segnali tempestivi e segnali confermati.

Generalmente, non è permesso impostare pivots_period a un valore < 2.


Problema di repaint

Gli indicatori che si basano sui calcoli dei pivot devono attendere fino a pivots_period per ottenere la conferma dell'ultimo massimo/minimo. Pertanto, questo indicatore deve ripetere i segnali fino a pivots_period nel passato.

   BARS=MathMax(rates_total-IndicatorCounted()-pivots_period,pivots_period);
   for(int i=BARS;i>=0;i--)
   {
      PHBuffer[i]=pivothigh(indicatorBuffer, pivots_period, pivots_period, i);
      PLBuffer[i]=pivotlow(indicatorBuffer, pivots_period, pivots_period, i);
      bull_reg_divBuffer[i]=BullRegDiv(i);
      bear_reg_divBuffer[i]=BearRegDiv(i);
      bull_hid_divBuffer[i]=BullHidDiv(i);
      bear_hid_divBuffer[i]=BearHidDiv(i);
   }
    Elenco
    Commento 0