Chiến lược Bollinger Band breakout là một chiến lược theo đuổi đà chỉ dài

Tác giả:ChaoZhang, Ngày: 2024-01-29 11:05:29
Tags:

img

Tổng quan

Chiến lược Bollinger Band breakout là một chiến lược theo đuổi đà chỉ dài. Nó sử dụng các dải trên và dưới của Bollinger Bands để đánh giá đà giá và đi dài khi giá vượt qua dải trên và đóng vị trí khi giá phá vỡ dải dưới hoặc trung bình động.

Chiến lược logic

Chiến lược đầu tiên tính toán trung bình động N ngày như đường cơ sở, sau đó cộng và trừ K lần độ lệch chuẩn trên và dưới đường cơ sở để xây dựng các dải trên và dưới, tạo thành Dải Bollinger. Khi giá vượt qua dải trên, nó báo hiệu đột phá lên, đó là tín hiệu chéo vàng. Chiến lược sẽ mở vị trí dài trên tín hiệu này. Khi giá phá vỡ dải dưới hoặc trung bình động, nó báo hiệu đảo ngược xuống, đó là tín hiệu chéo chết. Chiến lược sẽ đóng các vị trí trên tín hiệu này.

Vì các dải trên và dưới của Bollinger Bands có thể chứa hầu hết các dữ liệu phân phối giá, chúng đại diện cho phạm vi biến động hợp lý của giá thị trường hiện tại. Khi giá vượt qua phạm vi biến động hợp lý này, điều đó có nghĩa là một cái gì đó bất thường đang xảy ra trên thị trường và các vị trí cần phải được điều chỉnh phù hợp. Đây là logic cơ bản của chiến lược.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Có thể nắm bắt hiệu quả xu hướng giá và theo đuổi đà thị trường kịp thời
  2. Sử dụng Bollinger Bands để đánh giá sự đột phá bất thường, tránh sự đột phá sai
  3. Các quy tắc rõ ràng dễ thực hiện và tự động hóa
  4. Các thông số có thể được tối ưu hóa theo biến động thị trường để cải thiện chiến lược

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Bollinger Bands có thể thất bại khi biến động cực kỳ xảy ra
  2. Không thể xác định xu hướng thị trường thực tế, có thể mua cao và bán thấp
  3. Có một chút thời gian trễ.
  4. Bỏ qua chi phí giao dịch, hiệu suất thực tế sẽ được giảm giá

Để kiểm soát những rủi ro này, chúng ta có thể kết hợp các chỉ số xu hướng như MACD, hoặc điều chỉnh đúng các thông số để thu hẹp Bollinger Bands để giảm tín hiệu xấu.

Hướng dẫn tối ưu hóa

Chiến lược cũng có thể được tối ưu hóa từ các khía cạnh sau:

  1. Bao gồm khối lượng giao dịch để đánh giá sự đột phá thực sự
  2. Sử dụng adaptive Bollinger Bands để tối ưu hóa các tham số một cách năng động
  3. Thêm các cơ chế dừng lỗ để kiểm soát lỗ đơn
  4. Tăng quản lý vị trí để điều chỉnh vị trí năng động dựa trên điều kiện thị trường

Thông qua các tối ưu hóa trên, chúng tôi có thể cải thiện thêm sự ổn định của chiến lược và giảm rủi ro giao dịch.

Kết luận

Tóm lại, chiến lược Bollinger Band breakout là một chiến lược theo đuổi xu hướng khá cổ điển. Nó có logic rõ ràng và tự động hóa dễ dàng. Nhưng vẫn có một số lỗ hổng, đòi hỏi phải tối ưu hóa thêm để thích nghi với môi trường thị trường thay đổi phức tạp. Nếu kết hợp đúng với các chỉ số và cơ chế khác, kết quả có thể được cải thiện đáng kể.


/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Senthaamizh

//@version=4
strategy(title="Bollinger Band Breakout", shorttitle = "BB-BO", overlay=true)
source = close
length = input(20, minval=1, title = "Period") //Length of the Bollinger Band 
mult = input(1.5, minval=0.001, maxval=50, title = "Standard Deviation") // Use 1.5 SD for 20 period MA; Use 2 SD for 10 period MA 
exit = input(1, minval=1, maxval=2,title = "Exit Option") // Use Option 1 to exit using lower band; Use Option 2 to exit using moving average

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

if (crossover(source, upper))
    strategy.entry("Long", strategy.long, qty=1)

if(exit==1)
    if (crossunder(source, lower))
        strategy.close("Long")

if(exit==2) //basis is good for N50 but lower is good for BN (High volatility)
    if (crossunder(source, basis))
        strategy.close("Long")

plot(basis, color=color.red,title= "SMA")
p1 = plot(upper, color=color.blue,title= "UB")
p2 = plot(lower, color=color.blue,title= "LB")
fill(p1, p2)


Thêm nữa