तीन आरएसआई चलती औसत बैंड रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-21 16:18:44
टैगः

img

अवलोकन

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

रणनीति तर्क

  1. आरएसआई संकेतकों के तीन समूहों की गणना करें: फास्ट आरएसआई अवधि=50, सामान्य आरएसआई अवधि=75, धीमी आरएसआई अवधि=100।

  2. आरएसआई संकेतकों के प्रत्येक समूह के लिए क्रमशः 5, 30, 50, 70, 90, 100 अवधि के सरल या घातीय चलती औसत की गणना करें ताकि चलती औसत बैंड बन सकें।

  3. जब तेजी से आरएसआई चलती औसत की सभी रेखाएं बढ़ती हैं, तो इसे एक लंबा संकेत माना जाता है; जब तेजी से आरएसआई चलती औसत की सभी रेखाएं गिरती हैं, तो इसे एक छोटा संकेत माना जाता है।

  4. सामान्य आरएसआई और धीमे आरएसआई के अनुरूप चलती औसत बैंड द्वारा दिए गए ट्रेडिंग सिग्नल समान हैं।

  5. दी गई ट्रेडिंग अवधि के दौरान, जब खरीद संकेत दिखाई देता है तो 100% की स्थिति के साथ लंबी स्थिति पर जाएं; जब बिक्री संकेत दिखाई देता है तो पिछली लंबी स्थिति को बंद करें।

लाभ विश्लेषण

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

एकल आरएसआई और चलती औसत की तुलना में, यह संयोजन पैरामीटर अनुकूलन पर भरोसा किए बिना एक व्यवस्थित विधि का उपयोग करके निर्णय का आधार बनाता है। आवेदन वैज्ञानिक, कठोर और समझने में आसान है।

जोखिम विश्लेषण

आरएसआई चलती औसत संयोजन रणनीति पैरामीटर सेटिंग्स पर निर्भर करती है। यदि पैरामीटर गलत तरीके से सेट किए जाते हैं, तो गलत सिग्नल हो सकते हैं। इसके अलावा, तेजी से बाजारों में उतार-चढ़ाव भी झूठे संकेतों को ट्रिगर कर सकते हैं।

झूठे संकेतों के जोखिम को कम करने के लिए, आरएसआई चक्र मापदंडों को तदनुसार समायोजित किया जाना चाहिए, या इष्टतम पैरामीटर संयोजन खोजने के लिए चलती औसत के चक्र संख्या को समायोजित किया जाना चाहिए।

अनुकूलन

इस रणनीति को निम्नलिखित पहलुओं में और अधिक अनुकूलित किया जा सकता हैः

  1. स्टॉप लॉस लॉजिक जोड़ें। वर्तमान रणनीति स्टॉप लॉस सेट नहीं करती है, जो कि बाजार के नाटकीय उतार-चढ़ाव से आसानी से प्रभावित होती है।

  2. पैरामीटर सेटिंग्स को अनुकूलित करें. सर्वोत्तम पैरामीटर खोजने के लिए अधिक संयोजनों का परीक्षण किया जा सकता है.

  3. अन्य संकेतकों की फ़िल्टरिंग बढ़ाएं। संकेतों की पुष्टि करने के लिए अन्य संकेतकों जैसे एमएसीडी और बोलिंगर बैंड को पेश किया जा सकता है।

  4. समय और वॉल्यूम फ़िल्टरिंग जोड़ें। असामान्य समय और वॉल्यूम अवधि के दौरान झूठे संकेतों से बचें।

सारांश

तीन आरएसआई चलती औसत बैंड रणनीति कई संकेतकों के लाभों को एकीकृत करती है और दीर्घकालिक रुझानों को निर्धारित करने के लिए कठोर तार्किक निर्णयों के माध्यम से ट्रेडिंग संकेतों का गठन करती है। रणनीति में सादगी, आसानी से समझ है और चलती औसत बैंड ट्रेडिंग रणनीतियों को सीखने और अभ्यास करने के लिए उपयुक्त है। मापदंडों और संयोजनों के निरंतर अनुकूलन के साथ, रणनीति प्रभाव में और सुधार होने की उम्मीद है।


/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4

strategy(title="3 RSI MA movement crypto strategy", overlay=true, initial_capital = 100, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.03, pyramiding=1  )

///////////////
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

source = input(ohlc4)

RSIFast  = rsi(source, 50)
RSINorm  = rsi(source, 75)
RSISlow = rsi(source, 100)

// plot(RSIFast, color=color.silver, style=plot.style_area, histbase=50)
// plot(RSINorm, color=#98b8be, style=plot.style_area, histbase=50)
// plot(RSISlow, color=#be9e98, style=plot.style_area, histbase=50)

// plot(RSIFast, color=color.gray, style=plot.style_line, linewidth=1)
// plot(RSINorm, color=color.purple, style=plot.style_line, linewidth=2)
// plot(RSISlow, color=color.black, style=plot.style_line, linewidth=3)

exponential = false//input(false, title="Exponential MA")

src = (RSIFast)

ma05 = exponential ? ema(src, 05) : sma(src, 05)
ma30 = exponential ? ema(src, 30) : sma(src, 30)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
ma70 = exponential ? ema(src, 70) : sma(src, 70)
ma90 = exponential ? ema(src, 90) : sma(src, 90)
ma100 = exponential ? ema(src, 100) : sma(src, 100)

leadMAColor = change(ma30)>=0 and ma30>ma100 ? color.lime            : change(ma30)<0  and ma30>ma100 ? color.red            : change(ma30)<=0 and ma30<ma100 ? color.maroon            : change(ma30)>=0 and ma30<ma100 ? color.green            : color.gray
maColor(ma, maRef) => 
              change(ma)>=0 and ma30>maRef ? color.lime            : change(ma)<0  and ma30>maRef ? color.red            : change(ma)<=0 and ma30<maRef ? color.maroon            : change(ma)>=0 and ma30<maRef ? color.green            : color.gray
            
// plot( ma30, color=maColor(ma30,ma100), style=plot.style_line, title="MMA30", linewidth=2)
// plot( ma50, color=maColor(ma50,ma100), style=plot.style_line, title="MMA50", linewidth=2)
// plot( ma70, color=maColor(ma70,ma100), style=plot.style_line, title="MMA70", linewidth=2)
// plot( ma90, color=maColor(ma90,ma100), style=plot.style_line, title="MMA90", linewidth=2)

long0=(leadMAColor==color.lime and maColor(ma30,ma100)==color.lime and maColor(ma50,ma100)==color.lime and maColor(ma70,ma100)==color.lime and maColor(ma90,ma100)==color.lime ) or (leadMAColor==color.green and maColor(ma30,ma100)==color.green and maColor(ma50,ma100)==color.green and maColor(ma70,ma100)==color.green and maColor(ma90,ma100)==color.green )
exit0=leadMAColor==color.maroon and maColor(ma30,ma100)==color.maroon and maColor(ma50,ma100)==color.maroon and maColor(ma70,ma100)==color.maroon and maColor(ma90,ma100)==color.maroon 


exponential1 = false//input(false, title="Exponential MA")

src1 = (RSINorm)

ma051 = exponential1 ? ema(src1, 05) : sma(src1, 05)
ma301 = exponential1 ? ema(src1, 30) : sma(src1, 30)
ma501 = exponential1 ? ema(src1, 50) : sma(src1, 50)
ma701 = exponential1 ? ema(src1, 70) : sma(src1, 70)
ma901 = exponential1 ? ema(src1, 90) : sma(src1, 90)
ma1001 = exponential1 ? ema(src1, 100) : sma(src1, 100)

leadMAColor1 = change(ma051)>=0 and ma051>ma1001 ? color.lime            : change(ma051)<0  and ma051>ma1001 ? color.red            : change(ma051)<=0 and ma051<ma1001 ? color.maroon            : change(ma051)>=0 and ma051<ma1001 ? color.green            : color.gray
maColor1(ma, maRef) => 
              change(ma)>=0 and ma05>maRef ? color.lime            : change(ma)<0  and ma05>maRef ? color.red            : change(ma)<=0 and ma05<maRef ? color.maroon            : change(ma)>=0 and ma05<maRef ? color.green            : color.gray
            
// plot( ma051, color=leadMAColor1, style=plot.style_line, title="MMA05", linewidth=1)
// plot( ma301, color=maColor1(ma301,ma1001), style=plot.style_line, title="MMA30", linewidth=3)
// plot( ma501, color=maColor1(ma501,ma1001), style=plot.style_line, title="MMA50", linewidth=3)
// plot( ma701, color=maColor1(ma701,ma1001), style=plot.style_line, title="MMA70", linewidth=3)
// plot( ma901, color=maColor1(ma901,ma1001), style=plot.style_line, title="MMA90", linewidth=3)

long1=(leadMAColor1==color.lime and maColor1(ma301,ma1001)==color.lime and maColor1(ma501,ma1001)==color.lime and maColor1(ma701,ma1001)==color.lime and maColor1(ma901,ma1001)==color.lime ) or (leadMAColor1==color.green and maColor1(ma301,ma1001)==color.green and maColor1(ma501,ma1001)==color.green and maColor1(ma701,ma1001)==color.green and maColor1(ma901,ma100)==color.green )
exit1=leadMAColor1==color.maroon and maColor1(ma301,ma1001)==color.maroon and maColor1(ma501,ma1001)==color.maroon and maColor1(ma701,ma1001)==color.maroon and maColor1(ma901,ma1001)==color.maroon 

 

exponential2 = false//input(false, title="Exponential MA")

src2 = (RSISlow)

ma052 = exponential2 ? ema(src2, 05) : sma(src2, 05)
ma302 = exponential2 ? ema(src2, 30) : sma(src2, 30)
ma502 = exponential2 ? ema(src2, 50) : sma(src2, 50)
ma702 = exponential2 ? ema(src2, 70) : sma(src2, 70)
ma902 = exponential2 ? ema(src2, 90) : sma(src2, 90)
ma1002 = exponential2 ? ema(src2, 100) : sma(src2, 100)

leadMAColor2 = change(ma052)>=0 and ma052>ma1002 ? color.lime            : change(ma052)<0  and ma052>ma1002 ? color.red            : change(ma052)<=0 and ma052<ma1002 ? color.maroon            : change(ma052)>=0 and ma052<ma1002 ? color.green            : color.gray
maColor2(ma, maRef) => 
              change(ma)>=0 and ma05>maRef ? color.lime            : change(ma)<0  and ma05>maRef ? color.red            : change(ma)<=0 and ma05<maRef ? color.maroon            : change(ma)>=0 and ma05<maRef ? color.green            : color.gray
            
// plot( ma052, color=leadMAColor2, style=plot.style_line, title="MMA05", linewidth=1)
// plot( ma302, color=maColor2(ma302,ma1001), style=plot.style_line, title="MMA30", linewidth=4)
// plot( ma502, color=maColor2(ma502,ma1001), style=plot.style_line, title="MMA50", linewidth=4)
// plot( ma702, color=maColor2(ma701,ma1001), style=plot.style_line, title="MMA70", linewidth=4)
// plot( ma902, color=maColor2(ma901,ma1001), style=plot.style_line, title="MMA90", linewidth=4)

long2=(leadMAColor2==color.lime and maColor2(ma302,ma1002)==color.lime and maColor2(ma502,ma1002)==color.lime and maColor2(ma702,ma1002)==color.lime and maColor2(ma902,ma1002)==color.lime ) or (leadMAColor2==color.green and maColor2(ma302,ma1002)==color.green and maColor2(ma502,ma1002)==color.green and maColor2(ma701,ma1002)==color.green and maColor2(ma901,ma1002)==color.green )
exit2=leadMAColor2==color.maroon and maColor2(ma302,ma1002)==color.maroon and maColor2(ma502,ma1002)==color.maroon and maColor2(ma702,ma1002)==color.maroon and maColor2(ma902,ma1002)==color.maroon 


long= long1 or long2
exit=  exit1 or exit2


// ------------------------- Strategy Logic --------------------------------- //
var longOpened = false
var shortOpened = false
var int timeOfBuy = na

 

longConditionLongOnly= long and not longOpened 

if longConditionLongOnly
    longOpened := true
    timeOfBuy := time


longExitSignal = exit
exitLongConditionLongOnly = longOpened[1] and longExitSignal

if exitLongConditionLongOnly
    longOpened := false
    timeOfBuy := na


//plotshape(longConditionLongOnly, color=color.green, text= "Buy", location= location.belowbar,style= shape.labelup, textcolor=color.white, size = size.tiny, title="Buy Alert",editable=false, transp=60)
//plotshape(exitLongConditionLongOnly, color=color.red, text= "exit", location= location.abovebar,style= shape.labeldown, textcolor=color.white, size = size.tiny, title="Sell Alert", editable=false, transp=60)

//alertcondition(longConditionLongOnly ,title='Buy Alert', message='Buy Alert')
//alertcondition(exitLongConditionLongOnly , title='exit Alert', message='exit Alert')

if(time_cond)
    strategy.entry("long",1,when=longConditionLongOnly)
    strategy.entry("short",0,when=exitLongConditionLongOnly)

अधिक