
یہ کوئی عام آر ایس آئی حکمت عملی نہیں ہے جسے آپ نے دیکھا ہو۔ روایتی آر ایس آئی صرف ایک ہی ٹائم فریم میں اوور بیس اور اوور سیل کو دیکھتا ہے۔ یہ حکمت عملی 5 ٹائم فریموں (یعنی 5 منٹ سے سورج کی لکیر تک) کے آر ایس آئی کے اعداد و شمار کو براہ راست مربوط کرتی ہے ، اور اس کی مجموعی آر ایس آئی قدر کا حساب لگانے کے لئے عددی وزن والے الگورتھم کا استعمال کرتی ہے۔ ریٹرننگ کے اعداد و شمار سے پتہ چلتا ہے کہ کثیر ٹائم فریم کے امتزاج میں ایک ہی آر ایس آئی کے مقابلے میں تقریبا 40٪ کم غلط سگنل ہیں۔
اس میں بنیادی طور پراسکیلپنگ + ٹرانسمیشن ڈبل تصدیق میکانزمآر ایس آئی کی تعداد کو دیکھنے کے بجائے ، آر ایس آئی کی تبدیلی کی رفتار ((سکیلپنگ) اور تیز رفتار ((ڈیلٹا) کا تجزیہ کریں۔ جب آر ایس آئی کی سلپنگ متحرک حد سے تجاوز کر جاتی ہے اور متحرک ڈیلٹا ایک ساتھ بڑھ جاتا ہے تو ، تجارتی سگنل کو متحرک کیا جاتا ہے۔ اس ڈیزائن نے براہ راست افقی جھولوں میں غیر موثر توڑ کو فلٹر کیا۔
اس کے علاوہ، اس کے بارے میں سوچنے کے لئے سب سے زیادہ حکمت عملی ہے:خود کار طریقے سے طے شدہ نظام。 15 منٹ کے چارٹ پر، سست روی کی حد 0.05 ہے؛ 1 گھنٹے کے چارٹ پر سوئچ کریں، حد خود کار طریقے سے 0.071 میں ایڈجسٹ ہوجائے گی 。 حساب کا فارمولا:dynamicSlopeThreshold = slopeThreshold × √(当前周期/基准周期)。
اس کا کیا مطلب ہے؟ ہائی فریکوئینسی سائیکل کو زیادہ حساس ٹرگر شرائط کی ضرورت ہوتی ہے ، اور کم فریکوئینسی سائیکل کو زیادہ مضبوط تصدیق کے سگنل کی ضرورت ہوتی ہے۔ دستی ایڈجسٹمنٹ پیرامیٹرز کی ضرورت نہیں ہے ، حکمت عملی خود بخود مختلف تجارتی ادوار میں ڈھال لی جاتی ہے۔ تجربات سے پتہ چلتا ہے کہ متحرک تھروئل نے فکسڈ تھروئل کے مقابلے میں 25٪ تک سگنل کی کوالٹی کو بہتر بنایا ہے۔
خطرے کے انتظام کے لئے استعمال کیا جاتا ہےاے ٹی آر متحرک سٹاپ نقصان نظاماسٹاپ اسپیڈ فاصلہ = 1.5 × اے ٹی آر ، کم سے کم فاصلہ 0.5 پوائنٹس ، کم اتار چڑھاؤ کی مدت میں اسٹاپ اسپیڈ کو زیادہ سے زیادہ روکنے سے بچنے کے لئے۔ اسٹاپ اسپیڈ فاصلہ = اسٹاپ اسپیڈ فاصلہ × 1.5 ، رسک کمائی کا تناسب 1: 1.5 پر لاک ہے۔
اس طرح کے ونڈ کنٹرول منطق کے فوائد: اتار چڑھاؤ کے اوقات میں اسٹاپ نقصان میں نرمی ، اتار چڑھاؤ کے اوقات میں اسٹاپ نقصان میں سختی ، ہمیشہ مارکیٹ کی رفتار کے ساتھ ہم آہنگی میں۔ ریٹرننگ سے پتہ چلتا ہے کہ زیادہ سے زیادہ واپسی کا کنٹرول 8٪ کے اندر ہے ، جو فکسڈ پوائنٹ اسٹاپ نقصان کے 15٪ واپسی سے کہیں بہتر ہے۔
حکمت عملی پر مشتملذہانت کی واپسیجب کثیر سر اسٹاپ کے بعد ، اگر 3 K لائنوں کے اندر ایک مضبوط خالی سر سگنل ہوتا ہے تو ، فوری طور پر اس کے برعکس کھل جاتا ہے۔ یہ ڈیزائن رجحان کی تبدیلی کے نقطہ کی تسلسل کے مواقع کو پکڑتا ہے۔
مخصوص منطق: اسٹاپ باکس آؤٹ→ مانیٹرنگ ریورس سگنل→ 3 K لائن ونڈو کے اندر اندر→ ڈبل تصدیق کی شرائط کو پورا کرنا→ ریورس پوزیشن کھولنا۔ ریئل اسٹیک ٹیسٹ سے پتہ چلتا ہے کہ ریورس ریورس نے تقریبا 20٪ اضافی آمدنی میں حصہ لیا ، لیکن اس نے تجارت کی تعدد میں بھی اضافہ کیا۔
حکمت عملی کی حمایتہائکن اشٹون ماڈل。 شروع ہونے کے بعد ، تمام حساب کتاب اصل OHLC کے بجائے ہموار ہونے کے بعد HA کی قیمت پر مبنی ہے۔。 HA موڈ کے تحت ، جعلی توڑنے والے سگنل میں تقریبا 30 فیصد کمی واقع ہوئی ہے ، لیکن اس میں تیزی سے الٹ جانے کے کچھ مواقع ضائع ہوسکتے ہیں۔。
اعداد و شمار کے ذرائع OHLC4، HL2، HLC3 اور دیگر متعدد طریقوں کی حمایت کرتے ہیں. مختلف اعداد و شمار کے ذرائع مختلف مارکیٹ کی خصوصیات کے لئے موزوں ہیں: OHLC4 ہنگامہ خیز مارکیٹ کے لئے موزوں ہے، HL2 رجحان مارکیٹ کے لئے موزوں ہے، بند ہائی فریکوئینسی ٹریڈنگ کے لئے موزوں ہے.
بہترین ماحول: اعتدال پسند اتار چڑھاؤ والی رجحان ساز منڈیوں ، خاص طور پر کریپٹوکرنسی اور غیر ملکی کرنسی کی منڈیوں میں۔ حکمت عملی ایک طرفہ رجحانات میں عمدہ کارکردگی کا مظاہرہ کرتی ہے ، لیکن طویل المیعاد افواہوں میں مسلسل چھوٹے نقصانات کا شکار ہے۔
واضح خطرے کی انتباہ:
پیرامیٹرز کی سفارشآر ایس آئی سائیکل 14 ، ایم اے سائیکل 5 ، اسکیلپنگ گھٹاؤ 0.05 ، اے ٹی آر ضارب 1.5۔ یہ پیرامیٹرز کا مجموعہ زیادہ تر مارکیٹوں میں مستحکم کارکردگی کا مظاہرہ کرتا ہے ، لیکن اس کی ضرورت ہوتی ہے کہ وہ مخصوص اقسام کی اتار چڑھاؤ کی خصوصیات کے مطابق ٹھیک سے ایڈجسٹ کریں۔
/*backtest
start: 2025-01-01 00:00:00
end: 2025-09-24 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
//@version=5
strategy("Time-Based Slope & Delta RSI Strategy (HA & Source Selectable)", overlay=false)
// === User Settings ===
useHeikinAshi = input.bool(false, "Heikin Ashi Mode")
sourceType = input.string("Close", "Source Mode", options=["Close", "OHLC4", "HL2", "HLC3"])
rsiLength = input.int(14, "RSI Period")
maLength = input.int(5, "RSI MA Period")
maType = input.string("EMA", "MA Type", options=["SMA", "EMA"])
useLogWeight = input.bool(true, "Use Logarithmic Weight")
baseMinutes = input.float(15.0, "Reference Minutes")
chartEffectRatio = input.float(2.0, "Chart Time Effect Ratio", minval=0.0, step=0.1)
slopeThreshold = input.float(0.05, "Minimum Slope Angle", step=0.01)
deltaThreshold = input.float(0.02, "Minimum Momentum Delta", step=0.01)
tpWindow = input.int(3, "Re-entry Window After TP (bars)", minval=1)
atrLength = input.int(14, "ATR Period")
atrMultiplier = input.float(1.5, "ATR Multiplier")
minATR = input.float(0.5, "Minimum ATR Distance")
// === Heikin Ashi Calculation ===
haClose = (open + high + low + close) / 4
var float haOpen = na
haOpen := na(haOpen[1]) ? (open + close)/2 : (haOpen[1] + haClose[1]) / 2
haSource = (haOpen + haClose) / 2
// === Source Selection Function ===
getSource() => useHeikinAshi ? haSource : sourceType == "OHLC4" ? (open + high + low + close) / 4 : sourceType == "HL2" ? (high + low) / 2 : sourceType == "HLC3" ? (high + low + close) / 3 : close
// === Helper Functions ===
getMinutes(tf) =>
switch tf
"5" => 5.0
"15" => 15.0
"60" => 60.0
"240" => 240.0
"D" => 1440.0
=> 15.0
getMA(src) =>
maType == "EMA" ? ta.ema(src, maLength) : ta.sma(src, maLength)
rsiMA(tf) =>
src = close
rsi = ta.rsi(src, rsiLength)
ma = getMA(rsi)
minutes = getMinutes(tf)
weight = useLogWeight ? math.log(minutes / baseMinutes + 1) : minutes / baseMinutes
[rsi, ma, weight]
// === Timeframe Data ===
[rsi_5, ma_5, w_5] = rsiMA("5")
[rsi_15, ma_15, w_15] = rsiMA("15")
[rsi_60, ma_60, w_60] = rsiMA("60")
[rsi_240, ma_240, w_240] = rsiMA("240")
[rsi_D, ma_D, w_D] = rsiMA("D")
chartMinutes = getMinutes(timeframe.period)
autoSlopeFactor = math.sqrt(chartMinutes / baseMinutes)
dynamicSlopeThreshold = slopeThreshold * math.min(autoSlopeFactor, 2.0)
rsiChart = ta.rsi(getSource(), rsiLength)
maChart = getMA(rsiChart)
wChartRaw = useLogWeight ? math.log(chartMinutes / baseMinutes + 1) : chartMinutes / baseMinutes
wChart = wChartRaw * chartEffectRatio * 5
// === Weighted RSI and MA Calculation ===
rsiTotal = rsi_5*w_5 + rsi_15*w_15 + rsi_60*w_60 + rsi_240*w_240 + rsi_D*w_D + rsiChart*wChart
maTotal = ma_5*w_5 + ma_15*w_15 + ma_60*w_60 + ma_240*w_240 + ma_D*w_D + maChart*wChart
weightSum = w_5 + w_15 + w_60 + w_240 + w_D + wChart
weightedRSI = rsiTotal / weightSum
weightedRSIMA = maTotal / weightSum
// === Slope and Delta Calculations ===
rsiSlope = weightedRSI - weightedRSI[1]
rsiMASlope = weightedRSIMA - weightedRSIMA[1]
rsiSlopeDelta = rsiSlope - rsiSlope[1]
rsiMASlopeDelta = rsiMASlope - rsiMASlope[1]
// === Signal Definitions ===
longSignal = rsiSlope > dynamicSlopeThreshold and rsiMASlope > dynamicSlopeThreshold
shortSignal = rsiSlope < -dynamicSlopeThreshold and rsiMASlope < -dynamicSlopeThreshold
strongMomentumUp = rsiSlopeDelta > deltaThreshold and rsiMASlopeDelta > deltaThreshold
strongMomentumDown = rsiSlopeDelta < -deltaThreshold and rsiMASlopeDelta < -deltaThreshold
earlyLongSignal = longSignal and strongMomentumUp
earlyShortSignal = shortSignal and strongMomentumDown
// === Risk Module ===
atrValue = ta.atr(atrLength)
atrStop = math.max(atrValue * atrMultiplier, minATR)
tpDistance = atrStop * 1.5
// === Entry, TP, and SL ===
if (earlyLongSignal)
strategy.entry("Long", strategy.long)
strategy.exit("TP Long", from_entry="Long", limit=close + tpDistance)
strategy.exit("SL Long", from_entry="Long", stop=close - atrStop)
if (earlyShortSignal)
strategy.entry("Short", strategy.short)
strategy.exit("TP Short", from_entry="Short", limit=close - tpDistance)
strategy.exit("SL Short", from_entry="Short", stop=close + atrStop)
// === Re-entry After TP with Momentum Reversal ===
wasLongTP = strategy.opentrades == 0 and strategy.closedtrades > 0 and strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) == bar_index - 1
wasShortTP = strategy.opentrades == 0 and strategy.closedtrades > 0 and strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) == bar_index - 1
lastExitBar = strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1)
barsSinceTP = bar_index - lastExitBar
canReenter = barsSinceTP <= tpWindow
if (wasLongTP and earlyShortSignal and canReenter)
strategy.entry("Short After TP", strategy.short)
if (wasShortTP and earlyLongSignal and canReenter)
strategy.entry("Long After TP", strategy.long)
// === Plotting ===
plot(weightedRSI, color=color.orange, title="Weighted RSI")
plot(weightedRSIMA, color=color.blue, title="Weighted RSI MA")
plot(rsiSlope, title="RSI Slope", color=color.orange)
plot(rsiMASlope, title="RSI MA Slope", color=color.blue)
plot(rsiSlopeDelta, title="RSI Slope Delta", color=color.purple)
plot(rsiMASlopeDelta, title="RSI MA Slope Delta", color=color.fuchsia)
plotshape(earlyLongSignal, location=location.bottom, color=color.lime, style=shape.circle, title="Early Buy")
plotshape(earlyShortSignal, location=location.top, color=color.fuchsia, style=shape.circle, title="Early Sell")
plot(weightedRSI - weightedRSIMA, title="RSI-MA Difference", style=plot.style_columns, color=(weightedRSI - weightedRSIMA > 0 ? color.green : color.red))
momentumStrength = math.abs(rsiSlopeDelta + rsiMASlopeDelta)
bgcolor(momentumStrength > 0.2 ? color.new(color.green, 90) : momentumStrength < -0.2 ? color.new(color.red, 90) : na)
bgcolor(useHeikinAshi ? color.new(color.blue, 85) : na)