
Đây là một chiến lược giao dịch dựa trên 15 chu kỳ và 50 chu kỳ chỉ số chuyển động trung bình (EMA) chéo. Chiến lược đạt được kiểm soát tối ưu của tỷ lệ lợi nhuận rủi ro thông qua thiết lập dừng lỗ và lợi nhuận thông minh. Chiến lược này không chỉ có thể nắm bắt tín hiệu đảo ngược xu hướng, mà còn có thể tự động điều chỉnh các tham số giao dịch theo biến động thị trường, do đó cải thiện sự ổn định và lợi nhuận của chiến lược.
Lập luận cốt lõi của chiến lược dựa trên tín hiệu chéo của EMA (15 chu kỳ) nhanh và EMA (50 chu kỳ). Khi đường nhanh đi qua đường chậm, hệ thống tạo ra nhiều tín hiệu; Khi đường chậm đi qua đường nhanh, hệ thống tạo ra tín hiệu trống. Để tối ưu hóa quản lý rủi ro, chiến lược sử dụng phương pháp thiết lập dừng lỗ động, tức là giá mở thấp nhất của đường 2K trước đây được sử dụng làm điểm dừng nhiều đầu, giá mở cao nhất là điểm dừng lỗ trống. Mục tiêu lợi nhuận được thiết lập bằng cách tăng gấp đôi rủi ro, đảm bảo lợi nhuận rủi ro tốt hơn.
Đây là một chiến lược chéo tuyến tính có cấu trúc, logic rõ ràng. Bằng cách kết hợp các phương pháp phân tích kỹ thuật cổ điển với các kỹ thuật quản lý rủi ro hiện đại, chiến lược đạt được các đặc điểm lợi nhuận rủi ro tốt hơn. Mặc dù có một số không gian tối ưu hóa, nhưng khung cơ bản của chiến lược có tính thực tế và khả năng mở rộng tốt.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Cross - Any Direction", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30)
// Input for EMAs
ema_short_length = input(15, title="Short EMA Length")
ema_long_length = input(50, title="Long EMA Length")
// Calculate EMAs
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
// Plot EMAs
plot(ema_short, color=color.blue, title="15 EMA")
plot(ema_long, color=color.red, title="50 EMA")
// Entry Conditions (Any EMA Cross)
cross_condition = ta.crossover(ema_short, ema_long) or ta.crossunder(ema_short, ema_long)
// Determine Trade Direction
is_long = ta.crossover(ema_short, ema_long)
is_short = ta.crossunder(ema_short, ema_long)
// Stop Loss and Take Profit
long_stop_loss = ta.lowest(open[1], 2) // Lowest open of the last 2 candles
short_stop_loss = ta.highest(open[1], 2) // Highest open of the last 2 candles
long_take_profit = close + 2 * (close - long_stop_loss)
short_take_profit = close - 2 * (short_stop_loss - close)
// Execute Trades
if (cross_condition)
if (is_long)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit)
else if (is_short)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit)
// Plot Stop Loss and Take Profit Levels
plot(long_stop_loss, color=color.orange, title="Long Stop Loss", style=plot.style_circles, linewidth=2)
plot(long_take_profit, color=color.green, title="Long Take Profit", style=plot.style_circles, linewidth=2)
plot(short_stop_loss, color=color.orange, title="Short Stop Loss", style=plot.style_circles, linewidth=2)
plot(short_take_profit, color=color.red, title="Short Take Profit", style=plot.style_circles, linewidth=2)