Bollinger Bands Breakout với Chiến lược lọc biến động

Tác giả:ChaoZhang, Ngày: 2024-03-08 15:28:05
Tags:

img

Tổng quan chiến lược

Chiến lược Bollinger Bands Breakout with Volatility Filter là một chiến lược giao dịch dựa trên chỉ số Bollinger Bands. Nó sử dụng Bollinger Bands để xác định vị trí và biến động của giá so với đường trung bình động, do đó quyết định các điểm vào và ra. Một khía cạnh độc đáo của chiến lược này là nó sử dụng bộ lọc biến động, tránh tham gia giao dịch trong thời gian biến động thị trường cao bằng cách phát hiện tỷ lệ thay đổi của các ngọn nến liên tiếp. Ngoài ra, chiến lược đặt ra các điều kiện để lấy lợi nhuận và dừng lỗ để bảo vệ lợi nhuận và kiểm soát rủi ro.

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

Bollinger Bands bao gồm ba đường: đường giữa là một đường trung bình di chuyển đơn giản, trong khi các dải trên và dưới được đặt ở một độ lệch chuẩn nhất định trên và dưới đường giữa, tương ứng.

Các điều kiện tham gia của chiến lược dựa trên vị trí của giá đóng liên quan đến Bollinger Bands. Nếu hướng giao dịch được thiết lập là dài (tradeDirection>=0) và giá đóng phá vỡ dưới dải dưới một tỷ lệ phần trăm nhất định (lower_breakout_pct), một vị trí dài được mở; nếu hướng giao dịch được thiết lập là ngắn (tradeDirection<=0) và giá đóng phá vỡ trên dải trên một tỷ lệ phần trăm nhất định (upper_breakout_pct), một vị trí ngắn được mở. Các thông số tỷ lệ phần trăm phá vỡ cho phép giá vượt qua Bollinger Bands một chút trước khi vào vị trí để xác nhận xu hướng.

Mặt khác, nếu tỷ lệ thay đổi của hai cây nến liên tiếp đều vượt quá ngưỡng biến động đã đặt trước (Tuyển động), biến động thị trường hiện tại được coi là cao và chiến lược sẽ không mở các vị trí mới.

Về các vị trí thoát, nếu giá đóng của một vị trí dài đạt gần dải trên (vùng trên)long_win_pct), hoặc giá đóng của một vị trí ngắn đạt gần dải dưới (dưới + khu vựcNgoài ra, nếu lỗ chưa thực hiện của một vị trí vượt quá tỷ lệ phần trăm rút tiền tối đa đã đặt trước (max_drawdown_percent), chiến lược cũng sẽ đóng vị trí để dừng lỗ.

Ưu điểm chiến lược

  1. Bollinger Bands là một chỉ số kỹ thuật trưởng thành và được sử dụng rộng rãi kết hợp thông tin về đường trung bình động và biến động giá.

  2. Chiến lược bao gồm cả logic đầu vào dài và ngắn, cho phép nắm bắt linh hoạt các cơ hội trong cả thị trường tăng và giảm.

  3. Bộ lọc biến động tránh mở các vị trí trên các thị trường biến động cực kỳ, giảm thiểu rủi ro liên quan đến giao dịch thường xuyên và đòn bẩy đến một mức độ nhất định.

  4. Chiến lược sử dụng các cơ chế lấy lợi nhuận và dừng lỗ để quản lý tích cực các vị trí và đóng chúng khi giá quay trở lại mức chính. Điều này giúp bảo vệ lợi nhuận và kiểm soát rút tiền.

Rủi ro chiến lược

  1. Bollinger Bands về cơ bản là một chỉ số chậm trễ và có một sự chậm trễ nhất định trong phản ứng với thị trường.

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

  3. Mặc dù có các biện pháp dừng lỗ, nhưng khi thị trường thiếu hụt, chiến lược có thể không thể thực hiện ở mức giá đã đặt trước, dẫn đến tổn thất lớn hơn.

  4. Chiến lược này không thiết lập dừng lỗ hoặc dừng cân bằng sau khi mở các vị trí, có thể dẫn đến một số lợi nhuận.

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

  1. Xem xét việc đưa ra nhiều chỉ số kỹ thuật hơn hoặc đánh giá trạng thái thị trường, chẳng hạn như ATR, chỉ số xu hướng, chỉ số biến động, vv, như là điều kiện lọc cho chiến lược để cải thiện chất lượng và thời gian nhập.

  2. Đối với bộ lọc biến động, hãy thử áp dụng các ngưỡng năng động thích nghi với các công cụ hoặc khung thời gian khác nhau để cải thiện hiệu quả lọc.

  3. Về stop-loss và take-profit, hãy đưa ra các cơ chế stop trailing hoặc break-even để cho phép chiến lược giữ các vị trí khi xu hướng tiếp tục, thay vì đóng các vị trí sớm.

  4. Tiếp tục tối ưu hóa quản lý vị trí bằng cách điều chỉnh động kích thước đầu vào dựa trên sức mạnh xu hướng, biến động, mức độ rủi ro và các chỉ số khác để kiểm soát rút vốn. Ngoài ra, sử dụng vốn tốt hơn thông qua các hoạt động như thêm và giảm vị trí.

Tóm lại

Chiến lược Bollinger Bands Breakout with Volatility Filter sử dụng tính chất của vị trí giá và biến động của Bollinger Bands để xây dựng một chiến lược giao dịch hai chiều. khía cạnh độc đáo của chiến lược này là bộ lọc biến động tránh giao dịch trên các thị trường cực kỳ biến động, đồng thời thiết lập các điều kiện lấy lợi nhuận và dừng lỗ tương đối đơn giản. Nhìn chung, chiến lược bao gồm logic nhập và thoát khá toàn diện và kiểm soát rủi ro, nhưng có chỗ cho tối ưu hóa hơn nữa về việc thích nghi với những thay đổi của thị trường, khả năng áp dụng tham số và hiệu quả dừng lỗ. Nếu có thể giới thiệu nhiều chỉ số kỹ thuật hơn, các tham số năng động và tối ưu hóa quản lý vị trí, độ bền và lợi nhuận của chiến lược có thể được cải thiện.


/*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")


Thêm nữa