
এই কৌশলটি একটি অভিযোজিত সুপার ট্রেন্ড ট্রেডিং সিস্টেম যা মেশিন লার্নিং এর উপর ভিত্তি করে এটি অস্থিরতা ক্লাস্টারিং, অভিযোজিত ATR ট্রেন্ড ডিটেকশন এবং স্ট্রাকচার্ড এন্ট্রি এবং এক্সিট মেকানিজমকে একীভূত করে প্রথাগত সুপারট্রেন্ড সূচকের নির্ভরযোগ্যতা উন্নত করে। কৌশলটির মূল হল মেশিন লার্নিং পদ্ধতির মাধ্যমে বাজারের অস্থিরতাকে শ্রেণীবদ্ধ করা, উপযুক্ত বাজার পরিবেশে ট্রেন্ড-অনুসরণকারী লেনদেন পরিচালনা করা এবং ঝুঁকি নিয়ন্ত্রণের জন্য গতিশীল স্টপ-লস এবং টেক-প্রফিট ব্যবহার করা।
কৌশলটিতে তিনটি মূল উপাদান রয়েছে: 1) প্রবণতা দিক এবং টার্নিং পয়েন্ট নির্ধারণের জন্য ATR-এর উপর ভিত্তি করে অস্থিরতা ক্লাস্টারিং উচ্চ, মাঝারি এবং নিম্ন একটি অস্থিরতা পরিবেশে শ্রেণীবদ্ধ করার জন্য; অস্থিরতা পরিবেশের উপর ভিত্তি করে ট্রেডিং নিয়ম। কম অস্থিরতা পরিবেশে প্রবণতা সুযোগ সন্ধান করুন এবং উচ্চ অস্থিরতা পরিবেশে সতর্ক থাকুন। সিস্টেমটি 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")