Chiến lược đảo ngược các dải Bollinger

Tác giả:ChaoZhang, Ngày: 2024-02-20 17:05:47
Tags:

img

Tóm lại

Chiến lược Bollinger Bands Repetitive Zona là một chiến lược giao dịch định lượng dựa trên Bollinger Bands. Chiến lược sử dụng phạm vi giá giữa các dải trên và dưới của Bollinger Bands để xác định phạm vi biến động thị trường và xác định các điểm vào và ra tiềm năng.

Nguyên tắc

Chiến lược chủ yếu dựa trên các chỉ số sau đây để đánh giá:

  1. Bollinger Middle Band: Đường trung bình di chuyển đơn giản SMA, đại diện cho xu hướng thị trường tổng thể.

  2. Bollinger Upper Band: Trung bình + N nhân độ lệch chuẩn.

  3. Bollinger Lower Band: Trung - N lần độ lệch chuẩn.

Khi giá đóng cao hơn đường ray dưới và giá mở thấp hơn đường ray dưới, nó được đánh giá là một đáy tiềm năng và một điểm vào có thể. Khi giá đóng cao hơn đường ray trên và giá mở thấp hơn đường ray trên, nó được đánh giá là một tín hiệu đột phá tiềm năng trên đường ray trên, cũng có thể vào thị trường.

Khi giá đóng thấp hơn đường ray trên và giá mở cao hơn đường ray trên, nó được xác định là nó đã bước vào phần trên của Bollinger Band và nên được xem xét ra ngoài. Khi giá đóng cao hơn giá mở và khoảng cách giữa các đường ray trên và dưới vượt quá 2 lần đường trung tâm, nó được đánh giá là biến động đã tăng và việc ra ngoài cũng nên được xem xét.

Phân tích lợi thế

  1. Sự kết hợp của phán đoán hai đường ray cải thiện độ chính xác của tín hiệu. Sự kết hợp của giá đóng cửa và giá mở cửa có thể lọc ra một số tín hiệu sai.

  2. Phạm vi biến động được tính dựa trên độ lệch chuẩn, tự động thích nghi với những thay đổi của thị trường.

  3. Kết hợp với đánh giá xu hướng của đường trung gian để tránh những cú sốc lặp lại trên thị trường mà không có xu hướng.

  4. Sử dụng đột phá đường sắt giữa để xác định các điểm đảo ngược xu hướng. Có thể nắm bắt các cơ hội tiềm năng một cách kịp thời.

Phân tích rủi ro

  1. Chiến lược hoạt động trung hạn không phù hợp với cổ phần dài hạn.

  2. Bollinger Bands chỉ có hiệu lực trong một khung thời gian nhất định.

  3. Trong một thị trường giới hạn phạm vi, đường giữa dao động rất nhiều, và việc kích hoạt thay thế các đường ray trên và dưới có thể thường xuyên hơn.

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

  1. Điều chỉnh các tham số để thích nghi với các chu kỳ thời gian dài hơn. Các phương pháp như tăng chiều dài chu kỳ và sử dụng các đường trung bình động theo cấp số nhân có thể tối ưu hóa các thuật toán đường sắt giữa.

  2. Thêm các chỉ số biến động như ATR để tránh tiếp tục đột phá sai. Các giá trị ATR được xây dựng sẵn có thể được đặt làm điều kiện lọc và tín hiệu giao dịch chỉ được tạo ra khi biến động vượt quá một phạm vi nhất định.

  3. Kết hợp các chỉ số khác để đạt được hiệu ứng lọc Barry. Ví dụ, thêm các quy tắc đánh giá khối lượng giao dịch, chỉ hoạt động khi khối lượng giao dịch mở rộng.

Tóm lại

Chiến lược vùng lặp lại của Bollinger Bands tự động xác định các cực tiềm năng trên thị trường để xác định các kênh giá như là cơ hội giao dịch tiềm năng. Nó rất phù hợp để nắm bắt sự đảo ngược giá trung hạn và có thể bổ sung cho các chiến lược theo dõi xu hướng. Thông qua tối ưu hóa hợp lý, rủi ro có thể được kiểm soát hiệu quả và lợi nhuận được cải thiện.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BB Strategy", shorttitle="BB", overlay=true)

length = input.int(55, 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., 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

// Entry conditions
enterCondition = (close > lower and open < lower and close > open) or (close > upper and open < upper and close > open)

// Exit conditions
exitCondition = (close < upper and open > upper) or (close > open and (upper - lower) > 2 * basis) or (close < lower)

strategy.entry("Long", strategy.long, when=enterCondition)
strategy.close("Long", when=exitCondition)

// Plotting
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))


Thêm nữa