individuare massimi e minimi con tradingview

Individuare Massimi e Minimi con Tradingview

In questo articolo descriviamo come usare le funzioni highestbars() e lowestbars() per individuare massimi e  minimi con Tradingview ed applicarli alle strategie di trading algoritmico. Approfondiamo quindi la logica di queste funzioni, il loro output e come possono essere usate.

La logica delle funzioni

Le funzioni highestbars() e lowestbars() restituiscono il numero di barre dall’ultima barra fino al highest highlowest low dentro un determinato intervallo di tempo. Le funzioni restituiscono un numero negativo che si riferisce all’offset della posizione della barra rispetto all’ultima.

Ecco un estratto dalla documentazione ufficiale per highestbars():

				
					highestbars
Highest value offset for a given number of bars back.
    highestbars(source, length) → series[integer]
    highestbars(length) → series[integer]

RETURNS
Offset to the highest bars
				
			

Poiché gli offset sono usate solamente per i grafici,  lo scopo originale di queste funzioni era probabilmente per l’uso all’interno di una delle tante  funzioni plot(). Inoltre, possiamo escludere l’indicizzazione come caso d’uso principale perché se proviamo a eseguire l’indicizzazione  con un numero negativo, riceviamo un errore. Come con qualsiasi strumento, possiamo essere creativi e utilizzarlo per scopi dove non era originariamente previsto. Ad esempio, vedremo come usarlo per l’indicizzazione in uno dei codice descritti seguito  tramite una semplice trasformazione dell’output in un numero positivo.

Nota: In tutti i seguenti esempi usiamo solamente la funzione highestbars(). La funzione lowestbars() lavora esattamente allo stesso modo con la sola differenza che conteggia dal lowest low.

Individuare massimi e  minimi con Tradingview

Vediamo come visualizzare il grafico dell’output di un indicatore per avere un’idea dei valori che produce la funzione.

				
					//@version=3
study("RSI Highestbars")

rsi = rsi(close, 14)
hb = highestbars(rsi, 20)

plot(hb, color=purple)
				
			

Nel codice precedente calcoliamo l’offset della barra con il valore RSI più alto per le ultime 20 barre.  Abbiamo molte aree dove possiamo prevedere dei miglioramenti dato che non è necessario usarlo semplicemente con i dati dei prezzi dal grafico a candele. Proviamo ad inserire diversi dati series come sorgente.

Quando eseguiamo il codice, notiamo alcune cose:

Tradingview-highestbars-simple-output

Esempio uno: grafico

Vediamo come funziona l’output di base, possiamo passare all’esplorazione di diversi casi d’uso e non c’è caso migliore per iniziare che quello per cui la funzione era destinata! In questo esempio usiamo offset insieme a show_last per evidenziare il massimo più recente sul grafico. Tramite il parametro show_last evidenziamo il massimo più recente.

				
					//@version=3
study("Highestbars - Use Case 1")

rsi = rsi(close, 7)
hb = highestbars(rsi, 20)
plot(rsi)

// Show most recent high
bgcolor(red, offset=hb, show_last=1, title='Most Recent High')
				
			

Nel seguente grafico vediamo come il massimo più recente dell’RSI è evidenziato con uno sfondo rosso:

individuare i massimi e minimi con tradingview

Esempio due: looping

Il secondo esempio è leggermente diverso. Usiamo l’output per scorrere e analizzare tutte le barre dal momento in cui abbiamo l’highest high per prendere una decisione di trading. Durante il ciclo, effettuiamo il conteggio di tutte le barre rialziste e ribassiste sul grafico.

				
					//@version=3
study("Highest Bars - Use Case Two")

rsi = rsi(close, 7)
hb = highestbars(rsi, 20)
plot(rsi)

redbars = 0
greenbars = 0
// bisogna usare il meno '-' per convertire in un numero positivo
for i = 0 to -hb
    greenbars:= close[i] > open[i] ?  greenbars + 1 : greenbars
    redbars:= close[i] < open[i] ?  redbars + 1 : redbars

plot(redbars, style=columns, color=red, transp=70)
plot(greenbars, style=columns, color=green, transp=70)
				
			

Questo esempio è un po’ più complesso. Prevediamo di  cambiare il valore restituito da highestbars() in un valore assoluto, cioè passare da negativo a positivo. Solo con un valore positivo possiamo usare correttamente l’indicizzazione. A tale scopo possiamo usare la funzione abs() o, come nell’esempio, mettere un -segno davanti alla variabile. Quindi scorriamo  l’intervallo contando se la barra si è chiusa al rialzo o al ribasso.

Posizionando questo script sui grafici otteniamo  quanto segue:

individuare i massimi e minimi con tradingview

Esempio tre: ritracciamenti

Nell’esempio finale, usiamo la funzione  highestbars() per calcolare quanto il prezzo ha ritracciato dal massimo più recente. Questo potrebbe essere utile per attivare entrate proprio su alcuni livelli di Fibonacci.

L’esempio può essere replicato completamente  usando anche la funzione highest(). È solo uno dei tanti casi dove non esiste una sola risposta corretta. La cosa  importante è usare gli strumenti con cui ci sentiamo a nostro agio e ci consentono di raggiungere l’obiettivo.

				
					//@version=3
study("Highest Bars - Use Case Three")

rsi = rsi(close, 7)
hb = highestbars(rsi, 20)
plot(rsi)

// Mostra la percentuale di ritracciamento dal massimo
// E' sempre 0 o negativo per misura la distanza dal punto di massimo
diff = ((rsi - rsi[-hb]) / rsi[-hb]) * 100
plot(diff, color=black, title='RSI Retracment')

// Possiamo usare anche higest()
diff_alt = ((rsi - highest(rsi, 20)) / highest(rsi, 20) ) * 100
plot(diff_alt, color=black, title='RSI Retracment - Highest()')
				
			

Come possiamo vedere nel codice, abbiamo implementato lo stesso esempio sia con la funzione  highestbars() che con highest(). Notiamo che nel grafico le due linee producono esattamente lo stesso valore.

individuare i massimi e minimi con tradingview

Nota: Nell’immagine la linea di ritracciamento è sempre zero o inferiore perché non possiamo mai essere al di sopra del massimo!

Codice completo

In questo articolo abbiamo descritto come individuare massimi e  minimi con Tradingview per il trading algoritmico. Per il codice completo riportato in questo articolo, si può consultare il seguente repository di github:
https://github.com/datatrading-info/TradingView

Torna in alto
Scroll to Top