
La estrategia es una estrategia de seguimiento de tendencias basado en brechas históricas y filtros de línea media de la línea lunar. Busca señales de compra mediante la vigilancia de si los precios han superado los máximos históricos anteriores, mientras que utiliza la línea lunar de 8 ciclos de media móvil simple ((8 SMA) como condición de filtro de venta para reducir el riesgo de falsas brechas. La idea de diseño de esta estrategia se ajusta a la característica de mercado de “continuidad de la tendencia”, especialmente adecuada para capturar situaciones de gran nivel en una fuerte tendencia ascendente.
La lógica central de la estrategia incluye dos partes clave:
Se trata de una estrategia de seguimiento de tendencias de diseño razonable y lógica. El uso de la combinación de brechas históricas y medias lunares garantiza un control efectivo de la tendencia y un control razonable del riesgo. Aunque existe cierto retraso y riesgo de falsas brechas, el rendimiento general de la estrategia se espera que mejore aún más con la dirección de optimización recomendada.
/*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)