یہ حکمت عملی ایک رجحان پر عمل کرنے والا نظام ہے جو متعدد تکنیکی اشارے کو جوڑتا ہے ، بنیادی طور پر مختلف ادوار کے پانچ تیزی سے چلنے والے اوسط (ای ایم اے) ، رشتہ دار طاقت انڈیکس (آر ایس آئی) ، اور مختلف ادوار کے دو ڈونچیئن چینلز کو مربوط کرتا ہے۔ یہ نظام متعدد اشارے کے ہم آہنگی کے ذریعے مارکیٹ کے رجحانات کو پکڑتا ہے اور متحرک اسٹاپ نقصان اور منافع کے اہداف کا استعمال کرتے ہوئے خطرہ اور منافع کا انتظام کرتا ہے۔
اس حکمت عملی میں سگنل کی تصدیق کے لئے متعدد تکنیکی اشارے استعمال کیے جاتے ہیں۔ سب سے پہلے ، یہ رجحان فریم ورک کی تعمیر کے لئے 5 ای ایم اے (9, 21, 55, 89, 144 ادوار) کا استعمال کرتا ہے ، جو تیز اور سست ای ایم اے کے مابین کراس اوور کے ذریعہ ابتدائی رجحان کی سمت کا تعین کرتا ہے۔ دوسرا ، یہ آر ایس آئی (14 ادوار) کو رجحان فلٹر کے طور پر استعمال کرتا ہے ، جس میں آر ایس آئی کو طویل پوزیشنوں کے لئے اوور بک زون (60 سے اوپر) اور مختصر پوزیشنوں کے لئے اوور سیل زون (40 سے نیچے) کی ضرورت ہوتی ہے ، اس طرح رینجنگ مارکیٹوں میں کثرت سے تجارت سے گریز کیا جاتا ہے۔ آخر میں ، یہ 21 مدت اور 74 مدت کے ڈونچیان چینلز کا استعمال قیمتوں کی نقل و حرکت کی حدوں کی وضاحت کرنے کے لئے کرتا ہے ، جو تجارت کے لئے اضافی مارکیٹ کی ساخت کا حوالہ فراہم کرتا ہے۔
حکمت عملی متعدد تکنیکی اشارے کے امتزاج کے ذریعے نسبتا complete مکمل تجارتی نظام تیار کرتی ہے۔ اگرچہ اس میں کچھ تاخیر ہے ، لیکن یہ سخت سگنل فلٹرنگ اور رسک مینجمنٹ کے ذریعے رجحان سازی کی منڈیوں میں مستحکم منافع حاصل کرسکتا ہے۔ تاجروں کو مشورہ دیا جاتا ہے کہ وہ مارکیٹ کی مخصوص خصوصیات اور عملی ایپلی کیشنز میں ان کے رسک رواداری کے مطابق پیرامیٹرز کو ایڈجسٹ کریں۔ اس دوران ، نظام کی کارکردگی کی مسلسل نگرانی اور اصلاح کی سمتوں کا باقاعدہ جائزہ لینا ضروری ہے تاکہ اس بات کو یقینی بنایا جاسکے کہ حکمت عملی مارکیٹ میں ہونے والی تبدیلیوں کے مطابق ہے۔
/*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")