Chiến lược này là một hệ thống giao dịch trong ngày kết hợp các Bollinger Bands và Fibonacci retracement level. Nó xác định các điều kiện mua quá mức và bán quá mức bằng cách sử dụng Bollinger Bands trong khi sử dụng các mức Fibonacci retracement để xác nhận các vùng hỗ trợ và kháng cự tiềm năng, do đó nắm bắt các cơ hội giao dịch trong biến động thị trường. Chiến lược sử dụng Bollinger Bands dựa trên cửa sổ 20 giai đoạn và ba mức Fibonacci chính: 0,236, 0,382 và 0,618.
Logic cốt lõi của chiến lược dựa trên các yếu tố chính sau: 1. Sử dụng Bollinger Bands (2 độ lệch chuẩn) để xác định các vùng giá mua quá mức và bán quá mức 2. Tính toán các mức khôi phục Fibonacci dựa trên giá cao nhất và thấp nhất của 20 giai đoạn gần đây 3. Tạo tín hiệu mua khi giá phá vỡ dưới dải Bollinger thấp hơn và vẫn nằm trên mức hỗ trợ Fibonacci 0,236 hoặc 0,382 4. Tạo tín hiệu bán khi giá phá vỡ trên Bollinger Band trên và vẫn dưới mức kháng cự Fibonacci 0.618 5. Sử dụng các điểm dừng lỗ và lấy lợi nhuận cố định để kiểm soát rủi ro và đảm bảo lợi nhuận
Đây là một hệ thống giao dịch hoàn chỉnh kết hợp các công cụ phân tích kỹ thuật cổ điển, cung cấp cho các nhà giao dịch một khuôn khổ giao dịch có hệ thống thông qua sự phối hợp của Bollinger Bands và Fibonacci. Mặc dù có một số hạn chế nhất định, chiến lược có thể hoạt động tốt trong giao dịch trong ngày thông qua tối ưu hóa tham số và quản lý rủi ro thích hợp.
/*backtest start: 2025-01-02 00:00:00 end: 2025-01-09 00:00:00 period: 10m basePeriod: 10m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Bollinger Bands and Fibonacci Intraday Strategy", overlay=true) // Bollinger Bands settings length = input.int(20, title="Bollinger Band Length") src = close mult = input.float(2.0, title="Bollinger Band Multiplier") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Fibonacci retracement levels fibRetrace1 = input.float(0.236, title="Fibonacci Level 0.236") fibRetrace2 = input.float(0.382, title="Fibonacci Level 0.382") fibRetrace3 = input.float(0.618, title="Fibonacci Level 0.618") // Define the Fibonacci levels based on recent high and low var float fibLow = na var float fibHigh = na if (bar_index == 0 or ta.highest(high, 20) != fibHigh or ta.lowest(low, 20) != fibLow) fibHigh := ta.highest(high, 20) fibLow := ta.lowest(low, 20) fibLevel1 = fibLow + (fibHigh - fibLow) * fibRetrace1 fibLevel2 = fibLow + (fibHigh - fibLow) * fibRetrace2 fibLevel3 = fibLow + (fibHigh - fibLow) * fibRetrace3 // Plot Fibonacci levels on the chart plot(fibLevel1, title="Fib 0.236", color=color.blue, linewidth=1) plot(fibLevel2, title="Fib 0.382", color=color.green, linewidth=1) plot(fibLevel3, title="Fib 0.618", color=color.red, linewidth=1) // Buy and Sell conditions buyCondition = close < lower and close > fibLevel1 sellCondition = close > upper and close < fibLevel3 // Plot Buy and Sell signals plotshape(buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Execute strategy if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short) // Exit strategy with stop loss and take profit stopLoss = input.float(50, title="Stop Loss (pips)", minval=1) takeProfit = input.float(100, title="Take Profit (pips)", minval=1) strategy.exit("Exit Buy", "Buy", stop=close - stopLoss * syminfo.mintick, limit=close + takeProfit * syminfo.mintick) strategy.exit("Exit Sell", "Sell", stop=close + stopLoss * syminfo.mintick, limit=close - takeProfit * syminfo.mintick)