OPEN-SOURCE SCRIPT

Asian Session Breakout

//version=6
indicator("Asian Session Breakout", overlay=true)

// Input per personalizzare l'orario della sessione asiatica
startTime = input.time(timestamp("0000-01-01 23:00 +0000"), title="Inizio sessione asiatica (UTC)")
endTime = input.time(timestamp("0000-01-01 08:00 +0000"), title="Fine sessione asiatica (UTC)")

// Variabili per calcolare massimo e minimo della sessione asiatica
var float asianHigh = na
var float asianLow = na

// Resetta massimo e minimo all'inizio della sessione
if (time >= startTime and time < endTime)
asianHigh := na
asianLow := na

// Aggiorna massimo e minimo durante la sessione asiatica
if (time >= startTime and time < endTime)
if na(asianHigh)
asianHigh := high
else
asianHigh := math.max(high, asianHigh)

if na(asianLow)
asianLow := low
else
asianLow := math.min(low, asianLow)

// Traccia i livelli di massimo e minimo
lineHigh = line.new(bar_index[1], asianHigh[1], bar_index, asianHigh, color=color.green, width=1, extend=extend.right)
lineLow = line.new(bar_index[1], asianLow[1], bar_index, asianLow, color=color.red, width=1, extend=extend.right)

// Breakout logica
longCondition = ta.crossover(close, asianHigh)
shortCondition = ta.crossunder(close, asianLow)

// Genera segnali
if (longCondition)
label.new(bar_index, high, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)
alert("Breakout rialzista: Entrata Long", alert.freq_once_per_bar)

if (shortCondition)
label.new(bar_index, low, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white)
alert("Breakout ribassista: Entrata Short", alert.freq_once_per_bar)

// Mostra i livelli di massimo e minimo
bgcolor(time >= startTime and time < endTime ? color.new(color.blue, 90) : na, title="Sessione Asiatica")

Aviso legal