Đây là một chiến lược theo xu hướng dựa trên nhiều đường chéo trung bình chuyển động biểu số (EMA). Chiến lược sử dụng các mối quan hệ chéo giữa EMA ngắn hạn 10 giai đoạn, EMA trung hạn 50 giai đoạn và EMA dài hạn 200 giai đoạn để nắm bắt xu hướng thị trường và thực hiện giao dịch dài / ngắn khi các điều kiện được đáp ứng. Ý tưởng cốt lõi là lọc tiếng ồn thị trường thông qua nhiều đường chéo trung bình chuyển động khung thời gian, xác định hướng xu hướng chính và nắm bắt lợi nhuận trong quá trình tiếp tục xu hướng.
Chiến lược sử dụng một hệ thống chéo EMA ba lần như cơ chế tạo tín hiệu của nó. 1. Sử dụng EMA 200 giai đoạn như là chỉ số xu hướng chính, chỉ có các vị trí dài trên nó và các vị trí ngắn dưới nó 2. Mở các vị trí dài khi EMA ngắn hạn (10 giai đoạn) vượt trên EMA trung hạn (50 giai đoạn) và giá vượt trên EMA dài hạn 3. Mở các vị trí ngắn khi EMA ngắn hạn vượt qua dưới EMA trung hạn và giá dưới EMA dài hạn 4. Đóng các vị trí dài khi EMA ngắn hạn vượt dưới EMA trung hạn 5. Đóng các vị trí ngắn khi EMA ngắn hạn vượt qua EMA trung hạn Chiến lược bao gồm các tính năng gỡ lỗi để theo dõi các giao thoa và mối quan hệ EMA bất thường.
Chiến lược này là một hệ thống theo xu hướng cổ điển đảm bảo nắm bắt xu hướng lớn trong khi duy trì lợi nhuận kịp thời và dừng lỗ thông qua việc sử dụng nhiều EMA. Mặc dù nó có một số sự chậm trễ vốn có, cài đặt tham số hợp lý và quản lý rủi ro vẫn có thể tạo ra lợi nhuận ổn định trong các thị trường xu hướng. Chiến lược có tiềm năng tối ưu hóa đáng kể thông qua việc giới thiệu các chỉ số kỹ thuật bổ sung và các quy tắc giao dịch tinh chỉnh.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-09 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("EMA Crossover Strategy (Enhanced Debug)", overlay=true) // Inputs for EMA periods shortEMA = input.int(10, title="Short EMA Period") mediumEMA = input.int(50, title="Medium EMA Period") longEMA = input.int(200, title="Long EMA Period") // Calculating EMAs emaShort = ta.ema(close, shortEMA) emaMedium = ta.ema(close, mediumEMA) emaLong = ta.ema(close, longEMA) // Plot EMAs plot(emaShort, color=color.green, title="Short EMA") plot(emaMedium, color=color.blue, title="Medium EMA") plot(emaLong, color=color.red, title="Long EMA") // Conditions for entry and exit longCondition = close > emaLong and ta.crossover(emaShort, emaMedium) and emaMedium > emaLong shortCondition = close < emaLong and ta.crossunder(emaShort, emaMedium) and emaMedium < emaLong closeLongCondition = ta.crossunder(emaShort, emaMedium) closeShortCondition = ta.crossover(emaShort, emaMedium) // Debugging labels for unexpected behavior if (ta.crossover(emaShort, emaLong) and not ta.crossover(emaShort, emaMedium)) label.new(bar_index, high, "Short > Long", style=label.style_circle, color=color.red, textcolor=color.white) // Debugging EMA relationships if (emaMedium <= emaLong) label.new(bar_index, high, "Medium < Long", style=label.style_cross, color=color.orange, textcolor=color.white) // Entry logic if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Exit logic if (closeLongCondition) strategy.close("Long") if (closeShortCondition) strategy.close("Short") // Display labels for signals plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Buy Signal") plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Sell Signal")