
इस रणनीति का मुख्य तर्क सरल और असभ्य हैः शून्य अंतराल ईएमए पारंपरिक चलती औसत के पीछे की स्थिति को समाप्त करता है, सुपरट्रेंड प्रवृत्ति की दिशा की पुष्टि करता है। दो संकेतकों को एक साथ उछाल या गिरावट के लिए रखा जाना चाहिए, और दोहरी फ़िल्टरिंग तंत्र ने फीडबैक में झूठे टूटने के प्रभाव को काफी कम कर दिया है। 70 चक्र की शून्य अंतराल सेटिंग 1.2 गुना अस्थिरता गुणांक के साथ काम करती है, जो बाजार के शोर को प्रभावी ढंग से फ़िल्टर करती है और केवल वास्तविक प्रवृत्ति के मोड़ को पकड़ती है।
यह महत्वपूर्ण है कि हम volatility की गणना करें:*3) * mult, यह सूत्र 210 चक्रों के भीतर अधिकतम एटीआर मूल्य को 1.2 से गुणा करता है, यह सुनिश्चित करता है कि सिग्नल को केवल एक बड़े पर्याप्त अस्थिरता थ्रेशोल्ड को तोड़ने के लिए ट्रिगर किया जाएगा। प्रयोगात्मक डेटा से पता चलता है कि यह केवल एक निश्चित थ्रेशोल्ड रणनीति का उपयोग करने की तुलना में लगभग 40% कम अमान्य लेनदेन है।
सुपरट्रेंड भाग 14 चक्र एटीआर के साथ 3.0 गुना गुणांक का उपयोग करता है, जो कि अधिकांश बाजारों में स्थिर प्रदर्शन करता है। 2.0-2.5 गुना सेट की तुलना में 3.0 गुना गुणांक, हालांकि कुछ अल्पकालिक रिबाउंड अवसरों को याद किया जाता है, यह काफी कम होता है।
स्टॉप-स्टॉप-लॉस सेटिंग में एक निश्चित प्रतिशत हैः 1.0% स्टॉप, 0.5% स्टॉप, रिस्क-रिटर्न अनुपात 2: 1 तक है। यह सेटिंग उच्च आवृत्ति वाले ट्रेडिंग वातावरण के लिए उपयुक्त है, लेकिन कम अस्थिरता वाले बाजारों में अत्यधिक संवेदनशील स्टॉप-लॉस के बारे में सावधान रहना चाहिए। यह सलाह दी जाती है कि जब VIX 15 से कम हो तो स्टॉप-लॉस को 0.8% तक उचित रूप से ढीला किया जाए।
विशेष रूप से ध्यान देने योग्य है कि बाहर निकलने के अलर्ट के डिजाइनः longTP_hit और longSL_hit रणनीति.position_size के माध्यम से स्थिति स्थिति का आकलन, दोहराए गए सिग्नल के हस्तक्षेप से बचें। यह डिजाइन वास्तविक समय में व्यापार के लिए महत्वपूर्ण है और नेटवर्क विलंबता के कारण दोहराए जाने वाले खुले पदों को रोकता है।
रुझान बाजारलंबाई को 50 तक समायोजित किया जा सकता है, मल्टी को 1.0 तक कम किया जा सकता है, जिससे सिग्नल संवेदनशीलता बढ़ जाती है बाज़ार में तबाहीलंबाई बढ़कर 90 हो गई, फैक्टर बढ़कर 3.5 हो गया, झूठी सफलताओं में कमी आई उच्च अस्थिरतास्टॉप लॉस 1.0% तक बढ़ाया गया, स्टॉप लॉस 2.0% तक बढ़ाया गया, अधिक कीमतों के उतार-चढ़ाव के लिए अनुकूलित किया गया
Zero Lag EMA का विलंब गणना सूत्र math.floor (((length - 1) / 2) सूचक की प्रतिक्रिया की गति को सुनिश्चित करता है, लेकिन चरम स्थितियों में अभी भी विलंब हो सकता है। संश्लेषित लेन-देन सूचक को दूसरी पुष्टि के लिए अनुशंसित किया गया है, जब लेन-देन 20 चक्रों के औसत से कम हो तो व्यापार संकेतों को रोकना।
ऐतिहासिक रीट्रेसिंग डेटा के अनुसार, यह रणनीति स्पष्ट रूप से ट्रेंडिंग बाजार की स्थिति में बेहतर प्रदर्शन करती है, लेकिन क्षैतिज समाशोधन चरण में लगातार छोटे नुकसान का उत्पादन करने के लिए प्रवण है। जोखिम-समायोजित रिटर्न अधिकांश परीक्षण चक्रों में आधार सूचकांक से बेहतर है, लेकिन 15% से अधिक की अधिकतम वापसी का जोखिम है।
महत्वपूर्ण जोखिम युक्तियाँ:
/*backtest
start: 2025-01-01 00:00:00
end: 2025-09-18 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
//@version=5
strategy("Zero Lag + ML SuperTrend Strategy (Multi-Symbol)", overlay=true,
default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
length = input.int(70, "Zero Lag Length")
mult = input.float(1.2, "Band Multiplier")
atrPeriod = input.int(14, "ATR Period (SuperTrend)")
factor = input.float(3.0, "ATR Multiplier (SuperTrend)")
tpPerc = input.float(1.0, "Take Profit %")
slPerc = input.float(0.5, "Stop Loss %")
// === Symbol Info ===
sym = syminfo.ticker
// === Zero Lag Trend ===
src = close
lag = math.floor((length - 1) / 2)
zlema = ta.ema(src + (src - src[lag]), length)
volatility = ta.highest(ta.atr(length), length*3) * mult
bullZL = close > zlema + volatility
bearZL = close < zlema - volatility
// === ML SuperTrend ===
atr = ta.atr(atrPeriod)
upperband = hl2 + factor * atr
lowerband = hl2 - factor * atr
var float trend = na
if close > nz(trend[1], hl2)
trend := math.max(lowerband, nz(trend[1], hl2))
else
trend := math.min(upperband, nz(trend[1], hl2))
bullST = close > trend
bearST = close < trend
// === Combined Signals ===
longEntry = bullZL and bullST
shortEntry = bearZL and bearST
// === Strategy Execution ===
if (longEntry)
strategy.entry("Long", strategy.long)
if (shortEntry)
strategy.entry("Short", strategy.short)
// Exit conditions (fixed SL & TP)
longSL = strategy.position_avg_price * (1 - slPerc/100)
longTP = strategy.position_avg_price * (1 + tpPerc/100)
shortSL = strategy.position_avg_price * (1 + slPerc/100)
shortTP = strategy.position_avg_price * (1 - tpPerc/100)
strategy.exit("Exit Long", from_entry="Long", stop=longSL, limit=longTP)
strategy.exit("Exit Short", from_entry="Short", stop=shortSL, limit=shortTP)
// === Plotting ===
plot(zlema, "ZeroLagEMA", color=color.yellow)
plot(trend, "SuperTrend", color=color.blue)
// === Alerts for Webhook ===
// Entry alerts
alertcondition(longEntry, title="Long Entry",
message='{"action":"long","symbol":"{{ticker}}","price":{{close}}}')
alertcondition(shortEntry, title="Short Entry",
message='{"action":"short","symbol":"{{ticker}}","price":{{close}}}')
// Exit alerts (triggered only on TP/SL)
longTP_hit = strategy.position_size <= 0 and close >= longTP
longSL_hit = strategy.position_size <= 0 and close <= longSL
shortTP_hit = strategy.position_size >= 0 and close <= shortTP
shortSL_hit = strategy.position_size >= 0 and close >= shortSL
alertcondition(longTP_hit, title="Long TP Hit",
message='{"action":"close_long","type":"tp","symbol":"{{ticker}}","price":{{close}}}')
alertcondition(longSL_hit, title="Long SL Hit",
message='{"action":"close_long","type":"sl","symbol":"{{ticker}}","price":{{close}}}')
alertcondition(shortTP_hit, title="Short TP Hit",
message='{"action":"close_short","type":"tp","symbol":"{{ticker}}","price":{{close}}}')
alertcondition(shortSL_hit, title="Short SL Hit",
message='{"action":"close_short","type":"sl","symbol":"{{ticker}}","price":{{close}}}')