
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
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); }
Commento 0