
حکمت عملی ایک رجحان کی پیروی کرنے والا تجارتی نظام ہے جو ایکسپونینشل موونگ ایوریج (EMA) اور ایوریج ڈائریکشنل انڈیکس (ADX) کو یکجا کرتا ہے۔ حکمت عملی EMA50 اور قیمت کے ملاپ سے تجارتی سمت کا تعین کرتی ہے، اور مارکیٹ کے رجحان کی طاقت کو فلٹر کرنے کے لیے ADX اشارے کا استعمال کرتی ہے، جبکہ منافع کے تحفظ کے لیے مسلسل منافع بخش K-لائن پر مبنی ڈائنامک سٹاپ نقصان کا طریقہ اپناتی ہے۔ یہ طریقہ نہ صرف مارکیٹ کے مرکزی رجحان کو پکڑ سکتا ہے، بلکہ رجحان کے کمزور ہونے پر وقت پر باہر نکل سکتا ہے۔
حکمت عملی کی بنیادی منطق درج ذیل کلیدی عناصر پر مبنی ہے:
یہ ایک اچھی طرح سے ڈیزائن کردہ رجحان کی پیروی کرنے والی حکمت عملی ہے جو خطرات کو کنٹرول کرتے ہوئے رجحانات کو مؤثر طریقے سے پکڑنے کے لیے EMA اور ADX کے فوائد کو یکجا کرتی ہے۔ حکمت عملی کا ڈائنامک اسٹاپ لاس میکانزم خاص طور پر جدید ہے اور منافع کے تحفظ اور رجحان کی گرفت کے درمیان اچھا توازن قائم کر سکتا ہے۔ اگرچہ اصلاح کے لیے کچھ گنجائش ہے، مجموعی طور پر فریم ورک مکمل ہے اور منطق واضح ہے یہ ایک حکمت عملی کا نظام ہے جو حقیقی تجارت میں تصدیق کے لائق ہے۔
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Simple EMA 50 Strategy with ADX Filter", overlay=true)
// Input parameters
emaLength = input.int(50, title="EMA Length")
adxThreshold = input.float(20, title="ADX Threshold", minval=0)
// Calculate EMA and ADX
ema50 = ta.ema(close, emaLength)
adxSmoothing = input.int(20, title="ADX Smoothing")
[diPlus, diMinus, adx] = ta.dmi(20, adxSmoothing)
// Conditions for long and short entries
adxCondition = adx > adxThreshold
longCondition = adxCondition and close > ema50 // Check if candle closes above EMA
shortCondition = adxCondition and close < ema50 // Check if candle closes below EMA
// Exit conditions based on 4 consecutive profitable candles
var float longSL = na
var float shortSL = na
var longCandleCounter = 0
var shortCandleCounter = 0
// Increment counters if positions are open and profitable
if (strategy.position_size > 0 and close > strategy.position_avg_price)
longCandleCounter += 1
if (longCandleCounter >= 4)
longSL := na(longSL) ? close : math.max(longSL, close) // Update SL dynamically
else
longCandleCounter := 0
longSL := na
if (strategy.position_size < 0 and close < strategy.position_avg_price)
shortCandleCounter += 1
if (shortCandleCounter >= 4)
shortSL := na(shortSL) ? close : math.min(shortSL, close) // Update SL dynamically
else
shortCandleCounter := 0
shortSL := na
// Exit based on trailing SL
if (strategy.position_size > 0 and not na(longSL) and close < longSL)
strategy.close("Buy", comment="Candle-based SL")
if (strategy.position_size < 0 and not na(shortSL) and close > shortSL)
strategy.close("Sell", comment="Candle-based SL")
// Entry logic: Check every candle for new positions
if (longCondition)
strategy.entry("Buy", strategy.long)
if (shortCondition)
strategy.entry("Sell", strategy.short)
// Plot EMA and ADX for reference
plot(ema50, color=color.blue, title="EMA 50")
plot(adx, color=color.orange, title="ADX", style=plot.style_stepline, linewidth=1)
plot(longSL, color=color.green, title="Long SL", style=plot.style_cross, linewidth=1)
plot(shortSL, color=color.red, title="Short SL", style=plot.style_cross, linewidth=1)
// Plot signals
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")