Đây là một chiến lược giao dịch dựa trên sự chéo chéo của trung bình chuyển động theo cấp số nhân (EMA) 15 giai đoạn và 50 giai đoạn. Chiến lược thực hiện mức dừng lỗ và lấy lợi nhuận thông minh để tối ưu hóa kiểm soát rủi ro-lợi nhuận. Nó không chỉ nắm bắt các tín hiệu đảo ngược xu hướng mà còn tự động điều chỉnh các tham số giao dịch dựa trên sự biến động của thị trường, do đó cải thiện tính ổn định và lợi nhuận của chiến lược.
Chiến lược này dựa trên các tín hiệu chéo giữa đường EMA nhanh (15 giai đoạn) và đường EMA chậm (50 giai đoạn). Một tín hiệu dài được tạo ra khi đường nhanh vượt qua đường chậm, và một tín hiệu ngắn khi đường nhanh vượt qua đường thấp hơn. Để 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 stop-loss động, sử dụng giá mở thấp nhất của 2 ngọn nến trước đó là stop-loss dài và giá mở cao nhất là stop-loss ngắn. Mục tiêu lợi nhuận được thiết lập ở mức gấp đôi rủi ro, đảm bảo tỷ lệ rủi ro-lợi nhuận thuận lợi. Chiến lược sử dụng 30% vốn chủ sở hữu tài khoản để giao dịch, giúp kiểm soát rủi ro.
Đây là một chiến lược chéo EMA có cấu trúc tốt với 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 rủi ro-lợi nhuận thuận lợi. Trong khi có chỗ cho tối ưu hóa, khuôn khổ cơ bản cho thấy tính thực tế và khả năng mở rộng tốt. Thông qua các hướng tối ưu hóa được đề xuất, hiệu suất của chiến lược có thể được tăng thêm.
/*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)