Chiến lược này là một hệ thống giao dịch dựa trên nhiều tín hiệu chéo trung bình chuyển động nhân tố (EMA), kết hợp EMA của các giai đoạn khác nhau với cơ chế dừng lỗ động dựa trên ATR. Chiến lược sử dụng EMA của 10, 39, và 73 giai đoạn như các chỉ số tín hiệu chính, trong khi kết hợp EMA khung thời gian cao hơn 143 giai đoạn như một bộ lọc xu hướng, và thực hiện các mục tiêu dừng lỗ và lợi nhuận năng động bằng cách sử dụng chỉ số ATR.
Khái niệm cơ bản dựa trên nhiều đường chéo EMA và xác nhận xu hướng. Một tín hiệu dài được tạo ra khi EMA ngắn hạn (10 giai đoạn) vượt qua trên EMA trung hạn (39 giai đoạn), và giá trên cả EMA dài hạn (73 giai đoạn) và EMA khung thời gian cao hơn (143 giai đoạn). Ngược lại, một tín hiệu ngắn được tạo ra khi EMA ngắn hạn vượt qua dưới EMA trung hạn, và giá dưới cả EMA dài hạn. Chiến lược thực hiện tỷ lệ rủi ro-lợi nhuận 1:2 bằng cách sử dụng 1x ATR cho mục tiêu dừng lỗ và 2x ATR cho mục tiêu lấy lợi nhuận.
Chiến lược này xây dựng một hệ thống giao dịch kết hợp theo dõi xu hướng và quản lý rủi ro thông qua nhiều đường chéo EMA và dừng động dựa trên ATR. Sức mạnh chính của nó nằm trong cơ chế xác nhận nhiều khung thời gian và quản lý vị trí năng động, trong khi lưu ý đến các rủi ro thị trường và chậm trễ. Sự ổn định và lợi nhuận của chiến lược có thể được tăng thêm thông qua xác nhận khối lượng, lọc sức mạnh xu hướng và các tối ưu hóa khác. Trong ứng dụng thực tế, các tham số nên được điều chỉnh theo môi trường thị trường và đặc điểm giao dịch khác nhau.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-28 00:00:00 period: 2d basePeriod: 2d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced EMA Crossover Strategy", overlay=true) // Define the EMA lengths ema_short_length = 10 ema_long_length = 39 ema_filter_length = 73 ema_higher_tf_length = 143 // Calculate the EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) ema_filter = ta.ema(close, ema_filter_length) ema_higher_tf = request.security(syminfo.tickerid, "D", ta.ema(close, ema_higher_tf_length)) // Calculate ATR for volatility-based stop loss and take profit atr_length = 14 atr = ta.atr(atr_length) // Plot the EMAs plot(ema_short, title="EMA 10", color=color.blue) plot(ema_long, title="EMA 35", color=color.red) plot(ema_filter, title="EMA 75", color=color.orange) plot(ema_higher_tf, title="EMA Higher TF", color=color.purple) // EMA crossover conditions with EMA 75 and higher timeframe EMA filter longCondition = ta.crossover(ema_short, ema_long) and close > ema_filter and close > ema_higher_tf shortCondition = ta.crossunder(ema_short, ema_long) and close < ema_filter and close < ema_higher_tf // Execute long trade with dynamic stop loss and take profit if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", "Long", limit=close + 2 * atr, stop=close - 1 * atr) // Execute short trade with dynamic stop loss and take profit if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", "Short", limit=close - 2 * atr, stop=close + 1 * atr) // Plot signals on the chart plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")