Esta estrategia combina el seguimiento de tendencias con un mecanismo de salida basado en el tiempo. El concepto central es capturar las tendencias del mercado mediante el monitoreo de las relaciones de precios con el promedio móvil de 60 días al tiempo que incorpora un mecanismo de liquidación forzada al final del año para controlar el riesgo. Las posiciones largas se ingresan cuando el precio de cierre se rompe por encima del MA de 60 días con una pendiente positiva, y todas las posiciones se cierran el último día de negociación de cada año.
La estrategia se basa en varios elementos fundamentales: Determinación de tendencia: utiliza una media móvil simple (SMA) de 60 días como indicador de tendencia a mediano plazo, con un cálculo de pendiente de 14 días para confirmar la dirección de la tendencia. 2. Señales de entrada: Las señales de compra se generan cuando el precio se rompe por encima del MA de 60 días con una pendiente positiva, lo que indica una tendencia alcista potencial. Mecanismo de salida: Implementa una salida basada en el tiempo fijo, cerrando todas las posiciones el último día de negociación de cada año para evitar los riesgos de posición interanual. 4. Gestión del tiempo de negociación: Incorpora el control del rango de fecha y la validación del día de negociación para garantizar que las operaciones solo se realicen en días de negociación válidos.
Esta estrategia crea un sistema comercial relativamente robusto al combinar el seguimiento de tendencias con la gestión del tiempo. Su lógica simple y clara lo hace fácil de entender e implementar, ofreciendo una buena utilidad práctica. Con la optimización de parámetros apropiada y medidas suplementarias de control de riesgos, la estrategia muestra potencial para generar retornos estables en condiciones comerciales reales.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 3m basePeriod: 3m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Buy above 60-day MA, Sell at year-end", overlay=true, pyramiding=1) // Define inputs for start and end dates startDate = input(defval=timestamp("2010-01-01"), title="Start Date") endDate = input(defval=timestamp("2024-12-31"), title="End Date") // Define 60-day moving average length = input.int(defval=60, title="MA Length", minval=1) ma = ta.sma(close, length) slope = ta.sma(ma, 14) - ta.sma(ma, 14)[1] // Check if current bar is within the specified date range withinDateRange = true // Function to check if a day is a trading day (Monday to Friday) isTradingDay(day) => true // Check if current bar is the last trading day of the year // Check if current bar is the last trading day of the year isLastTradingDayOfYear = false yearNow = year(time) if (month == 12 and dayofmonth == 31) isLastTradingDayOfYear := isTradingDay(time) else if (month == 12 and dayofmonth == 30) isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000) else if (month == 12 and dayofmonth == 29) isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000) and not isTradingDay(time + 86400000 * 2) // Plot moving average plot(ma, color=color.blue, linewidth=2) // Buy when closing price crosses above 60-day MA and up trend if (withinDateRange and ta.crossover(close, ma) and slope > 0) strategy.entry("Buy", strategy.long) // Sell all positions at the last trading day of the year if (isLastTradingDayOfYear) strategy.close_all(comment="Sell at year-end") // Plot buy and sell signals //plotshape(series=ta.crossover(close, ma), location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") //plotshape(series=isLastTradingDayOfYear, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")