Chiến lược giao dịch Bollinger Bands Fibonacci Retracement

Tác giả:ChaoZhang, Ngày: 2023-09-27 16:52:05
Tags:

Tổng quan

Chiến lược này xác định các kênh giá bằng cách sử dụng Bollinger Bands và xác định mức hỗ trợ / kháng cự dựa trên tỷ lệ khôi phục Fibonacci cho giao dịch thuật toán.

Chiến lược logic

  1. Tính toán các băng trung, trên và dưới của các băng Bollinger

    • Dải giữa là SMA, dải trên/dưới là SMA +/- số nhân của ATR

    • Bollinger Bands mở rộng và thu hẹp dựa trên biến động thị trường

  2. Tính toán các mức khôi phục Fibonacci dựa trên tỷ lệ

    • Tỷ lệ khôi phục là số nhân của tỷ lệ ATR * Fibonacci

    • Mức Fib nhiều được tính dựa trên dải giữa

  3. Theo dõi giá vượt khỏi Bollinger Bands

    • Xem xét đi dài khi giá phá vỡ trên dải trên

    • Xem xét đi ngắn khi giá phá vỡ dưới dải dưới

  4. Tham gia giao dịch và thiết lập SL/TP xung quanh các vùng khôi phục Fib

    • Nhập giao dịch khi giá kéo trở lại vùng Fib

    • Đặt dừng lỗ và lấy lợi nhuận ở phía bên kia của vùng

Phân tích lợi thế

  • Bollinger Bands xác định rõ phạm vi và xu hướng biến động thị trường

  • Tỷ lệ Fibonacci nắm bắt các mức hỗ trợ và kháng cự chính

  • Kết hợp các chỉ số cho phép giao dịch thuật toán

  • Pullback nhập tăng xác suất thành công và tránh đuổi theo

  • Các thông số điều chỉnh thích nghi với các giai đoạn và sản phẩm khác nhau

Phân tích rủi ro

  • Bollinger Bands breakouts có thể là tín hiệu sai

  • Khó dự đoán chính xác khi nào giá sẽ quay trở lại mức Fib

  • Việc đặt stop loss không đúng có thể làm tăng lỗ

  • Không đủ hoặc quá lớn ảnh hưởng đến chiến lược

  • Các thông số không hiệu quả hoặc xu hướng thị trường liên tục có thể làm mất hiệu quả chiến lược

  • Cải thiện logic Bollinger Bands, xem xét khối lượng, điều chỉnh vùng động, v.v.

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

  • Tối ưu hóa các thông số Bollinger Bands để đánh giá xu hướng và S / R tốt hơn

  • Thêm các chỉ số âm lượng để xác nhận tín hiệu đột phá

  • Sử dụng máy học để dự đoán xác suất rút lui

  • Tích hợp nhiều chỉ số kỹ thuật hơn để xác nhận tín hiệu

  • Chọn các thông số hợp lý dựa trên đặc điểm sản phẩm và các phiên giao dịch

  • Điều chỉnh kịp thời sức mạnh vùng rút lui để thay đổi biến động

Kết luận

Chiến lược này kết hợp các điểm mạnh của Bollinger Bands và Fibonacci retraces để xác định xu hướng và tham gia ở mức pullback có khả năng cao. Rủi ro có thể được giảm và kết quả có thể được cải thiện bằng cách tối ưu hóa tham số, xác nhận tín hiệu bổ sung, điều chỉnh vùng động, v.v. Có không gian để mở rộng bằng cách kết hợp khối lượng, mô hình học máy, v.v. Chiến lược có thể được tinh chỉnh hơn nữa thông qua tối ưu hóa liên tục.


/*backtest
start: 2023-08-27 00:00:00
end: 2023-09-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle="BBands Fibo", title="Bollinger Bands Fibonacci Ratios", overlay=true)

length      =   input(20, minval=1, type=input.integer, title="Length")
src         =   input(close, title="Source")
offset      =   input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
fibo1       =   input(defval=1.618, title="Fibonacci Ratio 1")
fibo2       =   input(defval=2.618, title="Fibonacci Ratio 2")
fibo3       =   input(defval=4.236, title="Fibonacci Ratio 3")

fiboBuyReverse = input(false, title = "Use Reverse Buy?")
fiboBuy       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Buy")
fiboSellReverse = input(false, title = "Use Reverse Sell?")
fiboSell       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Sell")

sma = sma(src, length)
atr = atr(length)

ratio1 = atr * fibo1
ratio2 = atr * fibo2
ratio3 = atr * fibo3

upper3 = sma + ratio3
upper2 = sma + ratio2
upper1 = sma + ratio1

lower1 = sma - ratio1
lower2 = sma - ratio2
lower3 = sma - ratio3

plot(sma, style=0, title="Basis", color=color.orange, linewidth=2, offset = offset)

upp3 = plot(upper3, transp=90, title="Upper 3", color=color.teal, offset = offset)
upp2 = plot(upper2, transp=60, title="Upper 2", color=color.teal, offset = offset)
upp1 = plot(upper1, transp=30, title="Upper 1", color=color.teal, offset = offset)

low1 = plot(lower1, transp=30, title="Lower 1", color=color.teal, offset = offset)
low2 = plot(lower2, transp=60, title="Lower 2", color=color.teal, offset = offset)
low3 = plot(lower3, transp=90, title="Lower 3", color=color.teal, offset = offset)

fill(upp3, low3, title = "Background", color=color.new(color.teal, 95))

targetBuy = fiboBuy == "Fibo 1" ? upper1 : fiboBuy == "Fibo 2" ? upper2 : upper3
targetBuy := fiboBuyReverse == false ? targetBuy : fiboBuy == "Fibo 1" ? lower1 : fiboBuy == "Fibo 2" ? lower2 : lower3
buy = low < targetBuy and high > targetBuy

targetSell = fiboSell == "Fibo 1" ? lower1 : fiboSell == "Fibo 2" ? lower2 : lower3
targetSell := fiboSellReverse == false ? targetSell : fiboSell == "Fibo 1" ? upper1 : fiboSell == "Fibo 2" ? upper2 : upper3
sell = low < targetSell and high > targetSell

strategy.entry("Buy", true, when = buy)
strategy.entry("Sell", false, when = sell)


Thêm nữa