یہ ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جو متعدد تکنیکی اشارے کو جوڑتی ہے ، بنیادی طور پر تجارتی مواقع کی نشاندہی کرنے کے لئے ایکسپونینشل موونگ ایوریج (ای ایم اے) کراس اوور ، سپر ٹرینڈ اشارے ، اور رشتہ دار طاقت انڈیکس (آر ایس آئی) کا استعمال کرتی ہے۔ یہ حکمت عملی اشارے کو نامیاتی طور پر مربوط کرکے ، رجحان کی پیروی میں رفتار فلٹرنگ کا اضافہ کرکے ، اور متحرک اسٹاپ نقصان اور منافع لینے کی پوزیشننگ کے لئے اے ٹی آر کا استعمال کرتے ہوئے ایک مکمل تجارتی نظام حاصل کرتی ہے۔
حکمت عملی ٹریڈنگ سگنل کا تعین کرنے کے لئے ایک ٹرپل فلٹرنگ میکانزم کا استعمال کرتی ہے:
اس حکمت عملی میں اے ٹی آر پر مبنی متحرک اسٹاپ نقصان اور منافع لینے کا نظام شامل ہے جو مارکیٹ کی اتار چڑھاؤ کی بنیاد پر رسک مینجمنٹ پیرامیٹرز کو خود بخود ایڈجسٹ کرتا ہے۔ ایک ٹائم فلٹر بھی کم لیکویڈیٹی کے ادوار سے بچنے کے لئے مخصوص وقت کے ادوار تک ٹریڈنگ کو محدود کرتا ہے۔
یہ حکمت عملی متعدد تکنیکی اشارے اور فلٹرنگ شرائط کو جوڑ کر نسبتا complete مکمل تجارتی نظام تیار کرتی ہے۔ اس کے بنیادی فوائد متعدد تصدیق کے طریقہ کار اور متحرک رسک مینجمنٹ میں ہیں ، جبکہ پیرامیٹر کی اصلاح اور لین دین کے اخراجات پر توجہ دینی ہوگی۔ مسلسل اصلاح اور بہتری کے ذریعے ، حکمت عملی میں مختلف مارکیٹ کے ماحول میں مستحکم کارکردگی برقرار رکھنے کی صلاحیت ہے۔
/*backtest start: 2024-11-19 00:00:00 end: 2024-12-18 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Supertrend + EMA Crossover with RSI Filter", shorttitle="ST_EMA_RSI", overlay=true) // Input parameters for EMA fastEMA = input.int(3, title="Fast EMA Period", minval=1) slowEMA = input.int(6, title="Slow EMA Period", minval=1) atrLength = input.int(3, title="ATR Length", minval=1) // Using a fixed multiplier for Supertrend calculation stMultiplier = 1 // Stop loss and take profit multipliers stopLossATR = input.float(2.5, title="Stop Loss ATR Multiplier", minval=0.1, step=0.1) takeProfitATR = input.float(4, title="Take Profit ATR Multiplier", minval=0.1, step=0.1) // RSI inputs rsiLength = input.int(10, title="RSI Length", minval=1) rsiOverbought = input.float(65, title="RSI Overbought Level", minval=50.0, maxval=100.0) rsiOversold = input.float(30.0, title="RSI Oversold Level", minval=0.0, maxval=50.0) // Declare the RSI plot toggle input as a global variable bool rsiPlotEnabled = input.bool(true, title="Show RSI in separate panel") // Time filter inputs i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 2023 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups") i_endTime = input(title="End Filter", defval=timestamp("28 Apr 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups") // Date/time filtering logic inDateRange = true // Calculate EMAs fastEMALine = ta.ema(close, fastEMA) slowEMALine = ta.ema(close, slowEMA) // Calculate ATR atr = ta.atr(atrLength) // Calculate Supertrend using fixed multiplier up = high - (stMultiplier * atr) dn = low + (stMultiplier * atr) var float trendUp = na var float trendDown = na var int trend = na trendUp := na(trendUp[1]) ? up : (close[1] > trendUp[1] ? math.min(up, trendUp[1]) : up) trendDown := na(trendDown[1]) ? dn : (close[1] < trendDown[1] ? math.max(dn, trendDown[1]) : dn) trend := close > nz(trendUp[1]) ? 1 : close < nz(trendDown[1]) ? -1 : nz(trend[1], 1) supertrend = trend == 1 ? trendUp : trendDown // Calculate RSI myRSI = ta.rsi(close, rsiLength) // Entry conditions with RSI filter longEntryCondition = ta.crossover(fastEMALine, slowEMALine) and (trend == 1) and (myRSI < rsiOverbought) shortEntryCondition = ta.crossunder(fastEMALine, slowEMALine) and (trend == -1) and (myRSI > rsiOversold) // Strategy entries if inDateRange and longEntryCondition and strategy.position_size <= 0 strategy.entry("Long", strategy.long) if inDateRange and shortEntryCondition and strategy.position_size >= 0 strategy.entry("Short", strategy.short) // Stops and targets if strategy.position_size > 0 longStopLoss = strategy.position_avg_price - stopLossATR * atr longTakeProfit = strategy.position_avg_price + takeProfitATR * atr strategy.exit("Long SL/TP", "Long", stop=longStopLoss, limit=longTakeProfit) if strategy.position_size < 0 shortStopLoss = strategy.position_avg_price + stopLossATR * atr shortTakeProfit = strategy.position_avg_price - takeProfitATR * atr strategy.exit("Short SL/TP", "Short", stop=shortStopLoss, limit=shortTakeProfit) // Plot EMAs and Supertrend plot(fastEMALine, title="Fast EMA", color=color.new(color.blue, 0)) plot(slowEMALine, title="Slow EMA", color=color.new(color.red, 0)) plot(trend == 1 ? supertrend : na, title="Supertrend Up", color=color.green, style=plot.style_linebr) plot(trend == -1 ? supertrend : na, title="Supertrend Down", color=color.red, style=plot.style_linebr) // Plot RSI and hlines plot(rsiPlotEnabled ? myRSI : na, title="RSI", color=color.new(color.purple, 0)) hline(rsiOverbought, "Overbought", color=color.red, linestyle=hline.style_dotted) hline(rsiOversold, "Oversold", color=color.green, linestyle=hline.style_dotted) // Plot entry signals plotshape(longEntryCondition, title="Long Entry Signal", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=color.new(color.green, 0)) plotshape(shortEntryCondition, title="Short Entry Signal", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=color.new(color.red, 0))