Chiến lược Bollinger Breakout

Tác giả:ChaoZhang, Ngày: 2023-09-21 10:38:13
Tags:

Tổng quan

Chiến lược này dựa trên chỉ số Bollinger Bands, lấy các vị trí dài hoặc ngắn khi giá vượt qua đường trên hoặc dưới của Bollinger Bands.

Chiến lược logic

  1. Tính toán đường trung, đường trên và đường dưới Bollinger
  2. Đi dài trên đường vỡ dưới; đi ngắn trên đường vỡ trên
  3. Thiết lập thời gian bắt đầu và kết thúc để xác định giờ giao dịch
  4. Đặt thời gian giữ, mặc định để thoát trong ngày

Cụ thể, nó đầu tiên tính toán đường SMA giữa đường dài, và đường trên / dưới của nhiều lần độ lệch chuẩn. Khi đóng phá vỡ lên từ đường dưới, đi dài. Khi đóng phá vỡ từ đường trên, đi ngắn. Cũng đặt thời gian bắt đầu và kết thúc để giới hạn giờ giao dịch. Ra khỏi trước khi mở hàng ngày.

Chiến lược này cố gắng nắm bắt các động thái mở rộng sau khi giá vượt ra khỏi các dải. Bước qua dải dưới cho thấy tăng cường lực tăng, trong khi bước qua dải trên có nghĩa là tăng cường lực giảm, vì vậy giao dịch theo đường lối phá vỡ là thuận lợi.

Phân tích lợi thế

  1. Đơn giản và trực quan, dễ hiểu và thực hiện
  2. Sử dụng Bollinger Bands để đánh giá xu hướng breakouts, có một số xu hướng sau khả năng
  3. Điều chỉnh tham số linh hoạt cho các chu kỳ và sản phẩm khác nhau
  4. Kiểm soát thoát trong ngày rủi ro qua đêm
  5. Có thể chỉ cho phép giao dịch dài hoặc ngắn

Phân tích rủi ro

  1. Rủi ro phá vỡ sai. Giá có thể tăng trở lại sau khi phá vỡ ban đầu.
  2. Cần điều chỉnh thông số kịp thời.
  3. Rủi ro mở rộng tổn thất tiềm năng.
  4. Tăng chi phí giao dịch: giao dịch thường xuyên có thể làm tăng chi phí giao dịch.

Rủi ro có thể được giảm bằng cách tối ưu hóa các quy tắc nhập cảnh, thêm stop loss, giới thiệu bộ lọc xu hướng vv.

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

  1. Tối ưu hóa các tham số cho các chu kỳ khác nhau
  2. Thêm các quy tắc tái nhập và hình kim tự tháp để theo dõi xu hướng
  3. Đưa ra lệnh dừng lỗ để kiểm soát rủi ro
  4. Thiết lập giờ giao dịch để tránh các sự kiện tin tức quan trọng
  5. Kiểm tra các bộ lọc xu hướng để tránh hành động giá hỗn loạn
  6. Đánh giá các giai đoạn giữ khác nhau và so sánh kết quả

Tóm lại

Đây là một chiến lược breakout dựa trên Bollinger Bands. Nó lợi nhuận từ các động thái breakout. Ưu điểm là logic đơn giản và dễ thực hiện; Nhược điểm là dễ bị breakout sai. Rủi ro có thể được quản lý thông qua tối ưu hóa tham số, dừng lỗ, kiểm soát giờ giao dịch vv. Nó cho phép các nhà giao dịch hiểu những điều cơ bản về sử dụng các chỉ số và breakout giao dịch.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.0", shorttitle = "Bollinger str 1.0", 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, minval=1)
mult = input(1.0, minval=0.001, maxval=50)

fromyear = input(1900, defval = 1900, 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")

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

upper = basis + dev
lower = basis - dev

up = close < lower
dn = close > upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)

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

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

Thêm nữa