यह रणनीति कई घातीय चलती औसत (ईएमए) क्रॉसओवर के आधार पर एक प्रवृत्ति-अनुसरण प्रणाली है, जिसमें गतिशील स्टॉप-लॉस और ले-प्रॉफिट तंत्र शामिल हैं। यह रणनीति तीन ईएमए - 21-अवधि, 50-अवधि और 200-अवधि को नियोजित करती है - अल्पकालिक और मध्यमकालिक ईएमए क्रॉसओवर के माध्यम से ट्रेडिंग सिग्नल उत्पन्न करती है जबकि समग्र प्रवृत्ति दिशा की पुष्टि करने के लिए दीर्घकालिक ईएमए का उपयोग करती है। इसमें जोखिम प्रबंधन के लिए लचीला स्टॉप-लॉस और ले-प्रॉफिट स्तर शामिल हैं। यह रणनीति विशेष रूप से महत्वपूर्ण अस्थिरता और मध्यम से दीर्घकालिक प्रवृत्ति व्यापार वाले बाजारों के लिए उपयुक्त है।
मूल तर्क एक ट्रिपल ईएमए प्रणाली के तालमेल प्रभाव पर आधारित हैः
यह रणनीति प्रभावी रूप से कई ईएमए प्रणालियों के समन्वय के माध्यम से बाजार के रुझानों को पकड़ती है। इसका व्यापक जोखिम प्रबंधन तंत्र और स्पष्ट ट्रेडिंग तर्क इसे एक व्यावहारिक ट्रेडिंग टूल बनाता है। निरंतर अनुकूलन और सुधार के माध्यम से, रणनीति विभिन्न बाजार वातावरणों के अनुकूल हो सकती है, जिससे ट्रेडिंग दक्षता और स्थिरता बढ़ जाती है। व्यापारियों को लाइव कार्यान्वयन से पहले गहन बैकटेस्टिंग और पैरामीटर अनुकूलन करने की सलाह दी जाती है, जो बाजार की विशेषताओं और व्यक्तिगत जोखिम वरीयताओं के आधार पर उपयुक्त समायोजन करते हैं।
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-17 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover with SL and TP Levels", overlay=true) // Input settings for stop loss and take profit slTicks = input.int(50, title="Stop Loss (ticks)", minval=1) tpTicks = input.int(100, title="Take Profit (ticks)", minval=1) // Input settings for moving averages shortMAPeriod = input.int(21, title="Short MA Period") longMAPeriod = input.int(50, title="Long MA Period") thirdMAPeriod = input.int(200, title="Third MA Period") // Calculate moving averages shortMA = ta.ema(close, shortMAPeriod) // Short EMA (21-period) longMA = ta.ema(close, longMAPeriod) // Long EMA (50-period) thirdMA = ta.ema(close, thirdMAPeriod) // Third EMA (200-period) // Detect crossovers for entry signals bullishCross = ta.crossover(shortMA, longMA) and close > thirdMA bearishCross = ta.crossunder(shortMA, longMA) and close < thirdMA // Initialize variables for SL and TP var float longSL = na var float longTP = na var float shortSL = na var float shortTP = na // Execute trades based on crossovers if (bullishCross) longSL := close - slTicks * syminfo.mintick longTP := close + tpTicks * syminfo.mintick strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop=longSL, limit=longTP) if (bearishCross) shortSL := close + slTicks * syminfo.mintick shortTP := close - tpTicks * syminfo.mintick strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop=shortSL, limit=shortTP) // Plot the MAs plot(shortMA, color=color.green, linewidth=2, title="21-period EMA") plot(longMA, color=color.red, linewidth=2, title="50-period EMA") plot(thirdMA, color=color.blue, linewidth=2, title="200-period EMA") // Plot buy/sell signals plotshape(series=bullishCross, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small, offset=-1) plotshape(series=bearishCross, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small, offset=-1) // // Draw SL and TP lines for Long positions // if (bullishCross) // line.new(x1=bar_index, y1=longSL, x2=bar_index + 1, y2=longSL, color=color.red, width=2, style=line.style_dotted) // line.new(x1=bar_index, y1=longTP, x2=bar_index + 1, y2=longTP, color=color.green, width=2, style=line.style_dotted) // label.new(bar_index, longSL, text="Long SL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small) // label.new(bar_index, longTP, text="Long TP", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small) // // Draw SL and TP lines for Short positions // if (bearishCross) // line.new(x1=bar_index, y1=shortSL, x2=bar_index + 1, y2=shortSL, color=color.red, width=2, style=line.style_dotted) // line.new(x1=bar_index, y1=shortTP, x2=bar_index + 1, y2=shortTP, color=color.green, width=2, style=line.style_dotted) // label.new(bar_index, shortSL, text="Short SL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small) // label.new(bar_index, shortTP, text="Short TP", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)