बहु-समय सीमा आरएसआई चलती औसत क्रॉसओवर रणनीति

लेखक:चाओझांग, दिनांकः 2023-11-16 16:28:22
टैगः

img

अवलोकन

मल्टी-टाइमफ्रेम आरएसआई मूविंग एवरेज क्रॉसओवर रणनीति कई समय सीमाओं में एक प्रवृत्ति के बाद की रणनीति है। यह कई समय सीमाओं पर आरएसआई संकेतकों का उपयोग करता है और प्रत्येक समय सीमा के आरएसआई का भारित चलती औसत लेता है। अंतिम संकेत सभी आरएसआई मूविंग एवरेज को दो व्यापक संकेतकों में जोड़कर उत्पन्न किए जाते हैं और क्रॉसओवर संकेतों का व्यापार करते हैं, जो एक विशिष्ट दोहरी चलती औसत क्रॉसओवर प्रणाली है।

सिद्धांत

यह रणनीति पहले कई समय सीमाओं (1 मिनट, 5 मिनट, 15 मिनट, आदि) पर आरएसआई संकेतकों की गणना करती है। फिर प्रत्येक समय सीमा के लिए आरएसआई की 15-अवधि वीएमए (वजनयुक्त चलती औसत) लेता है ताकि आरएसआई चलती औसत रेखाएं प्राप्त हो सकें।

इसके बाद, विभिन्न समय सीमाओं से सभी आरएसआई चलती औसत को दो संकेतों में समान रूप से जोड़ा जाता है - तेज रेखा और धीमी रेखा। तेज रेखा एक 100-अवधि ईएमए है और धीमी रेखा 150-अवधि ईएमए है।

जब फास्ट लाइन स्लो लाइन के ऊपर से गुजरती है, तो एक खरीद संकेत उत्पन्न होता है। जब फास्ट लाइन स्लो लाइन के नीचे से गुजरती है, तो एक बिक्री संकेत उत्पन्न होता है। इस तरह से मल्टी-टाइमफ्रेम आरएसआई को जोड़कर, क्रॉसओवर सिग्नल प्रभावी रूप से ट्रेंड को ट्रैक कर सकते हैं जबकि अल्पकालिक बाजार शोर को फ़िल्टर कर सकते हैं।

लाभ

  1. कई समय सीमाओं को मिलाकर मूल्य वक्र को चिकना किया जा सकता है और झूठे ब्रेकआउट को प्रभावी ढंग से रोका जा सकता है।

  2. आरएसआई ओवरबॉट/ओवरसोल्ड स्तरों को दर्शाता है, नए उच्च/निम्न का पीछा करने से बचता है।

  3. दोहरी चलती औसत एक एकल चलती औसत प्रणाली की तुलना में बेहतर पकड़ प्रभाव है।

  4. एसएमए के स्थान पर वीएमए का प्रयोग करने से अल्पकालिक उतार-चढ़ाव का प्रभाव कम होता है।

जोखिम

  1. बहु-टाइमफ्रेम रणनीतियों के लिए व्यापक पैरामीटर ट्यूनिंग की आवश्यकता होती है, अनुचित सेटिंग्स के कारण अच्छी प्रविष्टियां गायब हो सकती हैं या देर से प्रविष्टियां हो सकती हैं।

  2. मूविंग एवरेज में वक्र का अनुकूलन खराब होता है, ट्रेंड टर्निंग पॉइंट्स पर कम प्रदर्शन करता है।

  3. आरएसआई विचलन अक्सर होता है, उलट संकेतों पर नजर रखी जानी चाहिए।

समाधान: समय सीमा मापदंडों का अनुकूलन करें; रुझानों को निर्धारित करने के लिए एमएसीडी जैसे अन्य संकेतकों के साथ संयोजन करें; आरएसआई विचलन संकेतों पर ध्यान दें।

अनुकूलन दिशाएँ

  1. रुझानों को बेहतर ढंग से पकड़ने के लिए समय सीमाओं और पैरामीटर सेटिंग्स की संख्या को अनुकूलित करें।

  2. जोखिम नियंत्रण में स्टॉप लॉस जोड़ने पर विचार करें।

  3. रुझानों और विचलनों पर बेहतर निर्णय लेने के लिए अन्य संकेतकों को मिलाएं।

  4. सबसे अच्छा रखरखाव प्रभाव के लिए विभिन्न रखरखाव अवधि मापदंडों का परीक्षण करें।

निष्कर्ष

मल्टी-टाइमफ्रेम आरएसआई मूविंग एवरेज क्रॉसओवर रणनीति एक चलती औसत प्रणाली का उपयोग करके कई समय सीमाओं से आरएसआई संकेतकों को मिलाकर ट्रेडिंग संकेत उत्पन्न करती है, जो एक विशिष्ट मल्टी-टाइमफ्रेम ट्रेंड फॉलोइंग रणनीति है। इसकी ताकत प्रभावी रूप से रुझानों को ट्रैक करने और शोर को फ़िल्टर करने में निहित है, लेकिन पैरामीटर ट्यूनिंग और जोखिम नियंत्रण पर ध्यान देने की आवश्यकता है। आगे अनुकूलन के साथ, यह एक मजबूत ट्रेंड फॉलोइंग सिस्टम बन सकता है।


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="RSI multitimeframe SMA crossover", shorttitle="RSI multitimeframe strategy", default_qty_type= strategy.percent_of_equity, margin_long=50, default_qty_value=150)

res1 = input(title="Res 01", type=input.resolution, defval="1")
res2 = input(title="Res 0", type=input.resolution, defval="5")
res3 = input(title="Res 1", type=input.resolution, defval="15")
res4 = input(title="Res 2", type=input.resolution, defval="15")
res5 = input(title="Res 3", type=input.resolution, defval="15")
res6 = input(title="Res 4", type=input.resolution, defval="30")
res7 = input(title="Res 5", type=input.resolution, defval="45")
res8 = input(title="Res 6", type=input.resolution, defval="60")



lengthRSI = input(15, minval=1)
lengthMA = input(15, minval=1)
lengthFMA = input(100, minval=1)
lengthFMA2 = input(150, minval=1)
Long_yes = input(defval=1, title="Long trades 0 or 1", minval=0, maxval=1)
Short_yes = input(defval=0, title="Short trades 0 or 1", minval=0, maxval=1)
src = close

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"



// stop loss 
longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) * 
   0.01
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)

shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) * 
   0.01
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


rsi1 = rsi(src, lengthRSI)
MA1 = vwma(rsi1, lengthMA)






outD1 = security(syminfo.tickerid, res1, MA1)
outD2 = security(syminfo.tickerid, res2, MA1)
outD3 = security(syminfo.tickerid, res3, MA1)
outD4 = security(syminfo.tickerid, res4, MA1)
outD5 = security(syminfo.tickerid, res5, MA1)
outD6 = security(syminfo.tickerid, res6, MA1)
outD7 = security(syminfo.tickerid, res7, MA1)
outD8 = security(syminfo.tickerid, res8, MA1)




//plot_d0 = outD0
//plot_d1 = outD1
//plot_d2 = outD2
//plot_d3 = outD3
//plot_d4 = outD4
//plot_d5 = outD5
//plot_d6 = outD6

out_multi = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA)
out_multi2 = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA2)
//out_multi1 = outD2+outD3+outD4
//out_multi2 = outD4+outD5+outD6

//col0 = outD0 < 20 ? color.lime : outD0 > 80 ? color.red : color.blue
//col1 = outD1 < 20 ? color.lime : outD1 > 80 ? color.red : color.blue
//col2 = outD2 < 20 ? color.lime : outD2 > 80 ? color.red : color.blue
//col3 = outD3 < 20 ? color.lime : outD3 > 80 ? color.red : color.blue
//col4 = outD4 < 20 ? color.lime : outD4 > 80 ? color.red : color.blue
//col5 = outD5 < 20 ? color.lime : outD5 > 80 ? color.red : color.blue
//col6 = outD6 < 20 ? color.lime : outD6 > 80 ? color.red : color.blue


// plot(plot_d0,linewidth=2, color=col0)
// plot(plot_d1, linewidth=2, color=col1)
// plot(plot_d2,linewidth=2, color=col2)
// plot(plot_d3,linewidth=2, color=col3)
// plot(plot_d4,linewidth=2, color=col4)
// plot(plot_d5,linewidth=2, color=col5)
// plot(plot_d6,linewidth=2, color=col6)

long=(out_multi/8)
short=(out_multi2/8)

plot(long, linewidth=1, color=color.green)
plot(short, linewidth=1, color=color.red)

long1=crossover(long,short)
short1=crossunder(long,short)

h0 = hline(65, "Upper Band", color=color.red, linestyle=hline.style_solid, linewidth=2 )
h1 = hline(35, "Lower Band", color=color.green, linestyle=hline.style_solid, linewidth=2)


strategy.entry("buy", strategy.long, when=long1 and window() and Long_yes > 0) 
if strategy.position_size > 0
    strategy.exit(id="XL STP", stop=longStopPrice)
strategy.close("buy",when=short1 )

strategy.entry("sell", strategy.short, when=short1 and window() and Short_yes > 0) 
if strategy.position_size < 0
    strategy.exit(id="XS STP", stop=shortStopPrice)
strategy.close("buy",when=long1 )



अधिक