Chiến lược này kết hợp Bollinger Bands và Mức trung bình chuyển động nhân tố 5 ngày (EMA) để tạo ra tín hiệu giao dịch. Khi giá vượt qua Bollinger Band trên và đóng dưới EMA 5 ngày, một vị trí ngắn được mở. Ngược lại, khi giá vượt qua Bollinger Band dưới và đóng trên EMA 5 ngày, một vị trí dài được mở. Ngoài ra, khi một tín hiệu ngược xuất hiện, chiến lược đóng vị trí hiện tại và mở một vị trí mới theo hướng ngược lại. Chiến lược nhằm mục đích nắm bắt sự biến động của thị trường và thay đổi xu hướng bằng cách sử dụng Bollinger Bands để đo mức giá tương đối và EMA làm bộ lọc xu hướng để tạo ra tín hiệu giao dịch.
Bằng cách kết hợp các băng tần Bollinger và EMA, chiến lược này có thể nắm bắt hiệu quả các cơ hội xu hướng và biến động, phù hợp với các chiến lược giao dịch trung hạn đến dài hạn. Tuy nhiên, nên chú ý đến tối ưu hóa tham số, kiểm soát vị trí và quản lý rủi ro. Nó cũng nên được kết hợp với các chỉ số kỹ thuật khác và phân tích cơ bản để có hiệu suất tốt hơn. Hiệu suất của chiến lược có thể bị ảnh hưởng bởi điều kiện thị trường và yêu cầu điều chỉnh và tối ưu hóa dựa trên tình huống thực tế.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands and EMA Strategy", overlay=true) // Define the Bollinger Bands length = input.int(20, title="BB Length") src = input(close, title="BB Source") mult = input.float(2.0, title="BB Multiplier") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot Bollinger Bands plot(upper, "Upper Band", color=color.red) plot(lower, "Lower Band", color=color.green) plot(basis, "Middle Band", color=color.blue) // Use plot instead of hline for basis // Define the 5-period EMA ema5 = ta.ema(close, 5) // Plot the 5 EMA plot(ema5, "5 EMA", color=color.orange) // Generate signals var float entry_price = na var string trade_direction = "none" if (na(close[1])) trade_direction := "none" // Condition for entering a short trade if (open > upper and close < ema5) if (trade_direction != "short") strategy.entry("Short", strategy.short) entry_price := close trade_direction := "short" // Condition for entering a long trade if (open < lower and close > ema5) if (trade_direction != "long") strategy.entry("Long", strategy.long) entry_price := close trade_direction := "long" // Close short trade on a long signal if (trade_direction == "short" and open < lower and close > ema5) strategy.close("Short") strategy.entry("Long", strategy.long) entry_price := close trade_direction := "long" // Close long trade on a short signal if (trade_direction == "long" and open > upper and close < ema5) strategy.close("Long") strategy.entry("Short", strategy.short) entry_price := close trade_direction := "short" // Close trades when opposite signal is generated if (trade_direction == "long" and open > upper and close < ema5) strategy.close("Long") trade_direction := "none" if (trade_direction == "short" and open < lower and close > ema5) strategy.close("Short") trade_direction := "none"