Chiến lược này sử dụng một hệ thống trung bình động kép để xác định xu hướng và quyết định giao dịch, sử dụng vị trí tương đối của các đường trung bình di chuyển theo cấp số nhân nhanh và chậm (EMA) tại các thời điểm cụ thể để xác định sự khởi đầu, tiếp tục hoặc chấm dứt xu hướng. Chiến lược kiểm tra mối quan hệ giữa các đường EMA nhanh và chậm tại một thời điểm cố định hàng ngày, thiết lập các vị trí dài khi đường nhanh nằm trên đường chậm và các vị trí ngắn khi nó nằm dưới.
Cốt lõi của chiến lược dựa trên hai EMA với các khoảng thời gian khác nhau để xác định xu hướng. EMA nhanh (thời gian mặc định 10) nhạy cảm hơn với sự thay đổi giá, có khả năng nắm bắt nhanh các biến động của thị trường; EMA chậm (thời gian mặc định 50) phản ánh xu hướng dài hạn hơn. Chiến lược kiểm tra mối quan hệ vị trí giữa hai đường này vào một thời điểm cụ thể mỗi ngày giao dịch (thời gian mặc định 9:00), sử dụng tín hiệu chéo EMA để xác định hướng xu hướng thị trường và thực hiện giao dịch. Một vị trí dài được nhập khi EMA nhanh vượt qua trên EMA chậm, cho thấy động lực tăng mạnh, trong khi một vị trí ngắn được nhập khi EMA nhanh vượt qua dưới EMA chậm, cho thấy động lực giảm mạnh.
Chiến lược đạt được một hệ thống giao dịch theo xu hướng đơn giản nhưng hiệu quả bằng cách kết hợp hệ thống EMA kép với các cơ chế kiểm tra thời gian cố định. Sức mạnh của nó nằm trong logic rõ ràng và tự động hóa cao, mặc dù nó phải đối mặt với những hạn chế từ độ trễ trung bình động và thời gian nhập cảnh cố định. Vẫn còn nhiều chỗ để cải thiện thông qua việc giới thiệu các chỉ số kỹ thuật bổ sung, tối ưu hóa các cơ chế lựa chọn tham số và tăng cường các biện pháp kiểm soát rủi ro. Nhìn chung, đây là một khuôn khổ chiến lược cơ bản thực tế có thể được tinh chỉnh và tối ưu hóa hơn nữa theo các yêu cầu cụ thể.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Daily EMA Comparison Strategy", shorttitle="Daily EMA cros Comparison", overlay=true) //------------------------------------------------------------------------------ // Inputs //------------------------------------------------------------------------------ fastEmaLength = input.int(10, title="Fast EMA Length", minval=1) // Fast EMA period slowEmaLength = input.int(50, title="Slow EMA Length", minval=1) // Slow EMA period checkHour = input.int(9, title="Check Hour (24h format)", minval=0, maxval=23) // Hour to check checkMinute = input.int(0, title="Check Minute", minval=0, maxval=59) // Minute to check //------------------------------------------------------------------------------ // EMA Calculation //------------------------------------------------------------------------------ fastEMA = ta.ema(close, fastEmaLength) slowEMA = ta.ema(close, slowEmaLength) //------------------------------------------------------------------------------ // Time Check //------------------------------------------------------------------------------ // Get the current bar's time in the exchange's timezone currentTime = timestamp("GMT-0", year, month, dayofmonth, checkHour, checkMinute) // Check if the bar's time equals or passes the daily check time isCheckTime = (time >= currentTime and time < currentTime + 60 * 1000) // 1-minute tolerance //------------------------------------------------------------------------------ // Entry Conditions //------------------------------------------------------------------------------ // Buy if Fast EMA is above Slow EMA at the specified time buyCondition = isCheckTime and fastEMA > slowEMA // Sell if Fast EMA is below Slow EMA at the specified time sellCondition = isCheckTime and fastEMA < slowEMA //------------------------------------------------------------------------------ // Strategy Execution //------------------------------------------------------------------------------ // Enter Long if buyCondition strategy.entry("Long", strategy.long) // Enter Short if sellCondition strategy.entry("Short", strategy.short) //------------------------------------------------------------------------------ // Plot EMAs //------------------------------------------------------------------------------ plot(fastEMA, color=color.blue, title="Fast EMA") plot(slowEMA, color=color.orange, title="Slow EMA")