Chiến lược giao dịch Bollinger Bands Breakout Reentry

Tác giả:ChaoZhang, Ngày: 2024-03-08 14:08:53
Tags:

img

Tổng quan

Chiến lược này dựa trên chỉ số Bollinger Bands. Ý tưởng chính là chờ giá quay trở lại Bollinger Bands sau khi thoát khỏi dải trên hoặc dưới, và sau đó thiết lập một vị trí theo cùng hướng như sự đột phá tại điểm tái nhập. Chiến lược này tận dụng đặc điểm mà giá thường đảo ngược khi chúng ở trong các khu vực cực đoan. Bằng cách kết hợp các điều kiện của Bollinger Band breakout và tái nhập, nó nhằm mục đích nắm bắt các bước ngoặt của thị trường và đạt được tỷ lệ thắng cao hơn.

Nguyên tắc chiến lược

  1. Tính toán các dải giữa, trên và dưới của các dải Bollinger. Dải giữa là đường trung bình động, và các dải trên và dưới là dải giữa cộng hoặc trừ một số độ lệch chuẩn nhất định.
  2. Xác định xem giá có vượt ra khỏi dải Bollinger trên hoặc dưới không. Nếu giá đóng vượt quá dải trên, nó được coi là đột phá lên; nếu giá đóng giảm xuống dưới dải dưới, nó được coi là đột phá xuống.
  3. Nếu có sự đột phá tăng, ghi giá cao nhất của nến đột phá đó là đỉnh. Nếu có sự đột phá giảm, ghi giá thấp nhất của nến đột phá đó là đỉnh.
  4. Sau khi đột phá xảy ra, chờ giá quay trở lại Bollinger Bands. Nếu giá đóng ở giữa các dải trên và dưới tại thời điểm này, giá được coi là đã quay trở lại.
  5. Khi giá quay trở lại, nếu nến trước đó là đột phá tăng (break_up [1] và bên trong), hãy mua dài; nếu nến trước đó là đột phá giảm (break_down [1] và bên trong), hãy mua ngắn.
  6. Quản lý vị trí: Nếu trong một vị trí dài và giá đóng vượt trên dải giữa, đóng vị trí dài; nếu trong một vị trí ngắn và giá đóng vượt dưới dải giữa, đóng vị trí ngắn.

Phân tích lợi thế

  1. Bollinger Bands có khả năng thích nghi mạnh mẽ và có thể điều chỉnh năng động theo biến động giá, điều này hữu ích để nắm bắt xu hướng và biến động.
  2. So với một chiến lược Bollinger Band breakout đơn giản, thêm điều kiện tái nhập có thể tránh theo đuổi mức cao và bán mức thấp đến một mức độ nhất định và cải thiện chất lượng nhập cảnh.
  3. Điều kiện thoát sử dụng dải giữa làm tham chiếu, đơn giản và dễ sử dụng, và có thể bảo vệ lợi nhuận tương đối tốt.
  4. Các thông số của Bollinger Bands, chẳng hạn như chiều dài và nhân độ lệch, có thể được tùy chỉnh, cung cấp tính linh hoạt cao.

Phân tích rủi ro

  1. Việc lựa chọn không chính xác các thông số Bollinger Band có thể dẫn đến việc nhập sớm hoặc muộn, ảnh hưởng đến hiệu suất của chiến lược. Điều này có thể được giảm thiểu bằng cách tối ưu hóa các thông số.
  2. Khi giá dao động gần Bollinger Bands, việc mở và đóng các vị trí thường xuyên có thể xảy ra, dẫn đến chi phí giao dịch tăng lên.
  3. Nếu xu hướng rất mạnh và giá không quay trở lại Bollinger Bands trong một thời gian dài, lợi nhuận xu hướng có thể bị bỏ lỡ.
  4. Sử dụng chỉ số Bollinger Band một mình có thể không hiệu quả đối với một số công cụ hoặc điều kiện thị trường và có thể cần phải sử dụng cùng với các tín hiệu khác.

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

  1. Xem xét việc giới thiệu nhiều điều kiện lọc hơn. Ví dụ, một sự đột phá có thể đáng tin cậy hơn nếu giá đã chạy trên các Bollinger Band trong một khoảng thời gian, hoặc sử dụng các chỉ số xác định xu hướng như góc MA và ADX để hỗ trợ.
  2. Đối với các thị trường dao động, các lệnh giới hạn và thời gian có thể được thêm vào để tránh nhập mù.
  3. Đối với các bước ra, ATR hoặc trung bình động có thể được kết hợp thêm để điều khiển thời gian ra.
  4. Thực hiện tối ưu hóa tham số và phân tích đặc điểm cho các tài sản và khung thời gian cơ bản khác nhau để chọn các mục tiêu và khung thời gian giao dịch phù hợp.
  5. Xem xét thêm quản lý vị trí, chẳng hạn như tăng kích thước vị trí khi biến động giảm và giảm kích thước vị trí khi biến động mở rộng.

Tóm lại

Chiến lược giao dịch Bollinger Bands Breakout Reentry là một chiến lược giao dịch định lượng đơn giản và thực tế. Nó sử dụng phản ứng của giá đối với các tình huống cực đoan và xây dựng các điều kiện vào và ra thông qua công cụ Bollinger Bands, có thể nắm bắt các điểm bắt đầu và kết thúc xu hướng đến một mức độ nhất định và kiểm soát giao dịch thường xuyên. Đồng thời, chiến lược này cũng có các vấn đề như lựa chọn tham số, hiệu suất kém trong thị trường dao động và không nắm bắt xu hướng đầy đủ. Thông qua tối ưu hóa chi tiết và kết hợp với các tín hiệu khác, dự kiến sẽ tiếp tục cải thiện khả năng thích nghi và độ bền của chiến lược này.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-27 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="BB", title="Bollinger Bands", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(1.7, minval=0.001, maxval=50, title="StdDev")

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

break_up = close > upper
break_down = close < lower
inside = close > lower and close < upper

sell_condition = break_up[1] and inside
buy_condition = break_down[1] and inside

// Conditions to close trades
close_sell_condition = close > basis
close_buy_condition = close < basis

trade_condition = sell_condition or buy_condition

// Tracking the high of the breakout candle
var float peak = na

if (not trade_condition)
    peak := close
if (break_up and peak < high)
    peak := high
if (break_down and peak > low)
    peak := low

// Entering positions
if (buy_condition)
    strategy.entry("Buy", strategy.long)
if (sell_condition)
    strategy.entry("Sell", strategy.short)

// Exiting positions when close crosses the basis
if (strategy.position_size > 0 and close_sell_condition) // If in a long position and close crosses above basis
    strategy.close("Buy")
if (strategy.position_size < 0 and close_buy_condition) // If in a short position and close crosses below basis
    strategy.close("Sell")

Thêm nữa