یہ حکمت عملی ایک مقداری تجارتی نظام ہے جس میں متعدد تیزی سے چلنے والی اوسط (ای ایم اے) ، رشتہ دار طاقت انڈیکس (آر ایس آئی) ، اور چلنے والی اوسط کنورجنس تغیر (ایم اے سی ڈی) کو یکجا کیا گیا ہے۔ یہ حکمت عملی متعدد تکنیکی اشارے کے ہم آہنگی کے ذریعے ایک مکمل تجارتی فیصلے کا فریم ورک تشکیل دیتی ہے۔ یہ چار ای ایم اے لائنز (10, 20, 50, اور 100 دن) کو اہم رجحان فیصلے کے اوزار کے طور پر استعمال کرتی ہے ، جس میں آر ایس آئی اور ایم اے سی ڈی کے ساتھ مل کر معاون تصدیق کے اشارے کے طور پر شامل ہوتا ہے ، جبکہ خطرہ پر قابو پانے کے لئے اسٹاپ نقصان اور منافع حاصل کرنا۔
حکمت عملی کا بنیادی منطق مندرجہ ذیل اہم عناصر پر مبنی ہے:
یہ سخت منطق کے ساتھ ایک اچھی طرح سے ڈیزائن کردہ مقداری تجارتی حکمت عملی ہے۔ متعدد تکنیکی اشارے کے مشترکہ استعمال کے ذریعے ، یہ جامع رسک کنٹرول میکانزم کو برقرار رکھتے ہوئے مارکیٹ کے رجحانات کو مؤثر طریقے سے حاصل کرسکتا ہے۔ اس حکمت عملی میں اصلاح کی اہم صلاحیت ہے ، اور مسلسل بہتری اور ایڈجسٹمنٹ کے ذریعے ، بہتر تجارتی نتائج کی توقع کی جاسکتی ہے۔ براہ راست تجارت سے پہلے مکمل بیک ٹیسٹنگ کرنے اور مخصوص مارکیٹ کے حالات کے مطابق پیرامیٹرز کو ایڈجسٹ کرنے کی سفارش کی جاتی ہے۔
/*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("4 EMA Strategy with RSI & MACD", shorttitle="4 EMA + RSI + MACD", overlay=true) // Input EMA periods ema1 = input(10, title="EMA 1") ema2 = input(20, title="EMA 2") ema3 = input(50, title="EMA 3") ema4 = input(100, title="EMA 4") // Input RSI & MACD settings rsiLength = input(14, title="RSI Length") rsiOverbought = input(70, title="RSI Overbought") rsiOversold = input(30, title="RSI Oversold") macdFast = input(12, title="MACD Fast Length") macdSlow = input(26, title="MACD Slow Length") macdSignal = input(9, title="MACD Signal Length") // Stop Loss and Take Profit Inputs stopLossPct = input.float(1.5, title="Stop Loss %") / 100 takeProfitPct = input.float(3, title="Take Profit %") / 100 // Calculate EMAs ema_1 = ta.ema(close, ema1) ema_2 = ta.ema(close, ema2) ema_3 = ta.ema(close, ema3) ema_4 = ta.ema(close, ema4) // Calculate RSI rsi = ta.rsi(close, rsiLength) // Calculate MACD [macdLine, signalLine, _] = ta.macd(close, macdFast, macdSlow, macdSignal) // Plot EMAs plot(ema_1, color=color.blue, title="EMA 10") plot(ema_2, color=color.green, title="EMA 20") plot(ema_3, color=color.orange, title="EMA 50") plot(ema_4, color=color.red, title="EMA 100") // Entry Conditions longCondition = ta.crossover(ema_1, ema_4) and ta.crossover(ema_2, ema_3) and rsi > 50 and macdLine > signalLine shortCondition = ta.crossunder(ema_1, ema_4) and ta.crossunder(ema_2, ema_3) and rsi < 50 and macdLine < signalLine // Declare Stop Loss and Take Profit Variables var float stopLossPrice = na var float takeProfitPrice = na var line stopLossLine = na var line takeProfitLine = na // Long Trade if (longCondition) strategy.entry("Buy", strategy.long) stopLossPrice := strategy.position_avg_price * (1 - stopLossPct) takeProfitPrice := strategy.position_avg_price * (1 + takeProfitPct) // stopLossLine := line.new(bar_index, stopLossPrice, bar_index + 1, stopLossPrice, color=color.red, width=2, style=line.style_dotted) // takeProfitLine := line.new(bar_index, takeProfitPrice, bar_index + 1, takeProfitPrice, color=color.green, width=2, style=line.style_dotted) // Short Trade if (shortCondition) strategy.entry("Sell", strategy.short) stopLossPrice := strategy.position_avg_price * (1 + stopLossPct) takeProfitPrice := strategy.position_avg_price * (1 - takeProfitPct) // stopLossLine := line.new(bar_index, stopLossPrice, bar_index + 1, stopLossPrice, color=color.red, width=2, style=line.style_dotted) // takeProfitLine := line.new(bar_index, takeProfitPrice, bar_index + 1, takeProfitPrice, color=color.green, width=2, style=line.style_dotted) // Clear Lines on Trade Exit // if (strategy.position_size == 0) // line.delete(stopLossLine) // line.delete(takeProfitLine) // Exit Trades if (strategy.position_size > 0) strategy.exit("Sell", from_entry="Buy", stop=stopLossPrice, limit=takeProfitPrice) if (strategy.position_size < 0) strategy.exit("Cover", from_entry="Sell", stop=stopLossPrice, limit=takeProfitPrice)