
یہ ایک ٹرینڈ ٹریکنگ حکمت عملی ہے جو کثیر دورانیہ تجزیہ اور اتار چڑھاؤ کے انتظام کو جوڑتی ہے۔ حکمت عملی کا مرکز دوہری مساوی لائن کراسنگ ٹرینڈ کی سمت کا تعین کرتا ہے ، آر ایس آئی اشارے کے ذریعہ اوور خرید اوور فروخت فلٹر کرتا ہے ، اعلی ٹائم پیریڈ ای ایم اے کو مجموعی رجحان کی تصدیق کرتا ہے ، اور اے ٹی آر اشارے کو متحرک طور پر اسٹاپ نقصانات اور منافع کے اہداف کا انتظام کرنے کے لئے استعمال کرتا ہے۔ یہ حکمت عملی متعدد تکنیکی اشارے کے ساتھ مل کر کام کرتی ہے ، جس سے تجارتی سگنل کی وشوسنییتا کو یقینی بنایا جاتا ہے اور خطرے پر موثر کنٹرول حاصل ہوتا ہے۔
اس حکمت عملی کے بنیادی تجارتی منطق کو مندرجہ ذیل اہم حصوں میں تقسیم کیا گیا ہے:
یہ ایک اچھی طرح سے ڈیزائن کیا گیا رجحان کی پیروی کی حکمت عملی ہے ، جس میں کثیر دورانیہ تجزیہ اور اتار چڑھاؤ کے انتظام کے ذریعہ بہتر رسک کمائی کی خصوصیت حاصل کی گئی ہے۔ حکمت عملی کا بنیادی فائدہ متعدد تکنیکی اشارے کا نامیاتی امتزاج ہے ، جو تجارت کی وشوسنییتا کو یقینی بناتا ہے اور خطرے پر موثر کنٹرول حاصل کرتا ہے۔ اگرچہ کچھ ممکنہ خطرات موجود ہیں ، لیکن اس حکمت عملی کی مجموعی کارکردگی کو بہتر بنانے کے لئے جگہ موجود ہے۔
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-26 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trend Following with ATR and MTF Confirmation", overlay=true)
// Parameters
emaShortPeriod = input.int(9, title="Short EMA Period", minval=1)
emaLongPeriod = input.int(21, title="Long EMA Period", minval=1)
rsiPeriod = input.int(14, title="RSI Period", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought", minval=50)
rsiOversold = input.int(30, title="RSI Oversold", minval=1)
atrPeriod = input.int(14, title="ATR Period", minval=1)
atrMultiplier = input.float(1.5, title="ATR Multiplier", minval=0.1)
takeProfitATRMultiplier = input.float(2.0, title="Take Profit ATR Multiplier", minval=0.1)
// Multi-timeframe settings
htfEMAEnabled = input.bool(true, title="Use Higher Timeframe EMA Confirmation?", inline="htf")
htfEMATimeframe = input.timeframe("D", title="Higher Timeframe", inline="htf")
// Select trade direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Both", "Long", "Short"])
// Calculating indicators
emaShort = ta.ema(close, emaShortPeriod)
emaLong = ta.ema(close, emaLongPeriod)
rsiValue = ta.rsi(close, rsiPeriod)
atrValue = ta.atr(atrPeriod)
// Higher timeframe EMA confirmation
htfEMALong = request.security(syminfo.tickerid, htfEMATimeframe, ta.ema(close, emaLongPeriod))
// Trading conditions
longCondition = ta.crossover(emaShort, emaLong) and rsiValue < rsiOverbought and (not htfEMAEnabled or close > htfEMALong)
shortCondition = ta.crossunder(emaShort, emaLong) and rsiValue > rsiOversold and (not htfEMAEnabled or close < htfEMALong)
// Plotting EMAs
plot(emaShort, title="EMA Short", color=color.green)
plot(emaLong, title="EMA Long", color=color.red)
// Trailing Stop-Loss and Take-Profit levels
var float trailStopLoss = na
var float trailTakeProfit = na
// Exit conditions
var bool exitLongCondition = na
var bool exitShortCondition = na
if (strategy.position_size != 0)
if (strategy.position_size > 0) // Long Position
trailStopLoss := na(trailStopLoss) ? close - atrValue * atrMultiplier : math.max(trailStopLoss, close - atrValue * atrMultiplier)
trailTakeProfit := close + atrValue * takeProfitATRMultiplier
exitLongCondition := close <= trailStopLoss or close >= trailTakeProfit
strategy.exit("Exit Long", "Long", stop=trailStopLoss, limit=trailTakeProfit, when=exitLongCondition)
else // Short Position
trailStopLoss := na(trailStopLoss) ? close + atrValue * atrMultiplier : math.min(trailStopLoss, close + atrValue * atrMultiplier)
trailTakeProfit := close - atrValue * takeProfitATRMultiplier
exitShortCondition := close >= trailStopLoss or close <= trailTakeProfit
strategy.exit("Exit Short", "Short", stop=trailStopLoss, limit=trailTakeProfit, when=exitShortCondition)
// Strategy Entry
if (longCondition and (tradeDirection == "Both" or tradeDirection == "Long"))
strategy.entry("Long", strategy.long)
if (shortCondition and (tradeDirection == "Both" or tradeDirection == "Short"))
strategy.entry("Short", strategy.short)
// Plotting Buy/Sell signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Plotting Trailing Stop-Loss and Take-Profit levels
plot(strategy.position_size > 0 ? trailStopLoss : na, title="Long Trailing Stop Loss", color=color.red, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailStopLoss : na, title="Short Trailing Stop Loss", color=color.green, linewidth=2, style=plot.style_line)
plot(strategy.position_size > 0 ? trailTakeProfit : na, title="Long Take Profit", color=color.blue, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailTakeProfit : na, title="Short Take Profit", color=color.orange, linewidth=2, style=plot.style_line)
// Alerts
alertcondition(longCondition, title="Buy Alert", message="Buy Signal Triggered")
alertcondition(shortCondition, title="Sell Alert", message="Sell Signal Triggered")
alertcondition(exitLongCondition, title="Long Exit Alert", message="Long Position Closed")
alertcondition(exitShortCondition, title="Short Exit Alert", message="Short Position Closed")