
EMA, ATR, MOMENTUM, EFFICIENCY, BREAKOUT
18/50/120 त्रि-मध्यम-रेखा सेटिंग के बारे में धोखा न दें। इस रणनीति के केंद्र में 8 अलग-अलग आयामों की प्रवृत्ति सत्यापन प्रणाली है, प्रत्येक आयाम में स्पष्ट संख्यात्मक मानदंड हैं। यह एक साधारण सुनहरा कांटा नहीं है, बल्कि एक भारित स्कोरिंग तंत्र द्वारा प्रवृत्ति की गुणवत्ता का न्याय करने के लिए है ((न्यूनतम 5.0 अंक प्रवेश, 2.5 अंक से कम) ।)
पारंपरिक औसत रेखा रणनीतियों के साथ समस्या यह है कि बहुत सारे झूठे संकेत हैं। यह प्रणाली कई फ़िल्टरिंग के माध्यम से प्रवेश की सफलता दर को नई ऊंचाइयों पर ले जाती है जैसे कि पथ दक्षता (न्यूनतम 33%), गतिशीलता निरंतरता (K लाइन अनुपात में 57% से अधिक की वृद्धि), और अस्थिरता की स्थिति (एटीआर अनुपात 95% से अधिक) ।
बाजार में 90 प्रतिशत से अधिक ब्रेक नकली होते हैं। इस रणनीति के अनुसार, एक ब्रेक की ताकत 0.15 गुना एटीआर तक होनी चाहिए, जिसका अर्थ है कि एक ब्रेक को हाल के औसत उतार-चढ़ाव के 15 प्रतिशत से अधिक माना जाता है।
रिटारगेट रिटारगेट मैकेनिज्म अधिक परिष्कृत है: यह मांग करता है कि कीमतें कम से कम 0.9 गुना एटीआर की गहराई से रिटारगेट करें, और फिर 0.15 गुना एटीआर तक पहुंचें जब यह औसत रेखा पर वापस आ जाए। यह डिजाइन प्रभावी रूप से उथले झूठे ब्रेकआउट को फ़िल्टर करता है और केवल वास्तव में वित्त पोषित प्रवृत्ति को पकड़ता है।
2x लीवरेज सेटिंग्स कट्टरपंथी लगती हैं, लेकिन 2% हार्ड स्टॉप और 2.8x एटीआर डायनामिक ट्रैकिंग के साथ, वास्तविक जोखिम नियंत्रित है। 20.8x एटीआर के लाभ-लॉकिंग तंत्र के साथ और भी महत्वपूर्ण बात यह है कि जब फ्लोट इस स्तर तक पहुंचता है तो यह स्वचालित रूप से स्टॉप-लॉस को बढ़ाता है, यह सुनिश्चित करता है कि बड़े रुझान में लाभ वापस नहीं आएगा।
एक पूर्ण K लाइन के डिजाइन को जबरदस्ती रखने से उच्च आवृत्ति में आने और जाने से बचा जाता है, और 5 K लाइनों के शीतलन अवधि से भावनात्मक निरंतर लेनदेन से बचा जाता है। यह गति नियंत्रण केवल तकनीकी संकेतकों से अधिक महत्वपूर्ण है।
प्रवृत्ति निरंतरता प्रवेशः प्रवृत्तियों के लिए लागू मजबूत प्रवृत्तियों की स्थापना की है, तोड़ने की आवश्यकता है + ढलान + दक्षता + गति सभी मापदंडों को पूरा करती है। समायोजन पुनः प्रवेशः स्वस्थ प्रवृत्ति के लिए समायोजन, पर्याप्त गहराई की आवश्यकता होती है और ताकत को फिर से हासिल करना। प्रारंभिक प्रवृत्ति प्रवेशः प्रवृत्ति परिवर्तन की गोल्डन 14 के लाइन विंडो अवधि को पकड़ना।
इस तरह के बहु-मोड डिजाइन का लाभ यह है कि यह किसी भी प्रकार के प्रवृत्ति के अवसरों को याद नहीं करता है, और प्रत्येक मोड के लिए सख्त गुणवत्ता मानकों के साथ। जाल नहीं, बल्कि सटीक निशानेबाजी।
पथ दक्षता की गणना 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)