Buongiorno a tutti, mi sembra di aver capito che l’indicatore Zig Zag non è utilizzabile nelle trading system in quanto è un repainting. Lo Zig Zag nella foto allegata è impostato a variazione % e analizzandola si vedono i livelli di max/min nei cerchi rossi che sono consolidati, a differenza del minimo nel cerchio blu che invece non è definitivo e soggetto a variazione. Se il minimo nel cerchio blu dovesse superare il massimo precedente diventerebbe di sicuro un minimo consolidato perché superiore alla soglia % parametrizzata. Chiedo: volendo realizzare una strategia che entra o esce dal mercato in base alla rottura di questi livelli con variazione %, come è possibile identificarli? Necessiterei degli ultimi 3 massimi e 3 minimi. Per esempio, una delle logiche è simile all’ 1-2-3 di Ross, quello che mi occorre è proprio come identificare i minimi e i massimi. Grazie, spero di essere stato chiaro.
Ci sto provando ma non la salva …
Adesso sì, era un problema di browser!
Esattamente come sulla foto non si può, altrimenti sarebbe una copia dello ZigZag che non va bene.
Proverò a scrivere qualcosa.
Questo è il codice:
DEFPARAM CalculateOnLastBars = 1000
LookBack = 20
Bullish = close > open
Bearish = close < open
Massimo = highest[LookBack](high)
Minimo = lowest[LookBack](low)
IF max(high,high[1]) = Massimo AND Bullish[1] AND Bearish THEN
drawtext("●",barindex[1],high + (range[1] / 2),dialog,bold,20) coloured(25,25,112,220)
ENDIF
IF min(low,low[1]) = Minimo AND Bullish AND Bearish[1] THEN
drawtext("●",barindex[1],low - (range[1] / 2),dialog,bold,20) coloured(176,23,31,220)
ENDIF
RETURN
L’ho provato ed è più simile a un Donchian Channel che a uno Zig Zag ma credo di riuscire ad utilizzarlo in un’altra maniera, quindi va benissimo. Ti ringrazio.
Se vuoi il PUNTO proprio sulla barra del segnale basta che con DRAWTEXT usi barindex invece di barindex[1].
Questa è una versione che stampa segmenti unendo ogni punto col precedente:
DEFPARAM CalculateOnLastBars = 1000
//LookBack = 30
LookBack = max(2,min(999,LookBack)) //2 - 999
Bullish = close > open
Bearish = close < open
Massimo = highest[LookBack](high)
Minimo = lowest[LookBack](low)
IF max(high,high[1]) = Massimo AND Bullish[1] AND Bearish THEN
BarraPrec = Barra
PrezzoPrec = Prezzo
Prezzo = max(high,high[1])
Barra = BarIndex
IF Prezzo = high[1] THEN
Barra = BarIndex[1]
ENDIF
//drawtext("●",barindex[1],high + (range[1] / 2),dialog,bold,20) coloured(25,25,112,220)
DRAWSEGMENT(BarraPrec,PrezzoPrec,Barra,Prezzo) coloured(0,128,0,255)
ENDIF
IF min(low,low[1]) = Minimo AND Bullish AND Bearish[1] THEN
BarraPrec = Barra
PrezzoPrec = Prezzo
Prezzo = min(low,low[1])
Barra = BarIndex
IF Prezzo = low[1] THEN
Barra = BarIndex[1]
ENDIF
//drawtext("●",barindex[1],low - (range[1] / 2),dialog,bold,20) coloured(176,23,31,220)
DRAWSEGMENT(BarraPrec,PrezzoPrec,Barra,Prezzo) coloured(0,128,0,255)
ENDIF
RETURN
Ah, questo è tanta roba!!! Grazie mille
Eccellente Roberto, aggiungo una casella di controllo per scegliere (segmento o testo)
// Maxi and Mini Zig Zag | Indicator
// 16/05/2019 (release 1.0)
// code by robertogozzi @ www.prorealcode.com
// https://www.prorealcode.com/topic/massimi-e-minimi-consolidati-su-indicatore-zigzag/#post-98610
DefParam CalculateOnLastBars = 1000
// --- setting
//segment = 0 // choice "segment or text"
LookBack = max(2,min(999,LookBack)) // 2 - 999
Bullish = close > open
Bearish = close < open
Massimo = highest[LookBack](high)
Minimo = lowest[LookBack](low)
if max(high,high[1]) = Massimo and Bullish[1] and Bearish then
BarraPrec = Barra
PrezzoPrec = Prezzo
Prezzo = max(high,high[1])
Barra = BarIndex
if Prezzo = high[1] then
Barra = BarIndex[1]
endif
if segment = 0 then
DrawText("●",barindex[1],high+(range[1]/2),Dialog,Bold,12) coloured(10,180,0,220)
else
DrawSegment(BarraPrec,PrezzoPrec,Barra,Prezzo) coloured(10,180,0)
endif
endif
if min(low,low[1]) = Minimo and Bullish and Bearish[1] then
BarraPrec = Barra
PrezzoPrec = Prezzo
Prezzo = min(low,low[1])
if Prezzo = low[1] then
Barra = BarIndex[1]
endif
if segment = 0 then
DrawText("●",barindex[1],low-(range[1]/2),Dialog,Bold,12) coloured(180,10,0,220)
else
DrawSegment(BarraPrec,PrezzoPrec,Barra,Prezzo) coloured(180,10,0)
endif
endif
return
Bueno serata 😉