Chiến lược này dựa trên chỉ số Bollinger Bands. Nó nắm bắt xu hướng thị trường bằng cách đi ngắn khi giá chạm vào dải trên và đi dài khi chạm vào dải dưới. Ngoài ra, chiến lược giới thiệu khái niệm kim tự tháp, trong đó nó sẽ tiếp tục thêm các vị trí theo hướng ban đầu nếu số lượng các vị trí chưa đạt đến mức tối đa đã thiết lập.
Bollinger Bands bao gồm ba dòng. Dải giữa là trung bình di chuyển đơn giản của giá đóng cửa. Dải trên và dưới là một số độ lệch chuẩn trên và dưới dải giữa. Vì giá luôn dao động xung quanh mức trung bình, nên dải trên và dưới của Bollinger Bands có thể được xem là một phạm vi áp lực cho giá. Khi giá vượt qua dải trên, nó cho thấy xu hướng tăng mạnh và có thể nắm giữ một vị trí dài; một sự phá vỡ dưới dải dưới cho thấy xu hướng giảm mạnh và có thể nắm giữ một vị trí ngắn. Đồng thời, khi số lượng vị trí thấp hơn mức tối đa đã thiết lập, chiến lược sẽ tiếp tục thêm các vị trí dựa trên vị trí ban đầu, khuếch đại cường độ nắm bắt xu hướng.
Chiến lược này sử dụng các đặc điểm xu hướng của Bollinger Bands. Bằng cách nhập các vị trí khi giá chạm vào các dải trên và dưới, và khuếch đại cường độ nắm bắt xu hướng thông qua kim tự tháp, ý tưởng tổng thể rất đơn giản và hiệu quả. Tuy nhiên, nó cũng có độ trễ và độ nhạy tham số nhất định. Trong các ứng dụng thực tế, cần phải chú ý đến tối ưu hóa các tham số và quản lý vị trí.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Breakout Strategy", overlay=true) // Définition des paramètres length = input(20, title="Bollinger Bands Length") multiplier = input(2.0, title="Multiplier") pyramiding = input(5, title="Pyramiding") // Calcul des bandes de Bollinger basis = ta.sma(close, length) dev = multiplier * ta.stdev(close, length) upper_band = basis + dev lower_band = basis - dev // Règles d'entrée buy_signal = close <= lower_band sell_signal = close >= upper_band // Gestion des positions if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.entry("Sell", strategy.short) // Pyramiding if (strategy.opentrades < pyramiding) strategy.entry("Buy", strategy.long) else if (strategy.opentrades > pyramiding) strategy.entry("Sell", strategy.short) // Tracé des bandes de Bollinger plot(basis, color=color.blue) plot(upper_band, color=color.red) plot(lower_band, color=color.green)