Chiến lược đột phá xu hướng dựa trên các dải Bollinger

Tác giả:ChaoZhang, Ngày: 2023-11-16 16:24:12
Tags:

img

Tổng quan

Đây là một chiến lược theo xu hướng dựa trên Bollinger Bands. Nó sử dụng Bollinger Bands để tính các kênh giá và kết hợp các mẫu nến để xác định hướng xu hướng. Các vị trí dài / ngắn sẽ được mở khi giá vượt ra khỏi Bollinger Bands. Chiến lược này hoạt động tốt cho các cổ phiếu có xu hướng rõ ràng và nhằm mục đích nắm bắt lợi nhuận xu hướng trung hạn.

Chiến lược logic

Chiến lược này sử dụng dải trên, dải giữa và dải dưới của Bollinger Bands để xác định phạm vi giá. Dải trên và dải dưới bao bọc chuyển động giá trong khi dải giữa là đường trung bình động. Chiều rộng dải thay đổi dựa trên sự biến động giá. Khi giá vượt qua dải trên, nó báo hiệu đột phá lên và bước vào dài. Khi giá vượt qua dải dưới, nó báo hiệu đột phá xuống và bước vào ngắn.

Sau khi xác định hướng xu hướng với Bollinger Bands breakout, chiến lược cũng xác nhận nó với các mô hình nến. Nếu thân nến phù hợp với xu hướng, chẳng hạn như nến tăng trong xu hướng tăng, một vị trí sẽ được mở. Nếu thân nến hiển thị mô hình ngược, chẳng hạn như nến giảm trong xu hướng tăng, tín hiệu sẽ bị bỏ qua. Thiết kế này nhằm tránh rủi ro đột phá sai.

Các quy tắc chi tiết về tín hiệu giao dịch là:

  1. Tính toán dải trên, dải giữa và dải dưới của Bollinger Bands để xác định phạm vi giá

  2. Khi giá phá vỡ trên dải trên, nó báo hiệu một xu hướng tăng / dài

  3. Nếu ngọn nến là tăng, xác nhận xu hướng và đi dài

  4. Khi giá phá vỡ dưới dải dưới, nó báo hiệu một xu hướng giảm / ngắn

  5. Nếu ngọn nến giảm, xác nhận xu hướng và đi ngắn

  6. Đặt lệnh dừng lỗ và lấy lợi nhuận dựa trên tỷ lệ phần trăm

Bằng cách tham gia vào Bollinger Bands breakouts và xác nhận với các ngọn nến, chiến lược này có thể xác định hiệu quả hướng xu hướng và có được các mục nhập tốt trong giai đoạn xu hướng ban đầu. Lợi nhuận được lấy trong xu hướng trung hạn.

Phân tích lợi thế

Đây là một xu hướng điển hình sau chiến lược với những điểm mạnh sau:

  1. Bollinger Bands thích nghi và có thể điều chỉnh phạm vi cho các cổ phiếu có biến động khác nhau

  2. Chứng nhận nến lọc ra những sự đột phá sai

  3. Việc nắm giữ trung hạn làm giảm tần suất giao dịch và giảm chi phí / trượt

  4. Việc nắm bắt xu hướng trung hạn tránh tiếng ồn ngắn hạn và mang lại lợi nhuận rủi ro tốt

  5. Kết quả backtest là mạnh mẽ và giao dịch thực tế là ổn định do hệ thống hóa

  6. Chiến lược logic là rõ ràng và dễ hiểu, với chỗ cho cải tiến

Bằng cách xác định xu hướng với Bollinger Bands và nhập vào xác nhận nến, chiến lược này có hiệu quả nắm bắt đà tăng trung hạn do khối lượng.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro cần lưu ý cho chiến lược này:

  1. Rủi ro phá vỡ thất bại. Breaking Bollinger Bands có bản chất xác suất và breakouts sai xảy ra

  2. Rủi ro đảo ngược: xu hướng trung hạn cũng có thể đảo ngược, nên được thiết lập dừng hợp lý

  3. Bollinger Bands tham số và dừng cần điều chỉnh cho các cổ phiếu khác nhau

  4. Rủi ro quá phù hợp. Tối ưu hóa tham số quá mức gây ra phù hợp đường cong

  5. Rủi ro thực thi: Sự khác biệt tồn tại giữa backtest và giao dịch thực tế

Để đối phó với những rủi ro này, những cải tiến sau đây có thể được thực hiện:

  1. Tối ưu hóa các thông số và chiều rộng của Bollinger Bands để phù hợp hơn

  2. Thêm thêm các yếu tố như khối lượng để xác nhận xu hướng

  3. Sử dụng dừng động để ngăn ngừa tổn thất lớn trên đảo ngược

  4. Áp dụng phân tích đi trước để tránh quá phù hợp

  5. Cải thiện việc thực thi lệnh để tăng hiệu quả giao dịch thực tế

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

Chiến lược này có thể được tăng cường hơn nữa trong các khía cạnh sau:

  1. Thêm thêm các chỉ số như KDJ, MACD để xác nhận tín hiệu và cải thiện độ chính xác

  2. Sử dụng máy học để tối ưu hóa các tham số thay vì các giá trị cố định

  3. Thiết lập các vùng giá xung quanh các điểm đột phá để tạo ra các tín hiệu chính xác hơn

  4. Tối ưu hóa lối ra bằng cách dừng lại hoặc lấy lợi nhuận một phần

  5. Thiết lập quy mô vị trí để quản lý rủi ro tốt hơn

  6. Sử dụng các loại lệnh nâng cao để cải thiện kết quả thực thi

  7. Thêm các bộ lọc chế độ thị trường để tắt chiến lược trong một số môi trường nhất định

Bằng cách giới thiệu nhiều kỹ thuật và tối ưu hóa hơn, sự ổn định và lợi nhuận của chiến lược này có thể được cải thiện hơn nữa để có kết quả backtest và giao dịch thực tế tốt hơn.

Kết luận

Đây là một chiến lược theo xu hướng điển hình sử dụng Bollinger Bands như các phạm vi năng động để xác định hướng xu hướng.

Lợi thế của chiến lược này bao gồm sử dụng Bollinger Bands cho xu hướng, nến để xác nhận nhập cảnh, tần suất giao dịch thấp và hệ thống hóa dễ dàng. Nó cũng có những rủi ro như đột phá sai, khó khăn tối ưu hóa dừng lỗ và chênh lệch thực thi. Nhiều chỉ số, tham số năng động và thực thi tiên tiến có thể tăng sự ổn định và hiệu suất giao dịch thực tế.

Nhìn chung, như một chiến lược theo xu hướng điển hình, nó có logic rõ ràng và dễ thực hiện với khả năng sống mạnh mẽ. Với tối ưu hóa liên tục và kiểm soát rủi ro nghiêm ngặt, nó có thể trở thành một mô-đun hiệu quả trong các hệ thống giao dịch định lượng.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.2", shorttitle = "Scalper str 1.2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needct = input(false, defval = false, title = "Counter-trend entry")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd1 = center + distsma / 2
ld1 = center - distsma / 2

//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = sma(body, 100)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0
dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)

Thêm nữa