डबल ईएमए रणनीति एक प्रवृत्ति के बाद की रणनीति है जो विभिन्न चक्रों के ईएमए की गणना करके कीमतों की प्रवृत्ति दिशा की पहचान करती है और इसे प्रवेश और निकास निर्धारित करने के लिए उपयोग करती है। यह सरल और व्यावहारिक रणनीति प्रवृत्ति बाजारों में अच्छी तरह से काम करती है।
यह रणनीति मुख्य रूप से दो ईएमए संकेतकों पर आधारित है, एक अल्पकालिक 9 दिवसीय ईएमए और एक लंबा 21 दिवसीय ईएमए। उनके क्रॉसओवर प्रवेश और निकास संकेत उत्पन्न करते हैं।
जब छोटा ईएमए लंबे ईएमए से ऊपर जाता है, तो इसे ऊपर की ओर बढ़ने वाली कीमतों के रूप में देखा जाता है। रणनीति बढ़ती प्रवृत्ति का पालन करने के लिए लंबी जाएगी। जब छोटा ईएमए लंबे ईएमए से नीचे जाता है, तो इसे नीचे की ओर बढ़ने वाली कीमतों के रूप में देखा जाता है। रणनीति गिरती प्रवृत्ति का पालन करने के लिए छोटी जाएगी।
ईएमए संकेतक प्रभावी रूप से मूल्य डेटा से शोर को फ़िल्टर कर सकते हैं और प्रवृत्ति की मुख्य दिशा की पहचान कर सकते हैं। इसलिए, रणनीति लंबी कीमत के रुझानों को पकड़ने के लिए प्रवेश और निकास के लिए आधार के रूप में दोहरे ईएमए का उपयोग करती है।
इस रणनीति के निम्नलिखित फायदे हैंः
इस रणनीति के साथ कुछ जोखिम भी हैंः
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
संक्षेप में, डबल ईएमए रणनीति एक बहुत ही उपयोगी प्रवृत्ति के बाद की रणनीति है। यह संचालित करने में आसान है, समझने में आसान है, और मजबूत प्रवृत्ति वाले बाजारों में उत्कृष्ट प्रदर्शन करता है। रणनीति में कुछ जोखिम भी हैं जिन्हें इसकी स्थिरता में सुधार के लिए विभिन्न सुधारों के माध्यम से कम किया जा सकता है। कुल मिलाकर, डबल ईएमए मात्रात्मक व्यापार के लिए एक महत्वपूर्ण संदर्भ टेम्पलेट के रूप में कार्य करते हैं।
/*backtest start: 2023-02-21 00:00:00 end: 2024-02-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // This can only draw so many lines. Use bar replay to go back further strategy("Strategy Lines", shorttitle="Strategy Lines", overlay=true, max_lines_count=500) //########################################################################################################################################### // Replace your strategy here //########################################################################################################################################### shortEMA = ta.ema(close, input(9, title="Short EMA Length")) longEMA = ta.ema(close, input(21, title="Long EMA Length")) // Entry conditions for long and short positions longCondition = ta.crossover(shortEMA, longEMA) shortCondition = ta.crossunder(shortEMA, longEMA) //########################################################################################################################################### // Strategy Lines //########################################################################################################################################### var timeLow = bar_index var line li = na var openLPrice = 0.0000 var openSPrice = 0.0000 LongWColor = input.color(color.rgb(0,255,0,0),"Long Win Color", group="Strategy Lines") LongLColor = input.color(color.rgb(0,0,255,0),"Long Loss Color", group="Strategy Lines") ShortWColor = input.color(color.rgb(255,255,0,0),"Short Win Color", group="Strategy Lines") ShortLColor = input.color(color.rgb(255,0,0,0),"Short Loss Color", group="Strategy Lines") WinFontColor = input.color(color.rgb(0,0,0,0),"Win Font Color", group="Strategy Lines") LossFontColor = input.color(color.rgb(255,255,255,0),"Loss Font Color", group="Strategy Lines") LinesShowLabel = input(false,"Show Labels?",group = "Strategy Lines") // // Start new line when we go long // if strategy.position_size >0 // line.delete(li) // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor) // // Start new line when we go short // if strategy.position_size <0 // line.delete(li) // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor) // //Delete Lines if we don't have a position open // if strategy.position_size ==0 // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=color.rgb(0,0,0,100)) // line.delete(li) if LinesShowLabel // Short Label if strategy.position_size>=0 and strategy.position_size[1] <0 label.new( timeLow, na, text=str.tostring((openSPrice-close[1])/(syminfo.mintick*10)), color=close[1]<openSPrice?ShortWColor:ShortLColor, textcolor=close[1]<openSPrice?WinFontColor:LossFontColor, size=size.small, style=label.style_label_down, yloc=yloc.abovebar) // Long Label if strategy.position_size<=0 and strategy.position_size[1] >0 label.new( timeLow, na, text=str.tostring((close[1]-openLPrice)/(syminfo.mintick*10)), color=close[1]>openLPrice?LongWColor:LongLColor, textcolor=close[1]>openLPrice?WinFontColor:LossFontColor, size=size.small, style=label.style_label_down, yloc=yloc.abovebar) // Open long position and draw line if (longCondition) //strategy.entry("Long", strategy.long) // timeLow := bar_index // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor) openLPrice := close // Open short position and draw line if (shortCondition) //strategy.entry("Short", strategy.short) // timeLow := bar_index // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor) openSPrice := close //########################################################################################################################################### // Strategy Execution (Replace this as well) //########################################################################################################################################### if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short)