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