
Esta estrategia utiliza un sistema de promedio móvil dual para realizar juicios de tendencia y tomar decisiones comerciales, e identifica el comienzo, la continuación o el final de una tendencia del mercado a través de la relación de posición relativa entre el promedio de movimiento rápido y el promedio de movimiento lento en un punto específico en el tiempo. La estrategia verifica la relación posicional entre la EMA rápida y la EMA lenta a una hora fija todos los días, establece una posición larga cuando la línea rápida está por encima de la línea lenta y establece una posición corta cuando la línea rápida está por debajo de la línea lenta. Logrando así un seguimiento de tendencias comerciales.
El núcleo de la estrategia es realizar un juicio de tendencia basándose en dos promedios móviles exponenciales (EMA) de diferentes períodos. La EMA rápida (el período predeterminado es 10) es más sensible a los cambios de precios y puede capturar las tendencias del mercado más rápidamente; la EMA lenta (el período predeterminado es 50) refleja tendencias a más largo plazo. La estrategia verifica la relación posicional de los dos promedios móviles en un momento específico en cada día de negociación (el valor predeterminado es las 9:00), determina la dirección de la tendencia del mercado y opera en función de la señal de cruce de los promedios móviles. Cuando la EMA rápida cruza por encima de la EMA lenta, indica que el impulso ascendente a corto plazo ha aumentado y es hora de ingresar al mercado para comprar; cuando la EMA rápida cruza por debajo de la EMA lenta, indica que el impulso ascendente a corto plazo ha aumentado y es hora de ingresar al mercado para comprar; El impulso bajista a largo plazo ha aumentado y es hora de ingresar al mercado para operar en corto.
Esta estrategia implementa un sistema comercial de seguimiento de tendencias simple y efectivo al combinar un sistema de promedio móvil dual rápido y lento con un mecanismo de verificación de tiempo fijo. Las ventajas de esta estrategia son una lógica clara y un alto grado de automatización, pero también tiene limitaciones como el retraso del promedio móvil y el tiempo de entrada fijo. Todavía hay mucho margen de mejora en la estrategia introduciendo indicadores técnicos adicionales, optimizando los mecanismos de selección de parámetros y aumentando las medidas de control de riesgos. En general, se trata de un marco de estrategia básico con valor práctico, que puede mejorarse y optimizarse aún más según las necesidades específicas.
/*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")