गतिशील गतिमान आरएसआई रणनीति

लेखक:चाओझांग, दिनांक: 2023-10-07 15:47:42
टैगः

अवलोकन

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

रणनीति तर्क

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



अधिक