यह रणनीति एक प्रवृत्ति-अनुसरण प्रणाली है जो कई तकनीकी संकेतकों को जोड़ती है, मुख्य रूप से विभिन्न अवधियों के पांच घातीय चलती औसत (ईएमए), सापेक्ष शक्ति सूचकांक (आरएसआई) और विभिन्न अवधियों के दो डॉनचियन चैनलों को एकीकृत करती है। यह प्रणाली कई संकेतकों के समन्वय के माध्यम से बाजार के रुझानों को पकड़ती है और गतिशील स्टॉप-लॉस और लाभ लक्ष्यों का उपयोग करके जोखिम और रिटर्न का प्रबंधन करती है।
यह रणनीति संकेत की पुष्टि के लिए कई तकनीकी संकेतकों का उपयोग करती हैः सबसे पहले, यह एक प्रवृत्ति ढांचे का निर्माण करने के लिए 5 ईएमए (9, 21, 55, 89, 144 अवधि) का उपयोग करती है, जो तेजी से और धीमे ईएमए के बीच क्रॉसओवर के माध्यम से प्रारंभिक प्रवृत्ति दिशा निर्धारित करती है। दूसरा, यह एक प्रवृत्ति फ़िल्टर के रूप में आरएसआई (14 अवधि) का उपयोग करती है, जिसके लिए आरएसआई को लंबी पदों के लिए ओवरबॉट ज़ोन (60 से ऊपर) और शॉर्ट पदों के लिए ओवरसोल्ड ज़ोन (40 से नीचे) में होना आवश्यक है, इस प्रकार रेंजिंग बाजारों में लगातार व्यापार से बचने के लिए। अंत में, यह 21-अवधि और 74-अवधि के डॉनचियन चैनलों का उपयोग मूल्य आंदोलन रेंज को परिभाषित करने के लिए करता है, जो व्यापार के लिए अतिरिक्त बाजार संरचना संदर्भ प्रदान करता है।
रणनीति कई तकनीकी संकेतकों के संयोजन के माध्यम से एक अपेक्षाकृत पूर्ण ट्रेडिंग प्रणाली का निर्माण करती है। जबकि इसमें कुछ विलंब है, यह सख्त सिग्नल फ़िल्टरिंग और जोखिम प्रबंधन के माध्यम से ट्रेंडिंग बाजारों में स्थिर रिटर्न प्राप्त कर सकती है। व्यापारियों को विशिष्ट बाजार विशेषताओं और व्यावहारिक अनुप्रयोगों में उनके जोखिम सहिष्णुता के अनुसार मापदंडों को समायोजित करने की सलाह दी जाती है। इस बीच, सिस्टम प्रदर्शन की निरंतर निगरानी और अनुकूलन दिशाओं का नियमित मूल्यांकन यह सुनिश्चित करने के लिए आवश्यक है कि रणनीति बाजार में परिवर्तन के अनुकूल बनी रहे।
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-04 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA RSI Donchian Strategy", overlay=true) // Input parameters fastEmaLength = input(9, title="Fast EMA Length") midEmaLength = input(21, title="Mid EMA Length") slowEmaLength = input(55, title="Slow EMA Length") ema89Length = input(89, title="89 EMA Length") ema144Length = input(144, title="144 EMA Length") rsiPeriod = input(14, title="RSI Period") rsiOverbought = input(60, title="RSI Overbought Level") rsiOversold = input(40, title="RSI Oversold Level") donchianLength1 = input(21, title="Donchian Channel Length 1") donchianLength2 = input(74, title="Donchian Channel Length 2") // EMA calculations fastEma = ta.ema(close, fastEmaLength) midEma = ta.ema(close, midEmaLength) slowEma = ta.ema(close, slowEmaLength) ema89 = ta.ema(close, ema89Length) ema144 = ta.ema(close, ema144Length) // RSI calculation rsi = ta.rsi(close, rsiPeriod) // Donchian Channel calculations donchianUpper1 = ta.highest(high, donchianLength1) donchianLower1 = ta.lowest(low, donchianLength1) donchianUpper2 = ta.highest(high, donchianLength2) donchianLower2 = ta.lowest(low, donchianLength2) donchianMid1 = (donchianUpper1 + donchianLower1) / 2 donchianMid2 = (donchianUpper2 + donchianLower2) / 2 // Plot EMAs plot(fastEma, color=color.green, linewidth=2, title="Fast EMA") plot(midEma, color=color.blue, linewidth=2, title="Mid EMA") plot(slowEma, color=color.orange, linewidth=2, title="Slow EMA") plot(ema89, color=color.red, linewidth=2, title="89 EMA") plot(ema144, color=color.purple, linewidth=2, title="144 EMA") // Plot Donchian Channels plot(donchianUpper1, color=color.new(color.blue, 0), title="Donchian Upper 1") plot(donchianLower1, color=color.new(color.blue, 0), title="Donchian Lower 1") plot(donchianMid1, color=color.new(color.blue, 80), title="Donchian Mid 1") plot(donchianUpper2, color=color.new(color.red, 0), title="Donchian Upper 2") plot(donchianLower2, color=color.new(color.red, 0), title="Donchian Lower 2") plot(donchianMid2, color=color.new(color.red, 80), title="Donchian Mid 2") // Entry Conditions longCondition = ta.crossover(fastEma, slowEma) and rsi > rsiOverbought shortCondition = ta.crossunder(fastEma, slowEma) and rsi < rsiOversold // Stop Loss and Take Profit var float longStopLoss = na var float longTakeProfit1 = na var float longTakeProfit2 = na var float shortStopLoss = na var float shortTakeProfit1 = na var float shortTakeProfit2 = na if longCondition longStopLoss := high * 0.99 longTakeProfit1 := longStopLoss * 1.02618 longTakeProfit2 := longStopLoss * 1.036185 strategy.entry("Long", strategy.long) if shortCondition shortStopLoss := low * 1.01 shortTakeProfit1 := shortStopLoss * 0.97382 shortTakeProfit2 := shortTakeProfit1 * 0.96381 strategy.entry("Short", strategy.short) // Exit Conditions if not na(longStopLoss) strategy.exit("Take Profit 1", "Long", limit=longTakeProfit1) strategy.exit("Take Profit 2", "Long", limit=longTakeProfit2) strategy.exit("Stop Loss", "Long", stop=longStopLoss) if not na(shortStopLoss) strategy.exit("Take Profit 1", "Short", limit= shortTakeProfit1) strategy.exit("Take Profit 2", "Short", limit=shortTakeProfit2) strategy.exit("Stop Loss", "Short", stop=shortStopLoss) // Labels for buy and sell signals if longCondition label.new(bar_index, low, "Buy", color=color.green, style=label.style_label_up, textcolor=color.white) if shortCondition label.new(bar_index, high, "Sell", color=color.red, style=label.style_label_down, textcolor=color.white) // Alerts alertcondition(longCondition, title="Long Entry Alert", message="Long entry signal") alertcondition(shortCondition, title="Short Entry Alert", message="Short entry signal")