BB Keltner Squeeze Trading Chiến lược

Tác giả:ChaoZhang, Ngày: 2023-09-25 17:38:08
Tags:

Tổng quan

Chiến lược giao dịch BB Keltner Squeeze xác định sự đảo ngược xu hướng bằng cách tìm kiếm sự nén giữa Bollinger Bands và Keltner Channels. Đây là một chiến lược giao dịch ngắn hạn. Chiến lược sử dụng Bollinger Bands làm chỉ số cơ sở và Keltner Channels để xác nhận các tín hiệu. Khi giá vượt ra khỏi Bollinger Bands, một sự ép với Keltner Channels báo hiệu sự đảo ngược xu hướng.

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

Các nguyên tắc cốt lõi đằng sau chiến lược này là:

  1. Bollinger Bands đo biến động giá. Nó có các dải trên, giữa và dưới để xác định nếu giá đang trong tình trạng biến động.

  2. Các kênh Keltner xác nhận các tín hiệu Bollinger. Các kênh Keltner cũng đo biến động giá. Khi giá gần với các dải Bollinger, một sự ép với Keltner có nghĩa là biến động cao hơn và đảo ngược tiềm năng.

  3. Các tín hiệu giao dịch được tạo ra dựa trên nén. Breakouts trên dải Bollinger trên cùng với Keltner thu hẹp bên dưới tín hiệu dài. Breakdowns dưới dải Bollinger dưới cùng với Keltner thu hẹp bên trên tín hiệu ngắn.

  4. Dải giữa cho thấy hướng xu hướng. Giá trên dải giữa báo hiệu xu hướng tăng, và bên dưới báo hiệu xu hướng giảm.

  5. Các bước vào và ra dựa trên hướng băng tần trung tâm.

Chiến lược này bổ sung các dải Bollinger với các kênh Keltner để xác định các điểm đảo ngược. Nó minh họa các chiến lược giao dịch đảo ngược trung bình.

Ưu điểm

Những lợi thế chính của chiến lược này là:

  1. Kết hợp hai chỉ số giúp cải thiện độ tin cậy tín hiệu, tránh phá vỡ sai từ chỉ số duy nhất.

  2. Xác định xu hướng rõ ràng bằng cách sử dụng băng tần giữa.

  3. Logic entry/exit linh hoạt dựa trên sự khớp giữa băng tần. tránh giao dịch chống lại xu hướng.

  4. Phù hợp với giao dịch ngắn hạn, ghi lại những đợt phá vỡ và nén ngắn hạn để kiếm được lợi nhuận nhanh chóng.

  5. Hình ảnh trực quan làm nổi bật nén, dải giữa, biểu đồ MACD vv.

  6. Dễ thực hiện và sao chép. logic đơn giản và các tham số cấu hình làm cho việc áp dụng dễ dàng.

Rủi ro

Những rủi ro chính cần xem xét là:

  1. Rủi ro rút tiền từ các động thái kéo dài.

  2. Rủi ro thất bại Bollinger ban đầu có thể là giả mạo ngắn hạn.

  3. Rủi ro tối ưu hóa tham số. Điều chỉnh không chính xác các băng tần và kênh có thể làm suy giảm hiệu suất. Yêu cầu kiểm tra nghiêm ngặt.

  4. Rủi ro thị trường tăng. Mất thời gian cho việc mua bán trong thời gian dài.

  5. Rủi ro giao dịch tần số cao. Bản chất ngắn hạn có thể làm tăng chi phí từ phí và trượt.

  6. Rủi ro thất bại của chỉ báo: tín hiệu có thể ngừng hoạt động trong điều kiện khắc nghiệt.

Rủi ro cần quản lý tích cực thông qua dừng lỗ, kích thước vị trí, điều chỉnh tham số và lập kế hoạch dự phòng mạnh mẽ.

Cơ hội gia tăng

Một số cách để cải thiện chiến lược là:

  1. Kết hợp các chỉ số bổ sung để củng cố tín hiệu, cải thiện tỷ lệ thắng.

  2. Thêm các cơ chế dừng lỗ như dừng lại hoặc dừng ATR để hạn chế tổn thất.

  3. Tối ưu hóa các thông số cho các băng tần và kênh thông qua kiểm tra nghiêm ngặt.

  4. Điều chỉnh kích thước vị trí dựa trên điều kiện thị trường và sức mạnh xu hướng.

  5. Áp dụng máy học để tối ưu hóa tham số, tăng cường tín hiệu và thích nghi.

  6. Phân biệt các chế độ tăng so với gấu. Giảm các giao dịch ngược xu hướng trong thời gian thiên vị hướng mạnh.

  7. Hoàn thành với âm lượng, chỉ số động lực để làm phong phú hơn sự đa dạng tín hiệu.

Với những cải tiến liên tục, chiến lược có thể trở thành một hệ thống giao dịch ngắn hạn mạnh mẽ và nhất quán trên các thị trường khác nhau.

Kết luận

Chiến lược BB Keltner Squeeze tận dụng sự đảo ngược giá thông qua sự nén giữa Bollinger Bands và Keltner Channels. Nó kết hợp các chỉ số kép cho các tín hiệu có khả năng cao, sử dụng băng trung gian để đo hướng xu hướng và xác định sự đảo ngược sắp xảy ra thông qua nén. Chiến lược phù hợp với các nhà giao dịch ngắn hạn tìm kiếm cơ hội thường xuyên. Tuy nhiên, kiểm soát rút và điều chỉnh tham số là điều cần thiết. Với những cải tiến liên tục, nó có tiềm năng trở thành một chiến lược giao dịch ngắn hạn bền vững.


/*backtest
start: 2023-09-17 00:00:00
end: 2023-09-24 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BB Keltner Squeeze Strategy", overlay=true, initial_capital=10000, currency='USD')
length = input(title="Length", type=input.integer, defval=20, minval=0)
src = input(close, title="Source")
bband(length, mult) =>
    sma(close, length) + mult * stdev(close, length)
keltner(length, mult) =>
    ema(close, length) + mult * ema(tr, length)


//BB
B2mult = input(2.0, minval=0.001, maxval=50, title="Band 1 StDev")
B2basis = sma(src, length)
B2dev = B2mult * stdev(src, length)
B2upper = B2basis + B2dev
B2lower = B2basis - B2dev
plot(B2basis, color=color.blue)
p1 = plot(B2upper, color=#00ffff, linewidth=2, title="Band 2SD upper")
p2 = plot(B2lower, color=#00ffff, linewidth=2, title="Band 2SD lower")

//Keltner
useTrueRange = input(true)
Kmult = input(1.5, title="Keltner Range")
Kma = ema(src, length)
Krange = useTrueRange ? tr : high - low
Krangema = ema(Krange, length)
Kupper = Kma + Krangema * Kmult
Klower = Kma - Krangema * Kmult
p5 = plot(Kupper, color=color.yellow, linewidth=2, style=plot.style_circles, title="Keltner upper")
p6 = plot(Klower, color=color.yellow, linewidth=2, style=plot.style_circles, title="Keltner lower")


e1 = (highest(high, length) + lowest(low, length)) / 2 + sma(close, length)
osc = linreg(close - e1 / 2, length, 0)
diff = bband(length, 2) - keltner(length, 1)
osc_color = osc[1] < osc[0] ? osc[0] >= 0 ? #00ffff : #cc00cc : 
   osc[0] >= 0 ? #009b9b : #ff9bff
mid_color = diff >= 0 ? color.green : color.red
fromYear = year > 2014
toYear = year < 2016


direction = 0
squeeze = Kupper > B2upper
midc = 0
midc := squeeze ? 0 : close > B2basis ? 1 : 2
midcolor = midc == 0 ? #666666 : midc == 1 ? #00ff00 : #ff0000
direction := midc[1]

plot(B2basis, color=midcolor, linewidth=4, title="BB Mid")
bgcolor(midc == 0 ? #333333 : #000000, transp=75)

if direction == 0
    if midc[1] == 0 and midc == 1
        strategy.entry("LONG", strategy.long)
        direction := 1
    else if midc[1] == 0 and midc == 2
        strategy.entry("SHORT", strategy.short)
        direction := 2
else if direction != midc
    strategy.close_all()
    direction := 0








Thêm nữa