Chiến lược Bollinger Breakout

Tác giả:ChaoZhang, Ngày: 2023-11-13 10:19:43
Tags:

img

Tổng quan

Đây là một chiến lược breakout dựa trên chỉ số Bollinger Bands. Nó sử dụng các dải trên và dưới của Bollinger Bands để tạo ra các tín hiệu breakout để vào và ra khỏi thị trường. Chiến lược này cũng kết hợp các cơ chế dừng lỗ và kim tự tháp để đạt được lợi nhuận cao hơn trong các thị trường xu hướng.

Chiến lược logic

Chiến lược đầu tiên tính toán dải giữa, dải trên và dải dưới của Bollinger Bands. Dải giữa là đường trung bình động của giá, trong khi dải trên và dải dưới là dải giữa +/- một độ lệch chuẩn.

Khi giá phá vỡ trên dải dưới, một tín hiệu dài được tạo ra. Khi giá phá vỡ dưới dải trên, một tín hiệu ngắn được tạo ra. Điều này cho thấy giá đang vượt ra khỏi phạm vi Bollinger Bands và có thể đi vào xu hướng.

Ngoài ra, chiến lược kiểm tra sự đột phá của cơ thể. Nếu kết thúc cao hơn so với mở và cơ thể xâm nhập vào dải giữa với một tỷ lệ phần trăm nhất định, nó sẽ làm phẳng vị trí. Nếu kết thúc thấp hơn mở và cơ thể xâm nhập vào dải giữa với một tỷ lệ phần trăm nhất định, nó cũng sẽ làm phẳng vị trí. Điều này tránh mất mát từ đột phá giả.

Sau khi nhập vị trí, chiến lược có thể theo dõi stop loss và kim tự tháp. Nếu giá tiếp tục di chuyển theo hướng thuận lợi, kích thước vị trí có thể được tăng để cải thiện tiềm năng lợi nhuận. Nếu giá đảo ngược, stop loss được sử dụng để kiểm soát rủi ro.

Phân tích lợi thế

Những lợi thế của chiến lược này là:

  1. Sử dụng Bollinger Bands để xác định hướng xu hướng và bắt được sự đột phá.

  2. Kiểm tra cơ thể và dải giữa để xác định tính hợp lệ của sự đột phá, tránh mất mát từ sự đột phá giả.

  3. Sử dụng dừng lỗ để khóa lợi nhuận và kiểm soát rủi ro.

  4. Sử dụng kim tự tháp để đạt được lợi nhuận cao hơn trong các động thái xu hướng.

  5. Logic rõ ràng và dễ hiểu. Các thông số đơn giản làm cho chiến lược này dễ dàng thực hiện.

Phân tích rủi ro

Những rủi ro của chiến lược này bao gồm:

  1. Bollinger Bands breakouts không thể tránh hoàn toàn breakouts sai, một số tổn thất có thể xảy ra.

  2. Việc đặt stop loss không chính xác có thể gây ra stop out sớm hoặc không hạn chế lỗ.

  3. Thời gian và kích thước kim tự tháp quá mức có thể dẫn đến tổn thất tăng cường.

  4. Không dừng lại kịp thời khi xu hướng đảo ngược có thể dẫn đến giảm lớn.

  5. Tối ưu hóa tham số không đủ có thể dẫn đến hiệu suất kém.

  6. Rủi ro quá phù hợp. Yêu cầu xác nhận trên các thị trường khác nhau.

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

Chiến lược có thể được cải thiện từ các khía cạnh sau:

  1. Kiểm tra và tối ưu hóa các thông số Bollinger Bands để tìm kết hợp tốt hơn.

  2. Kiểm tra các chiến lược dừng lỗ khác nhau và tối ưu hóa vị trí dừng lỗ.

  3. Kiểm tra và tìm thời gian và kích thước kim tự tháp tối ưu.

  4. Thêm bộ lọc xu hướng để tránh kim tự tháp chống lại xu hướng.

  5. Tối ưu hóa logic thoát khỏi cơ thể để giảm thoát khỏi sai.

  6. Thêm lệnh có điều kiện để sử dụng các bộ tham số khác nhau dựa trên điều kiện thị trường.

  7. Thực hiện nhiều backtest trên các sản phẩm và khung thời gian khác nhau để cải thiện độ bền.

  8. Sử dụng máy học để tự động tối ưu hóa các thông số.

Kết luận

Tóm lại, chiến lược này sử dụng Bollinger Bands để xác định hướng xu hướng và bắt vỡ, với các chức năng dừng lỗ, kim tự tháp và các chức năng khác để đạt được kết quả tốt.


/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.1", shorttitle = "Bollinger str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

showbands = input(true, defval = true, title = "Show Bollinger Bands")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
up = close <= lower
dn = close >= upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

Thêm nữa