
EMA, ATR, MOMENTUM, EFFICIENCY, BREAKOUT
18/50/120 تین اوسط لائنوں کی سطح کی طرف سے دھوکہ نہ دیں۔ اس حکمت عملی کا مرکز 8 آزاد جہتوں کا رجحان کی توثیق کا نظام ہے ، جس میں ہر جہت میں واضح عددی معیار ہیں۔ سادہ گولڈ فورک ڈیڈ فورکس کے بجائے ، رجحانات کے معیار کا فیصلہ کرنے کے لئے ایک وزنی اسکورنگ میکانزم ((کم از کم 5.0 داخلہ ، 2.5 سے کم آؤٹ) کے ذریعہ) ۔
روایتی اوسط لکیری حکمت عملی کے ساتھ مسئلہ یہ ہے کہ بہت زیادہ جعلی سگنل ہیں۔ یہ نظام متعدد فلٹرنگ کے ذریعے داخلے کی کامیابی کی شرح کو نئی بلندیوں تک پہنچاتا ہے جیسے راستے کی کارکردگی ((کم از کم 33٪) ، طاقت کی مستقل مزاجی ((K لائن تناسب میں 57٪ سے زیادہ اضافہ) ، اتار چڑھاؤ کی حیثیت ((ATR تناسب 95٪ سے زیادہ)) ۔
مارکیٹ میں 90 فیصد سے زیادہ توڑ جعلی ہیں۔ اس حکمت عملی کے مطابق ، توڑنے کی طاقت کو 0.15x اے ٹی آر تک پہنچنا ضروری ہے ، جس کا مطلب ہے کہ حالیہ اوسط اتار چڑھاؤ کے 15 فیصد سے زیادہ توڑ کو ایک موثر سگنل سمجھا جاتا ہے۔
ریڈارٹ ریکوری میکانیزم زیادہ نفیس ہے: قیمتوں کو فوری لائن سے کم از کم 0.9x اے ٹی آر کی گہرائی میں ریڈارٹ کرنے کی ضرورت ہوتی ہے ، اور پھر اوسط لائن پر دوبارہ کھڑے ہونے پر 0.15x اے ٹی آر کی شدت تک پہنچ جاتی ہے۔ یہ ڈیزائن مؤثر طریقے سے کم سطح کے جعلی توڑ کو فلٹر کرتا ہے اور صرف ان رجحانات کو پکڑتا ہے جن کی اصل میں مالی اعانت ہے۔
2x بیعانہ کی ترتیب جارحانہ لگتی ہے ، لیکن 2٪ ہارڈ اسٹاپ اور 2.8x اے ٹی آر متحرک ٹریکنگ کے ساتھ ، اصل خطرہ قابل کنٹرول ہے۔ اس سے بھی اہم بات یہ ہے کہ 20.8x اے ٹی آر کا منافع لاک کرنے والا میکانزم ہے ، جب فلوٹ اس سطح تک پہنچ جاتا ہے تو خود بخود اسٹاپ نقصان کو بڑھاتا ہے ، اس بات کو یقینی بناتا ہے کہ بڑے رجحان میں منافع واپس نہیں آئے گا۔
ایک مکمل K لائن کو ہولڈ کرنے کے لئے ڈیزائن کیا گیا ہے تاکہ ہائی فریکوئینسی ان پٹ اور آؤٹ پٹ کو روکا جاسکے۔ پانچ K لائنوں میں ٹھنڈا ہونے کا دورانیہ جذباتی تسلسل کو روکتا ہے۔ اس طرح کی رفتار کا کنٹرول محض تکنیکی اشارے سے زیادہ اہم ہے۔
رجحانات میں دوبارہ داخلہ: مضبوط رجحانات پر لاگو ہوتا ہے جو قائم ہوچکا ہے ، جس میں مکمل طور پر پورا ہونا ضروری ہے + اسکیلپنگ + کارکردگی + طاقت . ریڈیکٹ دوبارہ داخلہ: صحت مند رجحانات میں ریڈیکٹ ، جس میں کافی گہرائی اور دوبارہ قبضہ کرنا ضروری ہے۔ ابتدائی رجحانات میں داخلہ: رجحانات میں تبدیلی کی گولڈ 14 K لائن ونڈو کی مدت کو پکڑنا
اس طرح کے ملٹی موڈ ڈیزائن کا فائدہ یہ ہے کہ کسی بھی قسم کے رجحان کے مواقع سے محروم نہیں ہوتا ہے ، اور ہر موڈ میں سخت معیار کے معیار ہوتے ہیں۔ نیٹ ورک نہیں ، بلکہ عین مطابق اسنیپنگ۔
18 ادوار میں خالص نقل و حرکت اور مجموعی نقل و حرکت کے تناسب کا حساب لگانے کے لئے راستے کی کارکردگی۔ اس سے کم 33٪ کا رجحان مستقل طور پر ٹکرا نہیں جاتا ہے۔ یہ اشارے زلزلے کی صورتحال میں جھوٹے رجحانات کی مؤثر طریقے سے نشاندہی کرسکتا ہے ، اور کراس اسٹاپ مارکیٹ میں بار بار نقصان سے بچ سکتا ہے۔
حرکت پذیری کی مستقل مزاجی کے لئے 57٪ سے زیادہ کی K لائن کا اختتام ہونا ضروری ہے ، اور 12 سائیکلوں کی حرکت پذیری کے ساتھ مثبت ہونا ضروری ہے۔ اس طرح کی دوہری توثیق سے رجحان کی اندرونی طاقت کو یقینی بنایا جاتا ہے ، نہ کہ صرف قیمت کی سطح کو توڑنا۔
یہ حکمت عملی واضح طور پر رجحان کی منڈیوں کی طرف راغب ہے ، اور زلزلے کے حالات میں اکثر باہر نکلنے کا اشارہ کرتا ہے۔ 80٪ سے کم اے ٹی آر کی حالت اور 25٪ سے کم کارکردگی کے ساتھ باہر نکلنے پر مجبور کرنے کا ڈیزائن ، اس حکمت عملی کی مارکیٹ کے ماحول کے لئے واضح تقاضوں کی نشاندہی کرتا ہے۔
سب سے بڑا خطرہ رجحان کی منتقلی کی مدت میں تاخیر کا ہے ، اگرچہ تیز رفتار ای ایم اے کراسنگ جیسے ابتدائی انتباہات موجود ہیں ، لیکن تیزی سے الٹ جانے پر پھر بھی بڑی واپسی کا سامنا کرنا پڑ سکتا ہے۔ اعلی اتار چڑھاؤ والے ترقیاتی اسٹاک یا کریپٹوکرنسی مارکیٹ میں استعمال کرنے کی سفارش کی جاتی ہے ، اور کم اتار چڑھاؤ والی اقسام جیسے بڑے پیمانے پر بلیو چپس پر استعمال سے گریز کریں۔
خطرے سے متعلق اشارہ: تاریخی ریٹرن مستقبل کی آمدنی کی نمائندگی نہیں کرتا ، حکمت عملی میں مسلسل نقصان کا خطرہ ہے ، خطرے کے انتظام کو سختی سے نافذ کرنے کی ضرورت ہے ، مارکیٹ کے مختلف حالات میں نمایاں طور پر مختلف کارکردگی ہے۔
/*backtest
start: 2026-01-07 15:30:00
end: 2026-03-15 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"XAG_USDT","balance":500000}]
*/
//@version=5
strategy("Quant Trend Engine Long Only v2 - Manual Leverage Fixed", overlay=true)
// === Core lengths ===
fastLen = input.int(18, "Fast EMA")
midLen = input.int(50, "Mid EMA")
slowLen = input.int(120, "Slow EMA")
smoothLen = input.int(3, "EMA Smoothing")
pullbackLen = input.int(8, "Pullback Lookback")
breakoutLen = input.int(20, "Breakout Length")
effLen = input.int(18, "Efficiency Length")
persistLen = input.int(7, "Persistence Length")
momLen = input.int(12, "Momentum Length")
slopeLen = input.int(10, "Slope Length")
atrLen = input.int(14, "ATR Length")
atrBaseLen = input.int(40, "ATR Baseline Length")
// === Thresholds ===
minScore = input.float(5.0, "Minimum Entry Score", step=0.25)
exitScore = input.float(2.5, "Weak Trend Exit Score", step=0.25)
minSepPerc = input.float(0.30, "Min EMA Separation %", step=0.05)
minSlowSlopePerc = input.float(0.03, "Min Slow Slope %", step=0.01)
minEff = input.float(0.33, "Min Efficiency", step=0.01)
minAtrRegime = input.float(0.95, "Min ATR Regime", step=0.05)
minBreakoutAtr = input.float(0.15, "Min Breakout ATR Strength", step=0.05)
pullbackAtrMult = input.float(0.90, "Pullback Distance ATR", step=0.05)
reclaimAtrMult = input.float(0.15, "Reclaim Distance ATR", step=0.05)
cooldownBars = input.int(5, "Cooldown Bars After Exit")
// === Risk ===
leverage = input.float(2.0, "Leverage", step=0.1, minval=0.1)
hardStopPerc = input.float(2.0, "Hard Stop %", step=0.1)
trailAtrMult = input.float(2.8, "ATR Trail Mult", step=0.1)
profitLockAtrMult = input.float(20.8, "Profit Lock ATR Mult", step=0.1)
// === Smoothed EMAs ===
fast = ta.ema(ta.ema(close, fastLen), smoothLen)
mid = ta.ema(ta.ema(close, midLen), smoothLen)
slow = ta.ema(ta.ema(close, slowLen), smoothLen)
// === Regime structure ===
bullStack = fast > mid and mid > slow
sepPerc = slow != 0 ? math.abs(fast - slow) / slow * 100 : 0.0
sepOk = sepPerc >= minSepPerc
fastSlope = fast[slopeLen] != 0 ? (fast - fast[slopeLen]) / fast[slopeLen] * 100 : 0.0
midSlope = mid[slopeLen] != 0 ? (mid - mid[slopeLen]) / mid[slopeLen] * 100 : 0.0
slowSlope = slow[slopeLen] != 0 ? (slow - slow[slopeLen]) / slow[slopeLen] * 100 : 0.0
slopeOk = slowSlope >= minSlowSlopePerc and midSlope > 0 and fastSlope > 0
// === Path efficiency ===
netMove = math.abs(close - close[effLen])
stepMove = 0.0
for i = 1 to effLen
stepMove += math.abs(close[i - 1] - close[i])
efficiency = stepMove != 0 ? netMove / stepMove : 0.0
effOk = efficiency >= minEff
// === Momentum persistence ===
upBars = 0.0
for i = 0 to persistLen - 1
upBars += close[i] > close[i + 1] ? 1 : 0
persistRatio = persistLen > 0 ? upBars / persistLen : 0.0
momRaw = close[momLen] != 0 ? (close - close[momLen]) / close[momLen] * 100 : 0.0
momOk = momRaw > 0 and persistRatio >= 0.57
// === Volatility regime ===
atr = ta.atr(atrLen)
atrBase = ta.sma(atr, atrBaseLen)
atrRegime = atrBase != 0 ? atr / atrBase : 0.0
atrOk = atrRegime >= minAtrRegime
// === Breakout quality ===
hh = ta.highest(high, breakoutLen)[1]
breakoutDist = close - hh
breakoutStrength = atr != 0 ? breakoutDist / atr : 0.0
breakoutOk = close > hh and breakoutStrength >= minBreakoutAtr
// === Pullback / reclaim logic ===
pullbackLow = ta.lowest(low, pullbackLen)
distFromFastAtr = atr != 0 ? (fast - pullbackLow) / atr : 0.0
deepEnoughPullback = distFromFastAtr >= pullbackAtrMult
reclaimFast = close > fast and close[1] <= fast[1]
reclaimMid = close > mid and close[1] <= mid[1]
reclaimStrength = atr != 0 ? (close - fast) / atr : 0.0
reclaimOk = (reclaimFast or reclaimMid) and reclaimStrength >= reclaimAtrMult
// === Transition memory ===
bullCross = ta.crossover(fast, mid) or ta.crossover(fast, slow) or ta.crossover(mid, slow)
barsSinceBullCross = ta.barssince(bullCross)
recentTrendBirth = barsSinceBullCross >= 0 and barsSinceBullCross <= 14
// === Weighted score ===
trendScore = 0.0
trendScore += bullStack ? 1.50 : 0.0
trendScore += sepOk ? 0.90 : 0.0
trendScore += slopeOk ? 1.10 : 0.0
trendScore += effOk ? 1.00 : 0.0
trendScore += atrOk ? 0.80 : 0.0
trendScore += momOk ? 1.00 : 0.0
trendScore += breakoutOk ? 1.25 : 0.0
trendScore += reclaimOk ? 1.10 : 0.0
// === Entry models ===
trendContinuationEntry = bullStack and breakoutOk and slopeOk and effOk and momOk
pullbackReentry = bullStack and sepOk and slopeOk and deepEnoughPullback and reclaimOk and effOk
earlyTrendEntry = recentTrendBirth and bullStack and sepOk and slopeOk and atrOk and momOk
// === Cooldown ===
var int lastExitBar = na
cooldownOk = na(lastExitBar) or bar_index - lastExitBar > cooldownBars
// === Final entry ===
enterLong = strategy.position_size == 0 and cooldownOk and trendScore >= minScore and close > slow and (trendContinuationEntry or pullbackReentry or earlyTrendEntry)
// === Manual leveraged sizing only ===
equity = math.max(strategy.equity, 0)
positionValue = equity * leverage
qty = positionValue > 0 ? positionValue / (close * syminfo.pointvalue) : 0.0
// === Entry tracking / mandatory 1 full candle hold ===
var int entryBarIndex = na
justOpened = strategy.position_size > 0 and strategy.position_size[1] == 0
if justOpened
entryBarIndex := bar_index
canExitNow = strategy.position_size > 0 and not na(entryBarIndex) and bar_index > entryBarIndex
// === Entry order ===
if enterLong and qty > 0
strategy.entry("Long", strategy.long, qty=qty)
// === Risk logic ===
hardStopPrice = strategy.position_size > 0 ? strategy.position_avg_price * (1 - hardStopPerc / 100) : na
var float trailStop = na
var float highSinceEntry = na
highSinceEntry := strategy.position_size > 0 ? (na(highSinceEntry) ? high : math.max(highSinceEntry, high)) : na
rawTrail = strategy.position_size > 0 ? close - atr * trailAtrMult : na
profitLock = strategy.position_size > 0 ? highSinceEntry - atr * profitLockAtrMult : na
combinedTrail = strategy.position_size > 0 ? math.max(rawTrail, profitLock) : na
trailStop := strategy.position_size > 0 ? (na(trailStop) ? combinedTrail : math.max(trailStop, combinedTrail)) : na
// === Exit logic ===
bearCross = ta.crossunder(fast, mid) or ta.crossunder(fast, slow)
structureBreak = close < mid and fast < mid
scoreWeak = trendScore <= exitScore
momentumFailure = persistRatio < 0.40 and momRaw < 0
regimeFailure = atrRegime < 0.80 and efficiency < 0.25
exitLong = strategy.position_size > 0 and canExitNow and (bearCross or structureBreak or scoreWeak or momentumFailure or regimeFailure)
// Only allow stop/trailing exits after 1 full candle has passed
if strategy.position_size > 0 and canExitNow
strategy.exit("Risk Exit", from_entry="Long", stop=math.max(hardStopPrice, trailStop))
justClosed = strategy.position_size[1] > 0 and strategy.position_size == 0
if justClosed
lastExitBar := bar_index
trailStop := na
highSinceEntry := na
entryBarIndex := na
if exitLong
strategy.close("Long")
// === Plots ===
plot(fast, color=color.green, linewidth=2, title="Fast EMA")
plot(mid, color=color.orange, linewidth=2, title="Mid EMA")
plot(slow, color=color.red, linewidth=2, title="Slow EMA")
plot(strategy.position_size > 0 ? trailStop : na, color=color.blue, linewidth=2, title="Adaptive Trail")
plot(trendScore, title="Trend Score", color=color.aqua)
plot(efficiency, title="Efficiency", color=color.fuchsia)
plot(atrRegime, title="ATR Regime", color=color.yellow)
plot(breakoutStrength, title="Breakout Strength", color=color.lime)
plot(persistRatio, title="Persistence Ratio", color=color.white)