Chiến lược này tạo ra tín hiệu giao dịch dựa trên sự chéo chéo của hai đường trung bình động (EMA). Khi EMA ngắn hạn (20 ngày) vượt qua trên đường EMA dài hạn (50 ngày), một tín hiệu mua được kích hoạt; khi EMA ngắn hạn vượt qua dưới đường EMA dài hạn, một tín hiệu bán được kích hoạt. Ngoài ra, chiến lược vẽ ra đường EMA 200 ngày như một tham chiếu cho xu hướng dài hạn. Ý tưởng chính đằng sau chiến lược này là nắm bắt sự thay đổi trong xu hướng thị trường bằng cách sử dụng sự chéo chéo của đường trung bình động với các giai đoạn khác nhau.
Chiến lược chéo trung bình chuyển động đôi EMA là một chiến lược giao dịch đơn giản và đơn giản phù hợp với thị trường xu hướng. Nó sử dụng chéo trung bình chuyển động ngắn hạn và dài hạn để nắm bắt sự thay đổi trong xu hướng thị trường trong khi kết hợp tham chiếu xu hướng dài hạn. Mặc dù chiến lược có một số hạn chế, chẳng hạn như hiệu suất kém tối ưu trong thị trường hỗn loạn và sự chậm trễ của trung bình chuyển động, nó có thể được tăng cường hơn nữa bằng cách kết hợp các chỉ số bổ sung, tối ưu hóa các tham số, thực hiện các biện pháp quản lý rủi ro và xác nhận xu hướng.
/*backtest start: 2023-03-23 00:00:00 end: 2024-03-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy by Peter Gangmei", overlay=true) // Define the length for moving averages short_ma_length = input.int(20, "Short MA Length") long_ma_length = input.int(50, "Long MA Length") long_ma_200_length = input.int(200, "Long MA 200 Length") // Define start time for testing start_time = timestamp(2024, 01, 01, 00, 00) // Calculate current date and time current_time = timenow // Calculate moving averages ema20 = ta.ema(close, short_ma_length) ema50 = ta.ema(close, long_ma_length) ema200 = ta.ema(close, long_ma_200_length) // Crossing conditions crossed_above = ta.crossover(ema20, ema50) crossed_below = ta.crossunder(ema20, ema50) // Entry and exit conditions within the specified time frame if true if (crossed_above) strategy.entry("Buy", strategy.long) alert("Buy Condition", alert.freq_once_per_bar_close) if (crossed_below) strategy.entry("Sell", strategy.short) alert("Sell Condition", alert.freq_once_per_bar_close) // Plotting moving averages for visualization plot(ema20, color=color.green, title="EMA20") plot(ema50, color=color.red, title="EMA50") plot(ema200, color=color.blue, title="EMA200") // Placing buy and sell markers plotshape(series=crossed_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal") plotshape(series=crossed_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")