इस रणनीति का मूल विचार आरएसआई सूचक की समतल अवधि को गतिशील बनाना है, इसे कीमत और गति के बीच संबंध के आधार पर स्वचालित रूप से समायोजित करना है, जिससे आरएसआई सूचक की उपयोगिता में सुधार होता है।
रणनीति पहले मूल्य के गति की गणना करती है, फिर मूल्य और गति के बीच सहसंबंध गुणांक की गणना करती है। जब सहसंबंध गुणांक 1 के करीब होता है, तो इसका मतलब है कि मूल्य और गति अत्यधिक सकारात्मक रूप से सहसंबंधित होते हैं। जब सहसंबंध गुणांक -1 के करीब होता है, तो इसका मतलब है कि मूल्य और गति अत्यधिक नकारात्मक रूप से सहसंबंधित होते हैं।
मूल्य और गति के बीच सहसंबंध के आधार पर, आरएसआई संकेतक की चिकनाई अवधि को समायोजित किया जा सकता है। जब सहसंबंध उच्च होता है, तो एक छोटी आरएसआई अवधि का उपयोग किया जाता है। जब सहसंबंध कम होता है, तो एक लंबी आरएसआई अवधि का उपयोग किया जाता है।
विशेष रूप से, यह रणनीति आरएसआई अवधि रेंज को डिफ़ॉल्ट रूप से 20-50 पर सेट करती है। कीमत और गति के बीच सहसंबंध गुणांक की गणना करने के बाद, यह रैखिक मानचित्रण का उपयोग 20-50 रेंज में सहसंबंध गुणांक को अंतिम आरएसआई चिकनाई अवधि के रूप में मैप करने के लिए करता है।
यह आरएसआई मापदंडों को बाजार की स्थिति के आधार पर स्वचालित रूप से समायोजित करने की अनुमति देता है। जब मूल्य परिवर्तन गति परिवर्तन के साथ दृढ़ता से सहसंबंधित होते हैं, तो इसे अधिक संवेदनशील बनाने के लिए एक छोटी अवधि के आरएसआई का उपयोग किया जाता है। जब सहसंबंध कमजोर होता है, तो संकेत पर शोर के प्रभाव को कम करने के लिए एक लंबी अवधि के आरएसआई का उपयोग किया जाता है।
आरएसआई स्मूलिंग अवधि को गतिशील रूप से समायोजित करने का विचार सीखने योग्य है, लेकिन विशिष्ट कार्यान्वयन में सुधार के लिए बहुत जगह है। कुंजी आरएसआई पैरामीटर चयन को प्रभावित करने वाले निर्णायक कारकों की पहचान करना है, और उन्हें मात्रात्मक संकेतकों में परिवर्तित करना है। इसके अलावा, केवल मॉडल पर भरोसा न करें, पैरामीटर रेंज के अनुभवजन्य अनुकूलन की आवश्यकता है। कुल मिलाकर यह एक बहुत ही अभिनव विचार है, आगे के अनुकूलन और सुधार के बाद व्यावहारिक क्षमता के साथ।
/*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")