Chiến lược này dựa trên chỉ số Bollinger Bands và tạo ra tín hiệu giao dịch khi giá vượt qua các dải trên hoặc dưới. Nó đi dài khi giá vượt qua dải trên và đi ngắn khi giá vượt qua dải dưới. Ngoài ra, nếu nắm giữ một vị trí dài, nó sẽ đóng vị trí khi giá giảm xuống dưới dải dưới; nếu nắm giữ một vị trí ngắn, nó sẽ đóng vị trí khi giá vượt qua dải trên. Chiến lược nhằm mục đích nắm bắt sự biến động của thị trường, vào giao dịch khi biến động giá tăng cường và ra khỏi kịp thời khi giá đảo ngược.
Chiến lược BB Breakout là một chiến lược giao dịch dựa trên chỉ số Bollinger Bands, tìm kiếm các cơ hội giao dịch khi giá vượt qua các dải trên hoặc dưới. Ưu điểm của chiến lược là tín hiệu rõ ràng và dễ thực hiện, với một số biện pháp kiểm soát rủi ro nhất định. Tuy nhiên, chiến lược cũng có một số hạn chế, chẳng hạn như tần suất giao dịch cao và sự chậm trễ tín hiệu. Do đó, trong các ứng dụng thực tế, có thể xem xét cải tiến trong các lĩnh vực như xác nhận tín hiệu, tối ưu hóa dừng lỗ và tối ưu hóa tham số để tăng tính ổn định và lợi nhuận của chiến lược.
/*backtest start: 2023-06-08 00:00:00 end: 2024-06-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BB Strategy", overlay=true) // Input parameters length = input.int(20, minval=1, title="Length") maType = input.string("SMA", "Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") offset = input.int(0, "Offset", minval=-500, maxval=500, title="Offset") // Moving average function ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Calculate Bollinger Bands basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot Bollinger Bands plot(basis, "Basis", color=color.blue, offset=offset) p1 = plot(upper, "Upper", color=color.red, offset=offset) p2 = plot(lower, "Lower", color=color.green, offset=offset) fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95)) // Strategy logic longCondition = ta.crossover(close, upper) shortCondition = ta.crossunder(close, lower) // Strategy entries and exits if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (shortCondition and strategy.position_size > 0) strategy.close("Long") if (longCondition and strategy.position_size < 0) strategy.close("Short")