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