
এই কৌশলটি একটি হাইব্রিড ট্রেডিং সিস্টেম যা ভরবেগ এবং গড় প্রত্যাবর্তন তত্ত্বকে একত্রিত করে। এটি পরিবর্তনের হার (ROC) নির্দেশক এবং বলিঞ্জার ব্যান্ড ব্যবহার করে বাজারে অতিরিক্ত কেনা ও বিক্রি হওয়া অবস্থা সনাক্ত করতে, নির্দিষ্ট থ্রেশহোল্ড অতিক্রম করার সময় ট্রেডিং সংকেতগুলিকে ট্রিগার করে। মোমেন্টাম ট্রানজিশন পয়েন্ট শনাক্ত করে এবং গড় মূল্যে প্রত্যাবর্তনের সম্পত্তিকে কাজে লাগিয়ে মুনাফা অর্জন করাই কৌশলটির মূল বিষয়।
কৌশলটি স্বল্প-মেয়াদী মূল্যের পরিবর্তনগুলি গণনা করতে 2-পিরিয়ড ROC সূচক ব্যবহার করে, এবং বিভিন্ন পরামিতি সহ বলিঙ্গার ব্যান্ডের দুটি সেট ব্যবহার করে: স্বল্প-মেয়াদী বলিঙ্গার ব্যান্ডগুলি (18 পিরিয়ড, 1.7 স্ট্যান্ডার্ড বিচ্যুতি) অতিরিক্ত বিক্রি হওয়া অবস্থা এবং প্রবেশের সংকেত নির্ধারণ করতে, এবং দীর্ঘমেয়াদী বলিঞ্জার ব্যান্ড (21 পিরিয়ড, 1.7 স্ট্যান্ডার্ড বিচ্যুতি) 2.1 স্ট্যান্ডার্ড বিচ্যুতি) অতিরিক্ত কেনা অবস্থা এবং প্রস্থান সংকেত নির্ধারণ করতে ব্যবহৃত হয়। যখন ROC নিচের বলিঙ্গার ব্যান্ডগুলিকে উপরের দিকে অতিক্রম করে, তখন এটি নির্দেশ করে যে দামের গতিবেগ দুর্বল থেকে শক্তিশালী হয়েছে, এবং যখন ROC উপরের বলিঞ্জার ব্যান্ডগুলিকে নীচের দিকে অতিক্রম করে তখন এটি নির্দেশ করে যে গতিবেগ দুর্বল হয়ে যায় এবং সিস্টেম বন্ধ হয়ে যায়; অবস্থান এবং প্রস্থান. কৌশলটি ব্যাকগ্রাউন্ডের রঙ দ্বারা অতিরিক্ত কেনা এবং ওভারবিক্রীত এলাকাগুলিকে চিহ্নিত করে, সবুজ নির্দেশ করে ওভারসেল্ড (উপরে যাওয়ার সম্ভাবনা) এবং লাল নির্দেশ করে অতিরিক্ত কেনা (নিচে যাওয়ার সম্ভাবনা)।
অভিযোজিত মোমেন্টাম মানে রিভার্সন ক্রসওভার কৌশলটি ROC সূচক এবং ডাবল বলিঞ্জার ব্যান্ডকে একত্রিত করে একটি ট্রেডিং সিস্টেম তৈরি করে যা বিভিন্ন বাজারের পরিবেশের সাথে খাপ খাইয়ে নিতে পারে। কৌশলটি নমনীয়তা বজায় রাখে এবং ঝুঁকি নিয়ন্ত্রণের দিকেও মনোযোগ দেয়, যার ব্যবহারিক মূল্য ভাল। ক্রমাগত অপ্টিমাইজেশান এবং উন্নতির মাধ্যমে, কৌশলটি প্রকৃত ট্রেডিংয়ে আরও ভাল কর্মক্ষমতা অর্জন করবে বলে আশা করা হচ্ছে।
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Adaptive Momentum Reversion Strategy ", overlay=false, initial_capital=50000, pyramiding=0, commission_type=strategy.commission.cash_per_contract, commission_value=0.05, slippage=1)
// Input: ROC Period
rocPeriod = input.int(2, title="ROC Period", minval=1)
// Input: Bollinger Bands Settings (Lower Band)
bbLowerLength = input.int(18, title="Lower Bollinger Band Length", minval=1)
bbLowerStdDev = input.float(1.7, title="Lower Bollinger Band StdDev", minval=0.1, step=0.1)
// Input: Bollinger Bands Settings (Upper Band)
bbUpperLength = input.int(21, title="Upper Bollinger Band Length", minval=1)
bbUpperStdDev = input.float(2.1, title="Upper Bollinger Band StdDev", minval=0.1, step=0.1)
// ROC Calculation
rocValue = (close - close[rocPeriod]) / close[rocPeriod] * 100
// Bollinger Bands Calculation
bbLowerBasis = ta.sma(rocValue, bbLowerLength) // Basis for Lower Band
bbLower = bbLowerBasis - bbLowerStdDev * ta.stdev(rocValue, bbLowerLength) // Lower Band
bbUpperBasis = ta.sma(rocValue, bbUpperLength) // Basis for Upper Band
bbUpper = bbUpperBasis + bbUpperStdDev * ta.stdev(rocValue, bbUpperLength) // Upper Band
// Plot ROC
plot(rocValue, color=color.blue, linewidth=2, title="ROC Value")
// Plot Bollinger Bands
plot(bbLowerBasis, color=color.gray, linewidth=1, title="Lower BB Basis (SMA)")
plot(bbLower, color=color.green, linewidth=1, title="Lower Bollinger Band")
plot(bbUpperBasis, color=color.gray, linewidth=1, title="Upper BB Basis (SMA)")
plot(bbUpper, color=color.red, linewidth=1, title="Upper Bollinger Band")
// Add Zero Line for Reference
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)
// Entry Condition: Long when ROC crosses above the lower Bollinger Band
longCondition = ta.crossover(rocValue, bbLower)
if (longCondition)
strategy.entry("Long", strategy.long)
// Exit Condition: Exit on Upper Bollinger Band Cross or ROC drops below Lower Band again
exitCondition = ta.crossunder(rocValue, bbUpper)
if (exitCondition)
strategy.close("Long")
// Background Color for Extreme Conditions
bgcolor(rocValue > bbUpper ? color.new(color.red, 80) : na, title="Overbought (ROC above Upper BB)")
bgcolor(rocValue < bbLower ? color.new(color.green, 80) : na, title="Oversold (ROC below Lower BB)")