यह रणनीति एक मशीन लर्निंग-आधारित अनुकूली सुपरट्रेंड ट्रेडिंग सिस्टम है जो अस्थिरता क्लस्टरिंग, अनुकूली एटीआर ट्रेंड डिटेक्शन और संरचित प्रवेश / निकास तंत्र को एकीकृत करके पारंपरिक सुपरट्रेंड संकेतक की विश्वसनीयता को बढ़ाता है। मूल अवधारणा मशीन लर्निंग विधियों के माध्यम से बाजार अस्थिरता को वर्गीकृत करने में निहित है, जो कि जोखिम नियंत्रण के लिए गतिशील स्टॉप-लॉस और ले-प्रॉफिट स्तरों का उपयोग करते हुए उपयुक्त बाजार स्थितियों में प्रवृत्ति-अनुसरण ट्रेडों को निष्पादित करती है।
रणनीति में तीन प्रमुख घटक शामिल हैंः 1) ट्रेंड की दिशा और मोड़ बिंदुओं को निर्धारित करने के लिए एटीआर पर आधारित अनुकूली सुपरट्रेंड गणना; 2) के-मध्यम-आधारित अस्थिरता समूह जो बाजार की स्थितियों को उच्च, मध्यम और कम अस्थिरता वातावरण में वर्गीकृत करता है; 3) अस्थिरता वातावरण के आधार पर विभेदित व्यापार नियम। यह उच्च अस्थिरता स्थितियों में सावधानी बनाए रखते हुए कम अस्थिरता वातावरण में रुझान के अवसरों की तलाश करता है। सिस्टम ta.crossunder और ta.crossover कार्यों का उपयोग करके ट्रेंड रिवर्स सिग्नल को कैप्चर करता है, जो सुपरट्रेंड लाइन के सापेक्ष मूल्य स्थिति के साथ संयुक्त है।
यह रणनीति पारंपरिक तकनीकी विश्लेषण विधियों के साथ मशीन लर्निंग तकनीकों को जोड़कर एक बुद्धिमान ट्रेंड-फॉलोइंग सिस्टम बनाती है। इसका मुख्य लाभ इसकी अनुकूलन क्षमता और जोखिम नियंत्रण क्षमताओं में निहित है, जो अस्थिरता क्लस्टरिंग के माध्यम से बुद्धिमान बाजार स्थिति पहचान प्राप्त करता है। जबकि पैरामीटर संवेदनशीलता जैसे जोखिम मौजूद हैं, निरंतर अनुकूलन और परिष्करण विभिन्न बाजार वातावरणों में स्थिर प्रदर्शन बनाए रखने में मदद कर सकता है। व्यापारियों को सलाह दी जाती है कि वे लाइव ट्रेडिंग में रणनीति को लागू करते समय पैरामीटर संवेदनशीलता का पूरी तरह से परीक्षण करें और विशिष्ट बाजार विशेषताओं के आधार पर अनुकूलन करें।
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 10m basePeriod: 10m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Adaptive SuperTrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200) // Import Indicator Components atr_len = input.int(10, "ATR Length", group="SuperTrend Settings") fact = input.float(3, "SuperTrend Factor", group="SuperTrend Settings") training_data_period = input.int(100, "Training Data Length", group="K-Means Settings") // Volatility Clustering volatility = ta.atr(atr_len) upper = ta.highest(volatility, training_data_period) lower = ta.lowest(volatility, training_data_period) high_volatility = lower + (upper-lower) * 0.75 medium_volatility = lower + (upper-lower) * 0.5 low_volatility = lower + (upper-lower) * 0.25 cluster = volatility >= high_volatility ? 0 : volatility >= medium_volatility ? 1 : 2 // SuperTrend Calculation pine_supertrend(factor, atr) => src = hl2 upperBand = src + factor * atr lowerBand = src - factor * atr prevLowerBand = nz(lowerBand[1]) prevUpperBand = nz(upperBand[1]) lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand int _direction = na float superTrend = na prevSuperTrend = superTrend[1] if na(atr[1]) _direction := 1 else if prevSuperTrend == prevUpperBand _direction := close > upperBand ? -1 : 1 else _direction := close < lowerBand ? 1 : -1 superTrend := _direction == -1 ? lowerBand : upperBand [superTrend, _direction] [ST, dir] = pine_supertrend(fact, volatility) // Entry Conditions longEntry = ta.crossunder(dir, 0) and cluster > 1 and close > ST shortEntry = ta.crossover(dir, 0) and cluster == 0 and close < ST // Stop Loss & Take Profit atr_mult = input.float(2, "ATR Multiplier for SL/TP", group="Risk Management") sl = atr_mult * ta.atr(atr_len) longStopLoss = close - sl longTakeProfit = close + (sl * 1.5) shortStopLoss = close + sl shortTakeProfit = close - (sl * 1.5) // Execute Trades if longEntry strategy.entry("Long", strategy.long) strategy.exit("Take Profit", from_entry="Long", limit=longTakeProfit, stop=longStopLoss) if shortEntry strategy.entry("Short", strategy.short) strategy.exit("Take Profit", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss) // Plot SuperTrend plot(ST, title="SuperTrend", color=dir > 0 ? color.green : color.red, linewidth=2) // Alerts alertcondition(longEntry, title="Long Entry Signal", message="Buy Signal - Trend Shift Up") alertcondition(shortEntry, title="Short Entry Signal", message="Sell Signal - Trend Shift Down")