
Chiến lược này là một hệ thống giao dịch kết hợp giữa lý thuyết động lượng và lý thuyết hồi quy trung bình. Chỉ báo này sử dụng chỉ báo Tỷ lệ thay đổi (ROC) và Dải Bollinger để xác định tình trạng mua quá mức và bán quá mức trên thị trường, kích hoạt tín hiệu giao dịch khi vượt qua ngưỡng cụ thể. Cốt lõi của chiến lược này là thu được lợi nhuận bằng cách phát hiện các điểm đảo chiều động lượng và tận dụng đặc tính giá quay trở lại mức trung bình.
Chiến lược này sử dụng chỉ báo ROC 2 kỳ để tính toán những thay đổi giá ngắn hạn và sử dụng hai bộ Dải Bollinger với các thông số khác nhau: Dải Bollinger ngắn hạn (18 kỳ, độ lệch chuẩn 1,7) được sử dụng để xác định điều kiện bán quá mức và tín hiệu vào lệnh và Dải Bollinger dài hạn (21 kỳ, độ lệch chuẩn 2,1) được sử dụng để xác định điều kiện mua quá mức và tín hiệu thoát. Khi ROC cắt Dải Bollinger dưới theo hướng lên trên, điều này chỉ ra rằng động lực giá chuyển từ yếu sang mạnh và hệ thống mở một vị thế mua; khi ROC cắt Dải Bollinger trên theo hướng xuống dưới, điều này chỉ ra rằng động lực giá yếu đi và hệ thống đóng chức vụ. Chiến lược này cũng đánh dấu các vùng quá mua và quá bán bằng màu nền, màu xanh lá cây biểu thị quá bán (có khả năng tăng) và màu đỏ biểu thị quá mua (có khả năng giảm).
Chiến lược giao thoa đảo ngược xu hướng trung bình thích ứng kết hợp chỉ báo ROC và dải Bollinger kép để xây dựng một hệ thống giao dịch có thể thích ứng với các môi trường thị trường khác nhau. Chiến lược này tập trung vào kiểm soát rủi ro trong khi vẫn duy trì tính linh hoạt và có giá trị thực tiễn tốt. Thông qua quá trình tối ưu hóa và cải tiến liên tục, chiến lược này dự kiến sẽ đạt được hiệu suất giao dịch thực tế tốt hơn.
/*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)")