Chiến lược này là một hệ thống giao dịch lai kết hợp các lý thuyết chuyển động và đảo ngược trung bình. Nó xác định các điều kiện mua quá mức và bán quá mức trên thị trường bằng cách sử dụng chỉ số Rate of Change (ROC) và Bollinger Bands, kích hoạt giao dịch khi các ngưỡng cụ thể được vượt qua. Khái niệm cốt lõi là phát hiện sự thay đổi động lực và tận dụng sự đảo ngược giá đến mức trung bình của chúng.
Chiến lược này sử dụng chỉ số ROC 2 giai đoạn để tính toán những thay đổi giá ngắn hạn, cùng với hai bộ Bollinger Bands: ngắn hạn (18 giai đoạn, 1.7 độ lệch chuẩn) cho các điều kiện bán quá mức và tín hiệu nhập cảnh, và dài hạn (21 giai đoạn, 2.1 độ lệch chuẩn) cho các điều kiện mua quá mức và tín hiệu ra khỏi. Các vị trí dài được bắt đầu khi ROC vượt qua dải Bollinger thấp hơn, chỉ ra sự chuyển đổi từ đà mạnh đến đà yếu, và các vị trí được đóng khi ROC vượt qua dải Bollinger trên, báo hiệu đà suy yếu. Chiến lược cũng sử dụng màu nền để làm nổi bật các khu vực mua quá mức (màu đỏ) và bán quá mức (màu xanh).
Chiến lược chuyển đổi chuyển đổi chuyển đổi động lực thích nghi xây dựng một hệ thống giao dịch có khả năng thích nghi với các môi trường thị trường khác nhau bằng cách kết hợp các chỉ số ROC và hai băng Bollinger. Trong khi duy trì tính linh hoạt, chiến lược nhấn mạnh kiểm soát rủi ro và chứng minh giá trị thực tế. Thông qua tối ưu hóa và cải tiến liên tục, chiến lược này cho thấy hứa hẹn cho hiệu suất tốt hơn trong giao dịch thực tế.
/*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)")