calcolare il massimo e minimo di una sessione

Calcolare il Massimo e il Minimo di una Sessione con Tradingview

A volte può essere utile tenere traccia dei movimenti dei prezzi o di un indicatore durante un o specifico intervallo di tempo. Un classico esempio  è il monitoraggio del highlow all’interno di una sessione (come la sessione asiatica nel Forex) e quindi  usare questi livelli per impostare un breakout. In questo articolo, descriviamo come calcolare il massimo e il minimo di una sessione custom con Tradingview. In particolare vediamo un esempio alternativo, calcolando il high/lowdi un EMA (media mobile esponenziale) invece di concentrarci esclusivamente sui dati OHLC. Dato che in questo articolo non descriviamo una strategia,  vediamo direttamente il codice.

Calcolare il massimo e il minimo di una sessione

				
					//@version=3
study("Session EMA High Low", overlay=true)
my_session = input("1200-1300", type=session, title='Custom Session')
ma_len = input(7, minval=1, title='EMA Length')

// Calcolo l'EMA
ema1 = ema(close, ma_len)

// Determinare se siamo una sessione
// ----------------------------------
in_session = time(period, my_session)
is_new_session(res, sess) =>
    t = time(res, sess)
    na(t[1]) and not na(t) or t[1] < t
    
new_session = is_new_session("1440", my_session)

// Calcolo dei High/Low della EMA per la sessione
ema_high = na
ema_low = na

ema_high := new_session ? ema1 : in_session ? max(ema1, ema_high[1]) : ema_high[1]
ema_low := new_session ? ema1 :  in_session ? min(ema1,ema_low[1]) : ema_low[1]

plot(ema1, linewidth=2, color=orange, title='EMA')
plot(ema_high, color=green, style=circles, title='EMA High')
plot(ema_low, color=red, style=circles, title='EMA Low')
				
			

Commento al codice

Per prima cosa, creiamo un paio di input per impostare il periodo della ema1 e la durata della sessione custom. Nel codice il parametro di default prevede una finestra tra le 12 e 13. Successivamente, tracciamo quando entriamo e siamo all’interno della sessione. Il wiki di Tradingview fornisce alcuni buoni esempi su queste modalità e il codice è tratto da questo wiki consultabile in questo link. Dobbiamo sapere quando inizia la sessione per poter impostare il valore iniziale. All’inizio della sessione gli highlow della ema1 sono uguali quindi impostiamo i valori di ema_highema_low pari a ema1. Successivamente, verifichiamo se siamo ancora all’interno della sessione. In caso affermativo memorizziamo il valore maggiore tra high e l’ultimo ema_high il valore minore tra il low e l’ultimo ema_low. Infine, se non siamo all’interno della sessione continuiamo ad usare lo stesso valore della barra precedente. Impostiamo tutti questi valori su  ema_highema_low tramite un operatore condizionale ternario

Approfondiamo ora la funzione che abbiamo implementato per rilevare una nuova sessione, che può sembrare complessa:

				
					
is_new_session(res, sess) =>
    t = time(res, sess)
    na(t[1]) and not na(t) or t[1] < t
    
				
			

In questa funzione usiamo il metodo time() per verificare se siamo all’interno di una sessione e quindi eseguire un semplice controllo. Se la barra precedente non era all’interno della sessione ma la nuova barra è in una sessione, allora abbiamo una nuova sessione! In effetti, l’intera funzione potrebbe essere riscritta per usare semplicemente la  variabile in_session.

				
					new_session = in_session and not in_session[1]
    
				
			

Funziona allo stesso modo ed è molto più intuitivo. Tuttavia, la funzione del wiki è stata lasciata nel codice di esempio per poterla descrivere e spiegarla.

Il grafico

Una volta caricato il codice, otteniamo un grafico simile al seguente:

Tradingview-Massimo-Minimo-Sessione-Grafico

Analizzando il grafico vediamo il massimo e il minimo che si adattano al movimento dell’EMA all’interno della sessione. Dopo la fine della sessione, le linee rimangono fisse fino al giorno successivo. Ora è il momento di essere creativi. Possiamo iniziare a calcolare e tracciare alcuni valori a cui normalmente  non pensiamo. Inoltre, lo stesso approccio potrebbe essere usata per tenere traccia dei segnali di ingresso o l’ultimo swing  di massimo o qualsiasi altra cosa ci venga in mente!

Codice completo

In questo articolo abbiamo descritto come calcolare il massimo e il minimo di una sessione custom con Tradingview. Per il codice completo riportato in questo articolo, si può consultare il seguente repository di github:
https://github.com/datatrading-info/TradingView

Gli altri articoli di questa serie

Benvenuto su DataTrading!

Sono Gianluca, ingegnere software e data scientist. Sono appassionato di coding, finanza e trading. Leggi la mia storia.

Ho creato DataTrading per aiutare le altre persone ad utilizzare nuovi approcci e nuovi strumenti, ed applicarli correttamente al mondo del trading.

DataTrading vuole essere un punto di ritrovo per scambiare esperienze, opinioni ed idee.

SCRIVIMI SU TELEGRAM

Per informazioni, suggerimenti, collaborazioni...

Torna in alto
Scroll to Top