इस रणनीति में विभिन्न पैरामीटर सेटिंग्स के साथ आरएसआई संकेतकों के तीन समूहों और उनके अनुरूप छह चलती औसत रेखाओं की गणना तीन चलती औसत बैंड बनाने के लिए की जाती है, और दीर्घकालिक संचालन के लिए बाजार की प्रवृत्ति की दिशा का आकलन किया जाता है।
आरएसआई संकेतकों के तीन समूहों की गणना करें: फास्ट आरएसआई अवधि=50, सामान्य आरएसआई अवधि=75, धीमी आरएसआई अवधि=100।
आरएसआई संकेतकों के प्रत्येक समूह के लिए क्रमशः 5, 30, 50, 70, 90, 100 अवधि के सरल या घातीय चलती औसत की गणना करें ताकि चलती औसत बैंड बन सकें।
जब तेजी से आरएसआई चलती औसत की सभी रेखाएं बढ़ती हैं, तो इसे एक लंबा संकेत माना जाता है; जब तेजी से आरएसआई चलती औसत की सभी रेखाएं गिरती हैं, तो इसे एक छोटा संकेत माना जाता है।
सामान्य आरएसआई और धीमे आरएसआई के अनुरूप चलती औसत बैंड द्वारा दिए गए ट्रेडिंग सिग्नल समान हैं।
दी गई ट्रेडिंग अवधि के दौरान, जब खरीद संकेत दिखाई देता है तो 100% की स्थिति के साथ लंबी स्थिति पर जाएं; जब बिक्री संकेत दिखाई देता है तो पिछली लंबी स्थिति को बंद करें।
यह रणनीति आरएसआई संकेतकों और चलती औसत के लाभों को जोड़ती है। यह विभिन्न चक्र स्तरों पर प्रवृत्ति परिवर्तनों को पकड़ने के लिए विभिन्न पैरामीटर सेटिंग्स के साथ आरएसआई के तीन समूहों का उपयोग करती है। साथ ही, यह कुछ शोर को फ़िल्टर करने और संकेत विश्वसनीयता में सुधार करने के लिए छह चलती औसत रेखाओं का उपयोग करती है।
एकल आरएसआई और चलती औसत की तुलना में, यह संयोजन पैरामीटर अनुकूलन पर भरोसा किए बिना एक व्यवस्थित विधि का उपयोग करके निर्णय का आधार बनाता है। आवेदन वैज्ञानिक, कठोर और समझने में आसान है।
आरएसआई चलती औसत संयोजन रणनीति पैरामीटर सेटिंग्स पर निर्भर करती है। यदि पैरामीटर गलत तरीके से सेट किए जाते हैं, तो गलत सिग्नल हो सकते हैं। इसके अलावा, तेजी से बाजारों में उतार-चढ़ाव भी झूठे संकेतों को ट्रिगर कर सकते हैं।
झूठे संकेतों के जोखिम को कम करने के लिए, आरएसआई चक्र मापदंडों को तदनुसार समायोजित किया जाना चाहिए, या इष्टतम पैरामीटर संयोजन खोजने के लिए चलती औसत के चक्र संख्या को समायोजित किया जाना चाहिए।
इस रणनीति को निम्नलिखित पहलुओं में और अधिक अनुकूलित किया जा सकता हैः
स्टॉप लॉस लॉजिक जोड़ें। वर्तमान रणनीति स्टॉप लॉस सेट नहीं करती है, जो कि बाजार के नाटकीय उतार-चढ़ाव से आसानी से प्रभावित होती है।
पैरामीटर सेटिंग्स को अनुकूलित करें. सर्वोत्तम पैरामीटर खोजने के लिए अधिक संयोजनों का परीक्षण किया जा सकता है.
अन्य संकेतकों की फ़िल्टरिंग बढ़ाएं। संकेतों की पुष्टि करने के लिए अन्य संकेतकों जैसे एमएसीडी और बोलिंगर बैंड को पेश किया जा सकता है।
समय और वॉल्यूम फ़िल्टरिंग जोड़ें। असामान्य समय और वॉल्यूम अवधि के दौरान झूठे संकेतों से बचें।
तीन आरएसआई चलती औसत बैंड रणनीति कई संकेतकों के लाभों को एकीकृत करती है और दीर्घकालिक रुझानों को निर्धारित करने के लिए कठोर तार्किक निर्णयों के माध्यम से ट्रेडिंग संकेतों का गठन करती है। रणनीति में सादगी, आसानी से समझ है और चलती औसत बैंड ट्रेडिंग रणनीतियों को सीखने और अभ्यास करने के लिए उपयुक्त है। मापदंडों और संयोजनों के निरंतर अनुकूलन के साथ, रणनीति प्रभाव में और सुधार होने की उम्मीद है।
/*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)