Chiến lược giao dịch thoát kênh Bollinger Band

Tác giả:ChaoZhang, Ngày: 2023-09-12 17:05:56
Tags:

Chiến lược này giao dịch sự đột phá giá của Bollinger Bands. Các dải hiệu quả xác định phạm vi dao động giá, với sự đột phá báo hiệu sự thay đổi xu hướng tiềm năng.

Chiến lược logic:

  1. Tính toán đường giữa BB, các dải trên và dưới. Đường giữa là SMA n thời gian, chiều rộng dải là số lần lệch chuẩn n thời gian.

  2. Đi dài trên băng gầm dưới và ngắn trên băng gầm trên.

  3. Thiết lập stop loss trên băng tần đối diện để kiểm soát rủi ro.

  4. Chặn lại để kiếm thêm lợi nhuận, hoặc dừng lại cố định.

  5. Áp dụng các lệnh loại trừ lẫn nhau để tránh đồng thời mua/mua.

Ưu điểm:

  1. BB breakout xác định chính xác những thay đổi xu hướng.

  2. Dừng trên các dải cho phép thoát khỏi xu hướng kịp thời.

  3. Việc loại trừ lẫn nhau tránh bảo hiểm theo cùng một hướng.

Rủi ro:

  1. BB trung bình và độ trễ sai lệch, thiếu các mục tốt nhất.

  2. Whipsaws phổ biến trong các thị trường khác nhau.

  3. Các thông số tĩnh Không thể thích nghi với sự biến động thay đổi.

Tóm lại, chiến lược này giao dịch BB breakouts như một hệ thống kênh điển hình. Có chỗ để cải thiện trong điều chỉnh và quản lý rủi ro nhưng khái niệm tổng thể là đơn giản và mạnh mẽ.


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

//@version=3
strategy("Kozlod - BB Strategy - 1 minute", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// 
// author: Kozlod
// date: 2019-05-27
// RSI - BTCUSDT - 1m
// https://www.tradingview.com/u/Kozlod/
// https://t.me/quantnomad
//

source = close
length = input(45, minval=1)
mult = input(2.5, minval=0.001, maxval=50)

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

upper = basis + dev
lower = basis - dev

plot(upper)
plot(lower)

buyEntry  = crossover(source, lower)
sellEntry = crossunder(source, upper)

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")

Thêm nữa