
यह रणनीति मशीन लर्निंग पर आधारित एक अनुकूली सुपरट्रेंड ट्रेडिंग सिस्टम है। यह अस्थिरता क्लस्टरिंग, अनुकूली एटीआर प्रवृत्ति का पता लगाने और संरचित प्रवेश और निकास तंत्र को एकीकृत करके पारंपरिक सुपरट्रेंड संकेतकों की विश्वसनीयता में सुधार करता है। रणनीति का मूल उद्देश्य मशीन लर्निंग विधियों के माध्यम से बाजार की अस्थिरता को वर्गीकृत करना, उचित बाजार परिवेश में प्रवृत्ति ट्रैकिंग लेनदेन का संचालन करना, तथा जोखिमों को नियंत्रित करने के लिए गतिशील स्टॉप-लॉस और टेक-प्रॉफिट का उपयोग करना है।
रणनीति में तीन प्रमुख घटक शामिल हैं: 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")