Chiến lược này sử dụng chỉ số Bollinger Bands để xác định xem giá có đang trong giai đoạn củng cố hay không, và đột phá để xác định bước vào và bước ra. Nhìn chung, chiến lược này chủ yếu tận dụng lợi thế của các chuyển động bạo lực do củng cố giá để kiếm lợi nhuận.
Chiến lược này đầu tiên tính toán trung bình di chuyển đơn giản 20 ngày của giá đóng như dải giữa của Bollinger Bands, và 2 lần độ lệch chuẩn như chiều rộng dải.
Khi giá nằm giữa Bollinger Bands trên và dưới, nó được coi là một giai đoạn củng cố. Khi một tín hiệu đột phá được phát hiện, đi dài. Khi giá phá vỡ dưới dải dưới một lần nữa, đóng vị trí. Đi ngắn hoạt động tương tự.
Stop loss được thiết lập ở mức gấp 2 lần chỉ số ATR.
Những lợi thế chính của chiến lược này là:
Ngoài ra còn có một số rủi ro:
Các biện pháp đối phó:
Một số cách để cải thiện chiến lược:
Chiến lược đơn giản và thẳng thắn, lợi nhuận từ việc tích lũy năng lượng trong quá trình hợp nhất. Không gian tối ưu hóa rất lớn tồn tại xung quanh các quy tắc nhập cảnh, phương pháp dừng lỗ vv để có được lợi nhuận ổn định hơn trong khi kiểm soát rủi ro.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Consolidation Breakout Strategy", shorttitle="CBS", overlay=true) // Parameters length = input(20, title="Bollinger Bands Length") mult = input(2.0, title="Bollinger Bands Multiplier") risk = input.float(1, title="Risk per Trade (%)") / 100 // Calculate Bollinger Bands basis = ta.sma(close, length) dev = mult * ta.stdev(close, length) upper = basis + dev lower = basis - dev // Entry Conditions consolidating = ta.crossover(close, upper) and ta.crossunder(close, lower) // Exit Conditions breakout = ta.crossover(close, upper) or ta.crossunder(close, lower) // Risk Management atrVal = ta.atr(14) stopLoss = atrVal * input.float(2, title="Stop Loss Multiplier", minval=0.1, maxval=5) // Entry and Exit Conditions longEntry = breakout and close > upper shortEntry = breakout and close < lower if (longEntry) strategy.entry("Long", strategy.long) if (shortEntry) strategy.entry("Short", strategy.short) if (longEntry and close < basis - stopLoss) strategy.close("Long Exit") if (shortEntry and close > basis + stopLoss) strategy.close("Short Exit") // Plot Entry and Exit Points plotshape(consolidating, style=shape.triangleup, location=location.belowbar, color=color.rgb(30, 255, 0), title="Entry Signal") plotshape(breakout, style=shape.triangledown, location=location.abovebar, color=color.rgb(255, 0, 0), title="Exit Signal")