Esta estrategia es un sistema de seguimiento de tendencias basado en el filtro de alta ruptura histórica y el filtro de promedio móvil mensual. Genera señales de compra mediante el monitoreo de las rupturas de precios por encima de los máximos históricos anteriores, mientras utiliza el promedio móvil simple de 8 periodos (8 SMA) en un marco de tiempo mensual como filtro de venta para reducir los riesgos de ruptura falsa.
La lógica central consiste en dos componentes clave:
Esta es una tendencia bien diseñada siguiendo una estrategia con lógica clara. A través de la combinación de breakouts históricos altos y promedios móviles mensuales, se logra tanto la captura de tendencias efectivas como un control de riesgos razonable. Si bien existen riesgos inherentes de retraso y falsos breakouts, las direcciones de optimización sugeridas ofrecen potencial para una mayor mejora del rendimiento. La estrategia es particularmente adecuada para mercados con tendencias claras y puede servir como una herramienta de referencia importante para la inversión a medio y largo plazo.
/*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("Buy Signal on Close Greater Than Previous All-Time High Strategy", overlay=true) // Initialize the previous all-time high var float prevAllTimeHigh = na // Update the all-time high, excluding the current bar's high (use previous bar's high) if (na(prevAllTimeHigh) or high[1] > prevAllTimeHigh) prevAllTimeHigh := high[1] // Monthly closing price and 8 SMA on monthly time frame monthlyClose = request.security(syminfo.tickerid, "M", close) monthlySMA = ta.sma(monthlyClose, 8) // Variables to track the last signal type var int lastSignal = 0 // 0 = None, 1 = Buy, 2 = Sell // Debugging output to check the all-time high and conditions plot(prevAllTimeHigh, color=color.blue, linewidth=1, title="Previous All-Time High") plot(monthlySMA, color=color.green, linewidth=1, title="8 SMA (Monthly)") // Buy signal: when the latest close is greater than the previous all-time high buySignal = close > prevAllTimeHigh and lastSignal != 1 // Sell signal: when the monthly close is below the 8 SMA sellSignal = monthlyClose < monthlySMA and lastSignal != 2 // Update the last signal type after triggering a signal if (buySignal) lastSignal := 1 if (sellSignal) lastSignal := 2 // Execute the strategy orders if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.close("Buy") // Optional: Plot buy and sell signals on the chart for visual reference plotshape(series=buySignal, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small) plotshape(series=sellSignal, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)