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.
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
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
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
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
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
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.
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
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)