गति सहसंबंधित आरएसआई रणनीति


निर्माण तिथि: 2023-10-07 15:47:42 अंत में संशोधित करें: 2023-10-07 15:47:42
कॉपी: 0 क्लिक्स: 751
1
ध्यान केंद्रित करना
1617
समर्थक

अवलोकन

इस रणनीति का मुख्य विचार आरएसआई को गतिशील बनाने के लिए है, जो कीमत और गतिशीलता के बीच संबंध के आधार पर स्वचालित रूप से समायोजित होता है, जिससे आरएसआई की उपयोगिता में सुधार होता है।

रणनीति सिद्धांत

यह रणनीति पहले मूल्य की गति की गणना करती है और फिर मूल्य और गति के बीच सहसंबंध गुणांक की गणना करती है। सहसंबंध गुणांक 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")