Chiến lược này dựa trên chỉ số Bollinger Bands. Nó đi vào một vị trí dài khi giá đóng phá vỡ trên dải trên và đi vào một vị trí ngắn khi giá đóng phá vỡ dưới dải dưới. Điều kiện thoát cho vị trí dài là khi giá giảm xuống dưới dải giữa, và điều kiện thoát cho vị trí ngắn là khi giá phá vỡ trên dải giữa. Chiến lược sử dụng vị trí của giá tương đối với các dải trên và dưới của Bollinger Bands để xác định xu hướng và thời gian nhập và xuất.
Chiến lược này là một chiến lược theo xu hướng cổ điển nắm bắt thị trường xu hướng bằng cách sử dụng Bollinger Bands. Lý thuyết chiến lược rõ ràng, và lợi thế là hiển nhiên, nhưng nó cũng có một số rủi ro. Bằng cách tối ưu hóa dừng lỗ, lấy lợi nhuận, quản lý vị trí và các bộ lọc nhập cảnh, hiệu suất chiến lược có thể được cải thiện và khả năng thích nghi có thể được tăng cường. Tuy nhiên, mọi chiến lược đều có những hạn chế của nó và cần phải được áp dụng linh hoạt kết hợp với điều kiện thị trường thực tế.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0 // This displays the traditional Bollinger Bands, the difference is // that the 1st and 2nd StdDev are outlined with two colors and two // different levels, one for each Standard Deviation strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true) src = input(close) length = input.int(20, minval=1, title = "Length") mult = input.float(2.0, minval=0.001, maxval=50, title = "Multiplier") basis = ta.sma(src, length) dev = ta.stdev(src, length) dev2 = mult * dev upper1 = basis + dev lower1 = basis - dev upper2 = basis + dev2 lower2 = basis - dev2 // Strategy long_condition = ta.crossover(close, upper1) short_condition = ta.crossunder(close, lower1) if (long_condition) strategy.entry("Long", strategy.long) if (short_condition) strategy.entry("Short", strategy.short) // Exit conditions exit_long_condition = ta.crossunder(close, basis) exit_short_condition = ta.crossover(close, basis) if (exit_long_condition) strategy.close("Long") if (exit_short_condition) strategy.close("Short") colorBasis = src >= basis ? color.blue : color.orange pBasis = plot(basis, linewidth=2, color=colorBasis) pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles) pUpper2 = plot(upper2, color=color.new(color.blue, 0)) pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles) pLower2 = plot(lower2, color=color.new(color.orange, 0)) fill(pBasis, pUpper2, color=color.new(color.blue, 80)) fill(pUpper1, pUpper2, color=color.new(color.blue, 80)) fill(pBasis, pLower2, color=color.new(color.orange, 80)) fill(pLower1, pLower2, color=color.new(color.orange, 80))