OPEN-SOURCE SCRIPT

Ultimate Trend Indicator with High Accuracy

//version=6
indicator("Ultimate Trend Indicator with High Accuracy", overlay=true)

// تنظیمات پارامترها
maShortLength = input.int(50, title="Short Moving Average Length")
maLongLength = input.int(200, title="Long Moving Average Length")
maSource = input.source(close, title="MA Source")

rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")

macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalLength = input.int(9, title="MACD Signal Length")

atrLength = input.int(14, title="ATR Length")
pmaxATRLength = input.int(10, title="PMax ATR Length")
pmaxMultiplier = input.float(3.0, title="PMax ATR Multiplier")
pmaxMAType = input.string("EMA", title="PMax Moving Average Type", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])

compressionThreshold = input.float(0.5, title="Compression Threshold") // حد فشردگی
volumeFilter = input.float(1.5, title="Volume Filter Multiplier") // فیلتر حجم معاملات

// محاسبه اندیکاتورها
maShort = ta.sma(maSource, maShortLength)
maLong = ta.sma(maSource, maLongLength)
rsi = ta.rsi(close, rsiLength)
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
atr = ta.atr(atrLength)
volumeSMA = ta.sma(volume, 20)

// تشخیص فشردگی خطوط
maCompression = math.abs(maShort - maLong) < compressionThreshold
macdCompression = math.abs(macdLine - signalLine) < compressionThreshold

// PMax
getMA(src, length, type) =>
if type == "SMA"
ta.sma(src, length)
else if type == "EMA"
ta.ema(src, length)
else if type == "WMA"
ta.wma(src, length)
else if type == "TMA"
ta.sma(ta.sma(src, math.ceil(length / 2)), math.floor(length / 2) + 1)
else
na

pmaxMA = getMA(close, pmaxATRLength, pmaxMAType)
longStop = pmaxMA - pmaxMultiplier * atr
shortStop = pmaxMA + pmaxMultiplier * atr
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and pmaxMA > shortStop[1] ? 1 : dir == 1 and pmaxMA < longStop[1] ? -1 : dir
pmax = dir == 1 ? longStop : shortStop

// تشخیص واگرایی
rsiBullishDivergence = ta.valuewhen(ta.crossover(rsi, rsiOversold), close, 0) > ta.valuewhen(ta.crossover(rsi, rsiOversold), close, 1) and close < close[1]
rsiBearishDivergence = ta.valuewhen(ta.crossunder(rsi, rsiOverbought), close, 0) < ta.valuewhen(ta.crossunder(rsi, rsiOverbought), close, 1) and close > close[1]

// تشخیص شکست سطوح کلیدی
breakoutUp = close > ta.highest(high, 20) // شکست مقاومت
breakoutDown = close < ta.lowest(low, 20) // شکست حمایت

// شرایط تشخیص شروع روند صعودی و نزولی با فیلترهای بیشتر
startUptrend = (maCompression and macdCompression and rsi > 50 and close > pmaxMA and volume > volumeSMA * volumeFilter and close > maShort and close > maLong) or (rsiBullishDivergence and breakoutUp)
startDowntrend = (maCompression and macdCompression and rsi < 50 and close < pmaxMA and volume > volumeSMA * volumeFilter and close < maShort and close < maLong) or (rsiBearishDivergence and breakoutDown)

// نمایش برچسب‌ها فقط در شرایط قوی
plotshape(series=startUptrend and not startUptrend[1], title="Buy Signal", location=location.belowbar, color=color.new(color.green, 0), style=shape.labelup, text="خرید", textcolor=color.white, size=size.small)
plotshape(series=startDowntrend and not startDowntrend[1], title="Sell Signal", location=location.abovebar, color=color.new(color.red, 0), style=shape.labeldown, text="فروش", textcolor=color.white, size=size.small)

// نمایش سطوح PMax و میانگین‌های متحرک
plot(pmax, color=color.orange, title="PMax", linewidth=2)
plot(maShort, color=color.blue, title="Short MA", linewidth=2)
plot(maLong, color=color.red, title="Long MA", linewidth=2)
Bands and ChannelsBreadth IndicatorsCandlestick analysis

สคริปต์โอเพนซอร์ซ

ด้วยเจตนารมณ์หลักของ TradingView ผู้เขียนสคริปต์นี้ได้เผยแพร่เป็นโอเพนซอร์ส เพื่อให้เทรดเดอร์สามารถเข้าใจและตรวจสอบได้ ต้องขอบคุณผู้เขียน! ที่ให้คุณใช้ได้ฟรี แต่การนำโค้ดนี้ไปใช้ในการเผยแพร่ซ้ำจะต้องอยู่ภายใต้ กฎระเบียบการใช้งาน คุณสามารถตั้งเป็นรายการโปรดเพื่อใช้บนชาร์ตได้

ต้องการที่จะใช้สคริปต์นี้บนชาร์ตใช่ไหม?

คำจำกัดสิทธิ์ความรับผิดชอบ