Chiến lược này là một chiến lược theo xu hướng đơn giản dựa trên đường chéo EMA. Nó sử dụng hai đường EMA với các tham số khác nhau, đường EMA ngắn hạn và đường EMA dài hạn. Khi đường EMA ngắn hạn vượt qua đường EMA dài hạn, đi dài. Khi đường EMA ngắn hạn vượt qua đường EMA dài hạn, đóng vị trí. Với dừng lỗ và lấy lợi nhuận để quản lý rủi ro.
Chỉ số EMA là một chỉ số theo xu hướng làm mịn mượt giá theo cấp số nhân. Dòng EMA ngắn hạn phản ứng nhanh hơn với những thay đổi giá, phản ánh xu hướng gần đây. Dòng EMA dài hạn phản ứng chậm hơn, phản ánh xu hướng dài hạn. Khi EMA ngắn vượt qua trên EMA dài hạn, nó chỉ ra đà tăng gần đây mạnh hơn xu hướng dài hạn, có thể đi dài. Ngược lại, khi EMA ngắn vượt qua dưới EMA dài, nó chỉ ra đà giảm gần đây mạnh hơn, nên đóng vị trí dài.
Chiến lược này thiết lập 9 giai đoạn và 21 giai đoạn đường EMA. Sử dụng chéo 9 giai đoạn ngắn EMA và 21 giai đoạn dài EMA như tín hiệu giao dịch:
Giải pháp rủi ro:
Chiến lược này tận dụng sự giao thoa EMA của hai EMA để theo dõi xu hướng. Ưu điểm của nó là logic đơn giản, tần suất giao dịch trung bình, nắm bắt xu hướng trung và dài hạn. Tuy nhiên EMA có hiệu ứng chậm trễ. Thêm nhiều chỉ số để lọc và tối ưu hóa stop loss động có thể làm giảm rủi ro hơn nữa. Nhìn chung, EMA Crossover có hiệu quả trong việc nắm bắt xu hướng trung và dài hạn.
/*backtest start: 2023-01-25 00:00:00 end: 2024-01-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("EMA Crossover Strategy", overlay=true) // Input parameters shortPeriod = input(9, title="Short EMA Period") longPeriod = input(21, title="Long EMA Period") stopLossPercent = input(1, title="Stop Loss (%)") / 100 takeProfitMultiplier = input(2, title="Take Profit Multiplier") // Calculate EMAs emaShort = ema(close, shortPeriod) emaLong = ema(close, longPeriod) // Plot EMAs plot(emaShort, color=color.blue, title="Short EMA") plot(emaLong, color=color.red, title="Long EMA") // Strategy logic strategy.entry("Buy", strategy.long, when=crossover(emaShort, emaLong)) strategy.close("Buy", when=crossunder(emaShort, emaLong)) // Risk management atrValue = atr(14) stopLossLevel = close * (1 - stopLossPercent) takeProfitLevel = close * takeProfitMultiplier strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=stopLossLevel, profit=takeProfitLevel)