该策略采用双均线系统进行趋势判断和交易决策,通过快速均线和慢速均线在特定时间点的相对位置关系来识别市场趋势的开始、延续或结束。策略每日在固定时间检查快速EMA与慢速EMA的位置关系,当快线位于慢线上方时建立多头仓位,当快线位于慢线下方时建立空头仓位,从而实现趋势跟踪交易。
策略核心是基于两条不同周期的指数移动平均线(EMA)进行趋势判断。快速EMA(默认周期为10)对价格变化较为敏感,能够更快地捕捉市场动向;慢速EMA(默认周期为50)则反映更长期的趋势。策略在每个交易日的指定时间(默认为9:00)检查两条均线的位置关系,通过均线交叉信号来确定市场趋势方向并进行交易。当快速EMA上穿慢速EMA时,表明短期上涨动能增强,此时入场做多;当快速EMA下穿慢速EMA时,表明短期下跌动能增强,此时入场做空。
该策略通过结合快慢双均线系统和固定时间检查机制,实现了简单而有效的趋势跟踪交易系统。策略的优势在于逻辑清晰、自动化程度高,但同时也存在均线滞后性和固定时间入场等局限。通过引入额外的技术指标、优化参数选择机制和增加风险控制手段,策略仍有较大的改进空间。整体而言,这是一个具有实用价值的基础策略框架,可以根据具体需求进行进一步完善和优化。
/*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")