اس حکمت عملی کا بنیادی خیال آر ایس آئی اشارے کی ہموار مدت کو متحرک بنانا ہے ، قیمت اور رفتار کے مابین تعلق کی بنیاد پر اسے خود بخود ایڈجسٹ کرنا ، اس طرح آر ایس آئی اشارے کی افادیت کو بہتر بنانا ہے۔
حکمت عملی سب سے پہلے قیمت کی رفتار کا حساب لگاتی ہے ، پھر قیمت اور رفتار کے مابین رابطے کے گتانک کا حساب لگاتی ہے۔ جب رابطے کا گتانک 1 کے قریب ہوتا ہے تو اس کا مطلب یہ ہے کہ قیمت اور رفتار انتہائی مثبت طور پر وابستہ ہیں۔ جب رابطے کا گتانک -1 کے قریب ہوتا ہے تو اس کا مطلب یہ ہے کہ قیمت اور رفتار انتہائی منفی طور پر وابستہ ہیں۔
قیمت اور رفتار کے مابین تعلق کی بنیاد پر ، آر ایس آئی اشارے کی ہموار مدت کو ایڈجسٹ کیا جاسکتا ہے۔ جب تعلق زیادہ ہوتا ہے تو ، ایک مختصر آر ایس آئی مدت استعمال کی جاتی ہے۔ جب تعلق کم ہوتا ہے تو ، ایک طویل آر ایس آئی مدت استعمال کی جاتی ہے۔
خاص طور پر ، یہ حکمت عملی ڈیفالٹ کے ذریعہ آر ایس آئی کی مدت کی حد کو 20-50 پر طے کرتی ہے۔ قیمت اور رفتار کے مابین ارتباط ضریب کا حساب کتاب کرنے کے بعد ، یہ لائنر میپنگ کا استعمال کرتا ہے تاکہ رابطے کے ضریب کو 20-50 کی حد تک حتمی آر ایس آئی ہموار کرنے کی مدت کے طور پر نقشہ بنائے۔
یہ آر ایس آئی پیرامیٹرز کو مارکیٹ کے حالات کی بنیاد پر خود بخود ایڈجسٹ کرنے کی اجازت دیتا ہے۔ جب قیمت کی تبدیلیاں رفتار کی تبدیلیوں کے ساتھ مضبوطی سے وابستہ ہوتی ہیں تو ، اسے زیادہ حساس بنانے کے لئے قلیل مدتی آر ایس آئی کا استعمال کیا جاتا ہے۔ جب وابستگی کمزور ہوتی ہے تو ، سگنل پر شور کے اثرات کو کم کرنے کے لئے طویل مدتی آر ایس آئی کا استعمال کیا جاتا ہے۔
آر ایس آئی ہموار کرنے کی مدت کو متحرک طور پر ایڈجسٹ کرنے کا خیال سیکھنے کے قابل ہے ، لیکن مخصوص نفاذ میں بہتری کی گنجائش ہے۔ کلید یہ ہے کہ آر ایس آئی پیرامیٹر کے انتخاب کو متاثر کرنے والے فیصلہ کن عوامل کی نشاندہی کی جائے ، اور انہیں مقداری اشارے میں تبدیل کیا جائے۔ نیز ، خالصتا model ماڈل پر انحصار نہ کریں ، پیرامیٹر کی حدوں کی تجرباتی اصلاح کی ضرورت ہے۔ مجموعی طور پر یہ ایک بہت ہی جدید خیال ہے ، جس میں مزید اصلاحات اور بہتری کے بعد عملی صلاحیت ہے۔
/*backtest start: 2023-09-06 00:00:00 end: 2023-10-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Dynamic RSI Momentum", "DRM Strategy", process_orders_on_close = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50 ) // +++++++++++++++++++++ // ++ INPUT ++ // +++++++++++++++++++++ // Momentum len = input.int(10, "Momentum Length", 1, group = "Dynamic RSI Momentum") src = input.source(close, "Source", group = "Dynamic RSI Momentum") min_rsi = input.int(20, "Min RSI", group = "Dynamic RSI Momentum") max_rsi = input.int(50, "Max RSI", group = "Dynamic RSI Momentum") upLvl = input.float(70, "OverBought", 0, 100, group = "Dynamic RSI Momentum") dnLvl = input.float(30, "OverSold", 0, 100, group = "Dynamic RSI Momentum") // +++++++++++++++++++++ // ++ CALCULATION ++ // +++++++++++++++++++++ // RMA Function rmaFun(src, len) => sma = ta.sma(src, len) alpha = 1/len sum = 0.0 sum := na(sum[1]) ? sma : alpha * src + (1 - alpha) * nz(sum[1]) // RSI Function rsiFun(src, len) => 100 - 100 / (1 + rmaFun(src - src[1] > 0 ? src - src[1] : 0, len) / rmaFun(src[1] - src > 0 ? src[1] - src : 0, len)) // Momentum momVal = src - src[len] // Calculation Price vs Momentum corr = ta.correlation(src, momVal, len) corr := corr > 1 or corr < -1 ? float(na) : corr rsiLen = 0 rsiLen := int(min_rsi + nz(math.round((1 - corr) * (max_rsi-min_rsi) / 2, 0), 0)) rsiMom = rsiFun(src, rsiLen) // +++++++++++++++++++++ // ++ STRATEGY ++ // +++++++++++++++++++++ long = ta.crossover(rsiMom, dnLvl) short = ta.crossunder(rsiMom, upLvl) // +++> Long <+++++ if long and not na(rsiMom) strategy.entry("Long", strategy.long) // +++> Short <+++++ if short and not na(rsiMom) strategy.entry("Short", strategy.short) // +++++++++++++++++++++ // ++ PLOT ++ // +++++++++++++++++++++ plot(rsiMom, "Dynamic RSI Momentum", rsiMom < dnLvl ? color.green : rsiMom > upLvl ? color.red : color.yellow) hline(50, "Mid Line", color.gray) upperLine = hline(upLvl, "Upper Line", color.gray) lowerLine = hline(dnLvl, "Lower Line", color.gray) fill(upperLine, lowerLine, color.new(color.purple, 90), "Background Fill")