OPEN-SOURCE SCRIPT

AD Pro

461
//version=5
indicator("AD Pro", overlay=true)

// === Inputs
atrLen = input.int(14, "ATR Length")
factor = input.float(0.7, "Factor")
slMultiplier = input.float(2.0, "SL Multiplier")

// Volatility Filter Input
atrFilterStrength = input.float(1.0, "Volatility Threshold (x Avg ATR)", step=0.1, minval=0.1)

// Min % Price Change Filter
enableMinMove = input.bool(true, "Enable Min % Price Change Filter")
lookbackBars = input.int(20, "Lookback Bars")
minMovePct = input.float(0.005, "Min % Price Change", step=0.001, minval=0)

// TP Buy colors
tp1BuyColor = input.color(color.lime, "TP1 Buy Color")
tp2BuyColor = input.color(color.green, "TP2 Buy Color")
tp3BuyColor = input.color(color.teal, "TP3 Buy Color")

// TP Sell colors
tp1SellColor = input.color(color.fuchsia, "TP1 Sell Color")
tp2SellColor = input.color(color.red, "TP2 Sell Color")
tp3SellColor = input.color(color.maroon, "TP3 Sell Color")

// SL colors
slBuyColor = input.color(color.blue, "SL Buy Color")
slSellColor = input.color(color.blue, "SL Sell Color")

// === Indicator Calculations
atr = ta.atr(atrLen)
avgATR = ta.sma(atr, 50)
atrCondition = atr > avgATR * atrFilterStrength

priceChange = math.abs(close - close[lookbackBars]) / close[lookbackBars]
priceMoveOK = priceChange > minMovePct
priceChangeCondition = not enableMinMove or priceMoveOK

volatilityOK = atrCondition and priceChangeCondition

// === UT Bot Logic
src = close
var float trailPrice = na
var bool dirLong = true

longStop = src - factor * atr
shortStop = src + factor * atr

if na(trailPrice)
trailPrice := longStop
dirLong := true
else
if dirLong
trailPrice := math.max(trailPrice, longStop)
dirLong := src > trailPrice
else
trailPrice := math.min(trailPrice, shortStop)
dirLong := src > trailPrice

rawBuy = dirLong and not dirLong[1]
rawSell = not dirLong and dirLong[1]

// Apply Volatility Filter
buySignal = rawBuy and volatilityOK
sellSignal = rawSell and volatilityOK

// === Entry & Label Storage
var float entryPrice = na
var bool lastSignalIsBuy = na

var label tp1Lbl = na
var label tp2Lbl = na
var label tp3Lbl = na
var label slLbl = na

var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var line slLine = na

if buySignal or sellSignal
if not na(tp1Lbl)
label.delete(tp1Lbl)
if not na(tp2Lbl)
label.delete(tp2Lbl)
if not na(tp3Lbl)
label.delete(tp3Lbl)
if not na(slLbl)
label.delete(slLbl)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)

entryPrice := close
lastSignalIsBuy := buySignal

tp1 = entryPrice + (buySignal ? 1 : -1) * atr
tp2 = entryPrice + (buySignal ? 2 : -2) * atr
tp3 = entryPrice + (buySignal ? 3 : -3) * atr
sl = entryPrice - (buySignal ? 1 : -1) * factor * atr * slMultiplier

tp1Lbl := label.new(bar_index, tp1, "TP1\n" + str.tostring(tp1, format.mintick),
style=label.style_label_right,
color=buySignal ? tp1BuyColor : tp1SellColor,
textcolor=color.black)

tp2Lbl := label.new(bar_index, tp2, "TP2\n" + str.tostring(tp2, format.mintick),
style=label.style_label_right,
color=buySignal ? tp2BuyColor : tp2SellColor,
textcolor=color.white)

tp3Lbl := label.new(bar_index, tp3, "TP3\n" + str.tostring(tp3, format.mintick),
style=label.style_label_right,
color=buySignal ? tp3BuyColor : tp3SellColor,
textcolor=color.white)

slLbl := label.new(bar_index, sl, "SL\n" + str.tostring(sl, format.mintick),
style=label.style_label_right,
color=buySignal ? slBuyColor : slSellColor,
textcolor=color.white)

tp1Line := line.new(bar_index, tp1, bar_index + 1, tp1,
color=buySignal ? tp1BuyColor : tp1SellColor, style=line.style_dashed)
tp2Line := line.new(bar_index, tp2, bar_index + 1, tp2,
color=buySignal ? tp2BuyColor : tp2SellColor, style=line.style_dashed)
tp3Line := line.new(bar_index, tp3, bar_index + 1, tp3,
color=buySignal ? tp3BuyColor : tp3SellColor, style=line.style_dashed)
slLine := line.new(bar_index, sl, bar_index + 1, sl,
color=buySignal ? slBuyColor : slSellColor, style=line.style_dashed)

// === Plot Signals
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// === Alerts
alertcondition(buySignal, title="Buy Alert", message="Buy Signal!")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal!")

Penafian

Maklumat dan penerbitan adalah tidak dimaksudkan untuk menjadi, dan tidak membentuk, nasihat untuk kewangan, pelaburan, perdagangan dan jenis-jenis lain atau cadangan yang dibekalkan atau disahkan oleh TradingView. Baca dengan lebih lanjut di Terma Penggunaan.