रेनबो मूविंग एवरेज ट्रेडिंग रणनीति रेनबो मूविंग एवरेज इंडिकेटर के आधार पर डिज़ाइन की गई है। यह रणनीति 7 मूविंग एवरेज वाली रेनबो मूविंग एवरेज सिस्टम के माध्यम से ट्रेंड की दिशा की पहचान करती है, और कम जोखिम वाले प्रवेश को प्राप्त करने के लिए आरएसआई इंडिकेटर के साथ झूठे संकेतों को फ़िल्टर करती है।
रणनीति निम्नलिखित चरणों के माध्यम से व्यापार संकेत उत्पन्न करती है:
इंद्रधनुष चलती औसत प्रणाली का निर्माण करें। इसमें 7 चलती औसत शामिल हैं। पहले चलती औसत की अवधि 12 है और स्रोत डेटा के रूप में समापन मूल्य लेता है। अन्य 6 चलती औसत में 3 की क्रमिक रूप से घटती अवधि होती है, पिछले चलती औसत के साथ स्रोत के रूप में।
प्रवृत्ति की दिशा निर्धारित करें. यदि पहला चलती औसत इंद्रधनुष के ऊपर है, तो इसे अपट्रेंड के रूप में परिभाषित करें. यदि यह नीचे है, तो इसे डाउनट्रेंड के रूप में परिभाषित करें. यदि यह बीच में है, तो इसे समेकन के रूप में परिभाषित करें.
संकेत उत्पन्न करें. जब प्रवृत्ति अपट्रेंड से डाउनट्रेंड में बदलती है, तो एक बिक्री संकेत उत्पन्न होता है. जब प्रवृत्ति डाउनट्रेंड से अपट्रेंड में बदलती है, तो एक खरीद संकेत उत्पन्न होता है. जब प्रवृत्ति समेकन से अपट्रेंड या डाउनट्रेंड में बदलती है, तो मौजूदा स्थिति को बंद करें.
आरएसआई फ़िल्टर. आरएसआई सामान्य स्थिति दिखाता है जब केवल संकेत स्वीकार करते हैं. पहला आरएसआई झूठे ब्रेकआउट से बचने के लिए ओवरबॉट और ओवरसोल्ड क्षेत्र के बीच होना चाहिए. दूसरा आरएसआई मजबूत गति सुनिश्चित करने के लिए मध्य क्षेत्र के बाहर होना चाहिए.
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
इंद्रधनुष मूविंग एवरेज प्रणाली ट्रेंड की दिशा को सटीक रूप से पहचानती है। बाजार शोर और स्पॉट ट्रेंड रिवर्स को फ़िल्टर करने के लिए कई मूविंग एवरेज संयोजन करते हैं।
दोहरी आरएसआई फ़िल्टर तंत्र प्रभावी रूप से झूठे ब्रेकआउट संकेतों और फंसने से बचाता है। पहला आरएसआई सामान्य क्षेत्र में सुनिश्चित करता है जबकि दूसरा आरएसआई पर्याप्त मजबूत गति की गारंटी देता है।
रुझान और उल्टा होने के संकेतकों का संयोजन रुझान उल्टा होने पर समय पर प्रवेश करने की अनुमति देता है, जबकि गति का पीछा करने से बचा जाता है।
समेकन के दौरान सक्रिय स्थिति बंद करने से सीमाबद्ध बाजारों के जोखिम से बचा जाता है।
यह रणनीति बड़े पैरामीटर अनुकूलन स्थान प्रदान करती है, जिसे बेहतर परिणाम प्राप्त करने के लिए विभिन्न उत्पादों और समय सीमाओं के लिए समायोजित किया जा सकता है।
इस रणनीति के मुख्य जोखिम:
अस्पष्ट रुझान उलटा होने से झूठे संकेत उत्पन्न हो सकते हैं और नुकसान हो सकते हैं। चलती औसत अवधि को समायोजित करने से उलटा होने के संकेत स्पष्ट हो सकते हैं।
लंबे समय तक समेकन के दौरान लगातार खुलने और बंद होने से लागत और फिसलने में वृद्धि होती है। आरएसआई मापदंडों का अनुकूलन समेकन में निस्पंदन को मजबूत कर सकता है।
विलंबित प्रतिवर्तन प्रारंभिक संकेत के बाद नुकसान को बढ़ाता है। बढ़ते चलती औसत अवधि अंतर संकेतों को समयबद्ध बनाता है।
गलत पैरामीटर सेटिंग्स सही संकेतों को फ़िल्टर कर सकती हैं या संकेत में देरी का कारण बन सकती हैं। पैरामीटर को उत्पाद चरित्र के अनुसार समायोजित करने की आवश्यकता है।
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
प्रवृत्ति आकलन को अधिक सटीक बनाने के लिए अवधि की लंबाई, अवधि अनुपात, एमए प्रकार आदि सहित चलती औसत पैरामीटर अनुकूलन।
आरएसआई पैरामीटर अनुकूलन, जिसमें अवधि, ओवरबॉट/ओवरसोल्ड स्तर, तटस्थ क्षेत्र आदि शामिल हैं, ताकि फ़िल्टरिंग अधिक सटीक हो सके।
समय सीमा अनुकूलन, इष्टतम समय सीमा खोजने के लिए।
उत्पाद अनुकूलन, विभिन्न उत्पादों के अनुकूल मापदंडों और नियमों को समायोजित करने के लिए।
जोखिम और लाभ के आकार को नियंत्रित करने के लिए स्टॉप लॉस और ले लाभ जोड़ना।
रेनबो मूविंग एवरेज ट्रेडिंग रणनीति ट्रेंड निर्धारण और सिग्नल फ़िल्टरिंग को प्रभावी ढंग से रिवर्स सिग्नल कैप्चर करने के लिए जोड़ती है। सटीक निर्णय और नियंत्रित जोखिमों के साथ, यह रणनीति पैरामीटर ट्यूनिंग और तर्क परिष्करण के बाद बहुत व्यावहारिक हो सकती है। कुल मिलाकर, यह गहन शोध और अनुप्रयोग के लायक है।
/*backtest start: 2023-08-28 00:00:00 end: 2023-09-27 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //╔════════════════════════════════════════════════════════════════════════════╗ //║Rainbow Backtesting base on "Rainbow Moving Average" Strategy as below: ║ //║1.Rainbow Moving Average setup ║ //║- Source: source of 1st MA ║ //║- Type: SMA/EMA ║ //║- Period: period of 1st MA ║ //║- Displacement: period of 2nd MA to 7th MA with source is previous MA ║ //║2.Trend Define ║ //║- Up Trend: Main MA moving at the top of Rainbow ║ //║- Down Trend: Main MA moving at the bottom of Rainbow ║ //║- Sideway: Main MA moving between the top and the bottom of Rainbow ║ //║3.Signal ║ //║- Buy Signal: When Rainbow change to Up Trend. ║ //║- Sell Signal: When Rainbow change to Down Trend. ║ //║- Exit: When Rainbow change to Sideway. ║ //║4.RSI Filter ║ //║- "Enable": Only signals have 1st RSI moving between Overbought and Oversold║ //║and 2nd RSI moving outside Middle Channel are accepted. ║ //║- The filter may help trader avoid bull trap, bear trap and choppy market. ║ //╚════════════════════════════════════════════════════════════════════════════╝ //@version=4 strategy("Rainbow Strategy Backtesting",overlay=false) //++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++ Rainbow Moving Average +++++++++++++ //++++++++++++++++++++++++++++++++++++++++++++++++++ rainbow_tt="=== Rainbow Moving Average ===" ma1_source=input(hlc3,title="Source",type=input.source, inline="set1", group=rainbow_tt) rb_type=input("SMA",title="Type",options=["SMA","EMA"], inline="set1", group=rainbow_tt) ma1_len=input(12,title="Period", inline="set2", group=rainbow_tt) dis_len=input(3,title="Displacement", inline="set2", group=rainbow_tt,minval=2) trend_tt="=== Trend Color ===" up_col=input(color.new(color.blue,0),title="Up",inline="Color",group=trend_tt) dn_col=input(color.new(color.red,0),title="Down",inline="Color",group=trend_tt) sw_col=input(color.new(color.yellow,0),title="No",inline="Color",group=trend_tt) //1st ma1=rb_type=="SMA"?sma(ma1_source,ma1_len):ema(ma1_source,ma1_len) //2nd ma2=rb_type=="SMA"?sma(ma1,dis_len):ema(ma1,dis_len) //3rd ma3=rb_type=="SMA"?sma(ma2,dis_len):ema(ma2,dis_len) //4 ma4=rb_type=="SMA"?sma(ma3,dis_len):ema(ma3,dis_len) //5 ma5=rb_type=="SMA"?sma(ma4,dis_len):ema(ma4,dis_len) //6 ma6=rb_type=="SMA"?sma(ma5,dis_len):ema(ma5,dis_len) //7 ma7=rb_type=="SMA"?sma(ma6,dis_len):ema(ma6,dis_len) //MinMax rb_max=max(ma1,ma2,ma3,ma4,ma5,ma6,ma7) rb_min=min(ma1,ma2,ma3,ma4,ma5,ma6,ma7) dir_col= ma1==rb_max?up_col: ma1==rb_min?dn_col: sw_col dir_style=shape.circle plotshape(dir_col[1]==dir_col?0:na,title="Trend",style=dir_style,color=dir_col,location=location.absolute) //++++++++++++++++++++++++++++++++++++++ //+++++++++++++ RSI Filter +++++++++++++ //++++++++++++++++++++++++++++++++++++++ rsi_tt="=== RSI Filter ===" rsi_filter=input("Enable",title="Filter",options=["Enable","Disable"],inline="set",group=rsi_tt) over_tt="Over Filter" rsi_len_1=input(12,title="Period",inline="set",group=over_tt) rsi_ovb=input(65,title="Overbought",inline="set",group=over_tt) rsi_ovs=input(35,title="Oversold",inline="set",group=over_tt) rsi_1=rsi(close,rsi_len_1) mid_tt="Middle Filter" rsi_len_2=input(9,title="Period",inline="set",group=mid_tt) rsi_mid_top=input(56,title="Upper",inline="set",group=mid_tt) rsi_mid_bot=input(44,title="Lower",inline="set",group=mid_tt) rsi_2=rsi(close,rsi_len_2) //Status var rsi_status="None" if (rsi_1>rsi_ovs and rsi_1<rsi_ovb) and (rsi_2[1]<rsi_mid_bot or rsi_2[1]>rsi_mid_top) rsi_status:="Normal" else rsi_status:="None" //Signal BuySignal= rsi_filter=="Disable"? dir_col[1]!=up_col and dir_col[0]==up_col : dir_col[1]!=up_col and dir_col[0]==up_col and rsi_status=="Normal" SellSignal= rsi_filter=="Disable"? dir_col[1]!=dn_col and dir_col[0]==dn_col : dir_col[1]!=dn_col and dir_col[0]==dn_col and rsi_status=="Normal" exit= (dir_col[1]!=sw_col and dir_col[0]==sw_col) buycol = BuySignal? up_col: na sellcol = SellSignal? dn_col: na exitcol = exit? sw_col: na buy_style=shape.arrowup sell_style=shape.arrowdown exit_style=shape.square plotshape(BuySignal?0:na,title="Buy",text="Buy",style=buy_style,color=buycol,location=location.absolute) plotshape(SellSignal?0:na,title="Sell",text="Sell",style=sell_style,color=sellcol,location=location.absolute) plotshape(exit?0:na,title="Exit",text="Exit",style=exit_style,color=exitcol,location=location.absolute) filter= rsi_filter=="Enable"? dir_col[1]!=dir_col and BuySignal==false and SellSignal==false and exit==false: na filter_style=shape.xcross filtercol= filter? dir_col:na plotshape(filter?0:na,title="Filter",text="Filter",style=filter_style,color=filtercol,location=location.absolute) //+++++++++++++++++++++++++++++++++++++++++++++++++ //++++++++++++++++++ Backtesting ++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++ strategy.entry("Long", strategy.long, when=BuySignal) strategy.close("Long", when=exit or filter) strategy.entry("Short", strategy.short, when=SellSignal) strategy.close("Short", when=exit or filter) //EOF