Chiến lược phá vỡ băng Bollinger đôi

Tác giả:ChaoZhang, Ngày: 2023-12-25 13:20:31
Tags:

img

Tổng quan

Chiến lược Breakout Double Bollinger Bands là một chiến lược theo xu hướng. Nó sử dụng các dải trên và dưới của Dải Bollinger để đánh giá xu hướng giá và thiết lập các vị trí dài khi giá vượt qua Dải Bollinger bên trong và đóng các vị trí khi giá giảm xuống dưới Dải Bollinger bên ngoài.

Chiến lược logic

Chiến lược đầu tiên tính toán trung bình động và độ lệch chuẩn trong một khoảng thời gian nhất định. Sau đó nó xây dựng hai Bollinger Bands bằng cách sử dụng trung bình động ± một độ lệch chuẩn cho các dải bên trong và trung bình động ± 1,5 độ lệch chuẩn cho các dải bên ngoài.

Khi giá phá vỡ trên dải bên trong trên, nó cho thấy rằng thị trường đang bắt đầu một cuộc chạy tăng và đi dài. Khi giá giảm xuống dưới dải bên trong dưới, nó cho thấy sự khởi đầu của một thị trường gấu và đi ngắn.

Lợi nhuận thoát ra cho các vị trí dài là khi giá giảm xuống dưới dải bên ngoài dưới. Lợi nhuận thoát ra cho các vị trí ngắn là khi giá vượt qua dải bên ngoài trên.

Chiến lược cũng thiết lập lệnh dừng lỗ, lấy lợi nhuận và lệnh dừng lỗ sau.

Phân tích lợi thế

Chiến lược Breakout Double Bollinger Bands có những lợi thế sau:

  1. Sử dụng hai Bollinger Bands để đánh giá chuyển động giá cho phép theo dõi xu hướng hiệu quả;
  2. Nhập vào các đột phá trong dải tránh các giao dịch đảo ngược trung bình không cần thiết;
  3. Lợi nhuận, dừng lỗ và dừng lỗ theo dõi kiểm soát rủi ro một cách hiệu quả;
  4. Các thông số tối ưu hóa cho phép điều chỉnh cho các sản phẩm khác nhau.

Phân tích rủi ro

Chiến lược Breakout Double Bollinger Bands cũng có một số rủi ro:

  1. Có thể xảy ra các lần tham gia và dừng lỗ thường xuyên trong các thị trường dao động;
  2. Các thiết lập tham số không chính xác có thể dẫn đến việc nhập quá dễ dàng hoặc ra khỏi quá khó;
  3. Thỉnh thoảng những vụ thoát hiểm đưa ra các tín hiệu sai dẫn đến những vụ thoát hiểm thất bại.

Để giải quyết những rủi ro này, các thông số có thể được điều chỉnh, thêm các bộ lọc bổ sung hoặc theo dõi các vụ đột phá theo tay để giảm rủi ro.

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

Chiến lược Breakout Double Bollinger Bands có thể được tối ưu hóa theo nhiều cách:

  1. Tối ưu hóa các thông số trung bình động và độ lệch chuẩn để phù hợp với các sản phẩm khác nhau;
  2. Thêm khối lượng, MACD hoặc các bộ lọc khác để tránh đột phá sai;
  3. Sử dụng các phương pháp học máy để tối ưu hóa các tham số một cách năng động;
  4. Sao chép chiến lược qua nhiều khoảng tần số cao để mở rộng tiềm năng lợi nhuận.

Kết luận

Chiến lược Breakout Double Bollinger Bands tổng thể đánh giá những thay đổi về giá so với Bollinger Bands đối với các mục nhập thời gian trong một cách tiếp cận theo xu hướng điển hình. Chiến lược đặt mục tiêu lợi nhuận bằng cách sử dụng các băng tần kép và các cơ chế thoát khoa học để kiểm soát rủi ro. Với các thông số tối ưu và kiểm soát rủi ro, nó có thể đạt được kết quả tốt.


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

//@version=2
strategy("BB Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)
l=input(title="length",defval=100)
pbin=input(type=float,step=.1,defval=.25)
pbout=input(type=float,step=.1,defval=1.5)
ma=sma(close,l)
sin=stdev(ma,l)*pbin
sout=stdev(ma,l)*pbout
inu=sin+ma
inb=-sin+ma
outu=sout+ma
outb=-sout+ma
plot(inu,color=lime)
plot(inb,color=lime)
plot(outu,color=red)
plot(outb,color=yellow)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na


longCondition = close>inu and rising(outu,1) 
exitlong = (open[1]>outu and close<outu) or crossunder(close,ma)

shortCondition = close<inb and falling(outb,1)
exitshort = (open[1]<outb and close>outb) or crossover(close,ma)

strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = exitlong)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = exitshort)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)

Thêm nữa