Segnali di Trend a Swing Filtrati v3

Codice Sorgente: //@version=5

indicatore("Segnali di Trend a Swing Filtrati v3", overlay=true, max_labels_count=500)

// --- Input ---

// Parametri Chiave di Trend

atrPeriod = input.int(10, title="Lunghezza ATR di Trend", group="1. Motore di Trend")

fattore = input.float(3.0, title="Moltiplicatore di Trend", step=0.1, group="1. Motore di Trend")

// Filtri di Momentum & Combustibile

adxLength = input.int(14, title="Lunghezza ADX", group="2. Combustibile di Momentum")

adxThreshold = input.int(20, title="Soglia ADX", group="2. Combustibile di Momentum")

macdFast = input.int(12, title="MACD Veloce", group="2. Carburante Momentum")

macdSlow = input.int(26, title="MACD Lento", group="2. Carburante Momentum")

macdSignal = input.int(9, title="Segnale MACD", group="2. Carburante Momentum")

// Parametri di Uscita Dinamici

exitEmaLength = input.int(13, title="Lunghezza EMA di Uscita (Momentum in Diminuzione)", group="3. Strategia di Uscita")

minBarsHold = input.int(5, title="Bar Minimi da Mantenere Prima del TP", group="3. Strategia di Uscita")

// --- Calcoli ---

// 1. Tendenza Core

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

isUptrend = direction < 0

isDowntrend = direction > 0

// 2. Filtri di carburante Momentum

[diplus, diminus, adx] = ta.dmi(adxLength, adxLength)

[macdLine, sigLine, histLine] = ta.macd(close, macdFast, macdSlow, macdSignal)

bullishFuel = (adx > adxThreshold) e (histLine > 0)

bearishFuel = (adx > adxThreshold) e (histLine < 0)

// 3. EMA Momentum Veloce (Usato per Uscite E Rientri)

exitEma = ta.ema(close, exitEmaLength)

// --- Variabili di Stato ---

var bool inLong = false

var bool inShort = false

var int entryBar = na

var float entryPrice = na

// --- Logica di Ingresso (Aggiornata per Rientri) ---

// Trigger 1: Il primo cambio di Supertrend

longStart = ta.change(direction) < 0

shortStart = ta.change(direction) > 0

// Trigger 2: Continuazione / Re-ingresso (La tendenza è intatta, il prezzo risale sopra l'EMA veloce dopo un pullback)

longContinuation = isUptrend e ta.crossover(close, exitEma)

shortContinuation = isDowntrend e ta.crossunder(close, exitEma)

// Combina i trigger con il carburante

longCond = (longStart o longContinuation) e bullishFuel

shortCond = (shortStart o shortContinuation) e bearishFuel

// Assicurati di attivare solo se non siamo già attivamente in un'operazione

longSignal = longCond e non inLong

shortSignal = shortCond e non inShort

se longSignal

inLong := true

inShort := false

entryBar := bar_index

entryPrice := close

se shortSignal

inShort := true

inLong := false

entryBar := bar_index

entryPrice := close

// --- Logica di uscita / Prendi profitto ---

barsHeld = bar_index - entryBar

// Il momentum che diminuisce viene rilevato quando il prezzo attraversa nuovamente l'EMA a breve termine

longWaning = ta.crossunder(close, exitEma)

shortWaning = ta.crossover(close, exitEma)

// Criteri TP: Mantenuto per X barre, Attualmente in profitto, e il momentum sta diminuendo

longTP = inLong e (barsHeld >= minBarsHold) e (close > entryPrice) e longWaning

shortTP = inShort e (barsHeld >= minBarsHold) e (close < entryPrice) e shortWaning

// Criteri di Stop Loss / Reset Duro (Se la tendenza si inverte completamente senza colpire le regole TP)

longSL = inLong e ta.change(direction) > 0

shortSL = inShort e ta.change(direction) < 0

// Ripristina gli stati all'uscita in modo che lo script possa cercare un rientro

se longTP o longSL

inLong := false

se shortTP o shortSL

inShort := false

// --- Visivi ---

// Disegna segnali

plotshape(longSignal, title="Segnale di Acquisto", text="BUY", style=shape.labelup, location=location.belowbar, color=color.new(#00b300, 0), textcolor=color.white, size=size.normal)

plotshape(shortSignal, title="Segnale di Vendita", text="SELL", style=shape.labeldown, location=location.abovebar, color=color.new(#ff0000, 0), textcolor=color.white, size=size.normal)

// Disegna Prendi Profitti

plotshape(longTP, title="TP Long", text="TP", style=shape.xcross, location=location.abovebar, color=color.new(#00b300, 0), textcolor=color.white, size=size.small)

plotshape(shortTP, title="TP Short", text="TP", style=shape.xcross, location=location.belowbar, color=color.new(#ff0000, 0), textcolor=color.white, size=size.small)

$BTC $ETH #BTC #siren #SHORT📉