Chiến lược phá vỡ dải Bollinger và bộ lọc biến động


Ngày tạo: 2024-03-08 15:28:05 sửa đổi lần cuối: 2024-03-08 15:28:05
sao chép: 0 Số nhấp chuột: 692
1
tập trung vào
1617
Người theo dõi

Chiến lược phá vỡ dải Bollinger và bộ lọc biến động

Tổng quan về chiến lược

Bollinger Bands Breakout and Volatility Filtering là một chiến lược giao dịch dựa trên các chỉ số Bollinger Bands. Nó sử dụng Bollinger Bands để đánh giá giá trị giá so với vị trí và biến động của đường trung bình di chuyển, do đó quyết định mở và đóng vị trí. Một điểm độc đáo của chiến lược này là nó sử dụng bộ lọc biến động, bằng cách phát hiện sự sụt giảm của đường K liên tiếp để tránh giao dịch vào thời điểm thị trường biến động lớn. Ngoài ra, chiến lược này cũng đặt các điều kiện dừng và mất mát để bảo vệ lợi nhuận và kiểm soát rủi ro.

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

Cốt lõi của chiến lược này là tính toán chỉ số Bollinger Bands. Bollinger Bands bao gồm ba đường: đường trung bình là đường trung bình di chuyển đơn giản, đường trên và đường dưới cộng và giảm một số chênh lệch tiêu chuẩn dựa trên đường trung bình. Kích thước chênh lệch tiêu chuẩn được điều khiển bởi tham số mult.

Điều kiện mở vị trí của chiến lược dựa trên vị trí của giá đóng cửa so với dải Bollinger. Nếu hướng giao dịch được thiết lập để làm nhiều (tradeDirection> = 0) và giá đóng cửa giảm xuống một tỷ lệ nhất định (lower_breakout_pct), hãy mở nhiều vị trí; Nếu hướng giao dịch được thiết lập để làm ít (tradeDirection< = 0) và giá đóng cửa phá vỡ đường đua một tỷ lệ nhất định (upper_breakout_pct), hãy mở vị trí trống.

Mặt khác, nếu hai dòng K liên tiếp giảm giá vượt quá ngưỡng biến động dự kiến ((Volatility), thì đánh giá thị trường hiện tại có nhiều biến động, chiến lược sẽ không mở một vị trí mới. Bộ lọc biến động này có thể tránh một số điều kiện thị trường biến động mạnh.

Đối với vị trí bằng phẳng, nếu giá đóng cửa của vị trí nhiều đầu chạm vào vùng trên của đường ray*long_win_pct), hoặc giá đóng cửa của vị trí trống chạm đường ray bên dưới*short_win_pct), chiến lược sẽ xóa vị trí tương ứng để có lợi nhuận. Ngoài ra, nếu lỗ hổng nổi của vị trí giữ vượt quá tỷ lệ rút lui tối đa dự kiến ((max_drawdown_percent), chiến lược cũng sẽ xóa vị trí.

Lợi thế chiến lược

  1. Bollinger Bands là một chỉ số kỹ thuật được sử dụng rộng rãi, kết hợp các thông tin về trung bình di chuyển và biến động giá. Bollinger Bands được sử dụng để xây dựng chiến lược giao dịch, có thể nắm bắt các thay đổi trong xu hướng và biến động.

  2. Chiến lược này bao gồm cả logic mở và mở, cho phép nắm bắt cơ hội linh hoạt trong thị trường hai chiều. Cài đặt điểm đột phá của Bollinger Band làm cho điểm vào của chiến lược được xác nhận hơn.

  3. Bộ lọc biến động giúp tránh các vị trí mở trong thị trường biến động mạnh, giảm thiểu rủi ro về giao dịch thường xuyên và đòn bẩy.

  4. Chiến lược này sử dụng các cơ chế dừng và dừng lỗ, có thể chủ động kiểm soát vị trí vị trí, tháo khi giá quay trở lại vị trí quan trọng. Điều này có lợi cho việc bảo vệ lợi nhuận, kiểm soát sự rút lui.

Rủi ro chiến lược

  1. Bollinger Bands về bản chất là một chỉ số chậm trễ, có một sự chậm trễ trong phản ứng của thị trường. Chiến lược có thể bỏ lỡ thời điểm vào tốt nhất trong thời điểm quan trọng của một xu hướng chuyển hướng hoặc thay đổi hướng đi.

  2. Cài đặt tham số của chiến lược không nhất thiết phải áp dụng cho các tình trạng thị trường khác nhau. Ví dụ: thiết lập ngưỡng của bộ lọc tỷ lệ biến động, có thể cần sự khác biệt trong tình huống xu hướng và biến động. Các tham số cố định có thể khiến chiến lược không thể mở vị trí hoặc mở vị trí quá thường xuyên trong một số tình huống.

  3. Mặc dù có các biện pháp dừng lỗ, nhưng khi thị trường có lỗ hổng nhảy vọt, chiến lược có thể không giao dịch theo giá dự kiến, dẫn đến tổn thất lớn hơn.

  4. Chiến lược không đặt lệnh dừng di chuyển hoặc theo dõi lệnh dừng sau khi mở vị trí, điều này có thể dẫn đến một phần lợi nhuận bị trả lại.

Hướng tối ưu hóa

  1. Có thể xem xét việc giới thiệu nhiều chỉ số kỹ thuật hoặc đánh giá tình trạng thị trường, chẳng hạn như ATR, chỉ số xu hướng, chỉ số biến động, v.v., như là điều kiện lọc chiến lược, cải thiện chất lượng và thời gian nắm bắt vị trí.

  2. Đối với bộ lọc tỷ lệ dao động, bạn có thể thử sử dụng các giá trị giảm động, điều chỉnh tùy theo các giống khác nhau hoặc các chu kỳ thời gian khác nhau, để cải thiện hiệu quả lọc.

  3. Trong trường hợp dừng lỗ, có thể giới thiệu các cơ chế dừng di chuyển hoặc theo dõi dừng, để chiến lược giữ vị trí khi xu hướng tiếp tục, thay vì tháo dỡ sớm. Ngoài ra, bạn có thể cân nhắc thiết lập tỷ lệ dừng lỗ khác nhau để tối ưu hóa tỷ lệ lợi nhuận rủi ro.

  4. Có thể tối ưu hóa hơn nữa quản lý vị trí, điều chỉnh tỷ lệ mở vị trí theo động lực của các chỉ số như cường độ của xu hướng, tỷ lệ biến động, mức độ rủi ro, kiểm soát rút lui. Ngoài ra, bạn cũng có thể sử dụng tốt hơn vốn bằng cách tăng hoặc giảm vị trí.

Tóm tắt

Bollinger Bands Breakthrough and Volatility Filtering sử dụng hình ảnh Bollinger Bands về vị trí và biến động giá để xây dựng một chiến lược giao dịch hai chiều. Điều đặc biệt của chiến lược này là bộ lọc biến động tránh giao dịch trong thị trường biến động mạnh, đồng thời đặt các điều kiện dừng lỗ đơn giản hơn. Nhìn chung, chiến lược này bao gồm logic mở cửa và kiểm soát rủi ro, nhưng có thêm không gian để tối ưu hóa hơn nữa trong việc đối phó với sự thay đổi của thị trường, khả năng áp dụng tham số và hiệu quả dừng lỗ.

Mã nguồn chiến lược
/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[Oppen Chow] Super BBS 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value =100, initial_capital=500, commission_type=strategy.commission.percent, commission_value=0.08, pyramiding=2 )

// Input parameters
length = 20
mult = 2
max_drawdown_percent = input(5.5, "Maximum Acceptable Drawdown") / 100
upper_breakout_pct = input(50, "Short Entry Breakout Percentage") / 100
lower_breakout_pct = input(25, "Long Entry Breakout Percentage") / 100
tradeDirection = input(1, title="Trade Direction")
Volatility = input(0.5, title="Volatility") / 100
long_win_pct = input(-0.15, title = "Long Settlement Rate Near Boll Upper Limit")
short_win_pct = input(0.4, title = "Short Settlement Rate Near Boll Lower Limit")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
area = upper - lower

// Calculate the rate of change for two consecutive candlesticks
var float change1 = na
var float change2 = na
change1 := change2
change2 := ((close - open) / open) 

// Check for two or more consecutive candlesticks with a change rate greater than 0.5%
var bool highVolatility = false
highVolatility := change2 > Volatility

// Trading logic
var float highestPriceSinceOpen = na
var float lowestPriceSinceOpen = na
var int profitableDrawbackCount = 1


// Entry logic - In the absence of high volatility
if not highVolatility and strategy.position_size == 0
    if (tradeDirection >= 0) and (close < lower - area * lower_breakout_pct)
        strategy.entry("Long", strategy.long)
        highestPriceSinceOpen := close
        profitableDrawbackCount := 0
    if (tradeDirection <= 0) and (close > upper + area * upper_breakout_pct)
        strategy.entry("Short", strategy.short)
        lowestPriceSinceOpen := close
        profitableDrawbackCount := 0


if strategy.position_size > 0 and close > upper - area * long_win_pct
    strategy.close("Long", comment = "Take Profit")
if strategy.position_size < 0 and close < lower + area * short_win_pct
    strategy.close("Short", comment = "Take Profit")

// Stop loss logic - Based on drawdown percentage
if strategy.position_size > 0
    if (strategy.position_avg_price - close)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Long", comment = "Drawdown Stop Loss")
else if strategy.position_size < 0
    if (close - strategy.position_avg_price)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Short", comment = "Drawdown Stop Loss")