এই কৌশলটি একটি হাইব্রিড ট্রেডিং সিস্টেম যা গতি এবং গড় বিপরীত তত্ত্বগুলিকে একত্রিত করে। এটি রেট অফ চেঞ্জ (আরওসি) সূচক এবং বলিংজার ব্যান্ডগুলি ব্যবহার করে বাজারের অতিরিক্ত ক্রয় এবং অতিরিক্ত বিক্রয় শর্তগুলি সনাক্ত করে, নির্দিষ্ট প্রান্তিকগুলি অতিক্রম করার সময় ট্রেডগুলি ট্রিগার করে। মূল ধারণাটি গতির পরিবর্তনগুলি সনাক্ত করা এবং তাদের গড়ের দামের বিপরীতমুখী মূল্যের মূলধন অর্জন করা।
কৌশলটি স্বল্পমেয়াদী মূল্য পরিবর্তন গণনা করার জন্য একটি 2-অবধি ROC সূচক ব্যবহার করে, বোলিংজার ব্যান্ডের দুটি সেট সহঃ ওভারসোল্ড শর্ত এবং এন্ট্রি সিগন্যালগুলির জন্য স্বল্পমেয়াদী (18-অবধি, 1.7 স্ট্যান্ডার্ড ডিভিয়েশন) এবং ওভারক্রয় শর্ত এবং প্রস্থান সংকেতগুলির জন্য দীর্ঘমেয়াদী (21-অবধি, 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)")