Esta estrategia combina el promedio móvil simple (SMA) y la línea de tendencia de regresión lineal móvil. Establece la condición de entrada larga cuando el precio de cierre está por encima tanto del SMA como de la línea de tendencia, y la condición de salida cuando el precio de cierre está por debajo de ellos. La estrategia utiliza principalmente el SMA como señal comercial y la línea de tendencia móvil para el soporte del canal.
Los componentes clave de esta estrategia incluyen:
SMA: promedio móvil simple, que calcula el precio medio de cierre durante un período (smaPeriod) como línea de señal.
Línea de tendencia rodante: ajuste de la mejor línea de regresión lineal sobre una ventana (ventana) como señal de tendencia.
Condición de entrada: ir largo cuando el precio de cierre > SMA y línea de tendencia.
Condición de salida: cierre de la posición cuando el precio de cierre sea < SMA y línea de tendencia.
Así que la estrategia se basa principalmente en la ruptura de la señal SMA para la entrada y la ruptura del canal para la salida. Utiliza el atributo de reversión media de MA y el soporte del canal por línea de regresión lineal para implementar la tendencia después de las operaciones de ruptura.
Esta estrategia integra un doble filtro de MA y línea de tendencia, lo que puede reducir eficazmente las operaciones falsas de ruptura. Mientras tanto, la línea de tendencia rodante proporciona un soporte de canal más preciso para decisiones confiables.
También existen algunos riesgos de esta estrategia:
Algunas direcciones de optimización para estos riesgos:
Esta estrategia puede optimizarse en los siguientes aspectos:
Se añadirán funciones de ajuste dinámico para el período SMA, parámetros de deslizamiento basados en los regímenes de mercado.
Desarrollar un mecanismo de stop loss elástico. Establecer un stop loss cuando el precio rompe la línea de tendencia en una relación.
Añadir un filtro de otros indicadores, por ejemplo, volumen, RSI para mejorar la precisión de la decisión.
Desarrolla una versión inversa. Ir largo cuando el precio se acerca al fondo y rompe el canal a la baja.
Esta estrategia integra las señales de negociación de la media móvil y el soporte de canal de la línea de tendencia rodante para implementar operaciones de seguimiento de tendencia. El filtro dual reduce la probabilidad de ruptura falsa y mejora la calidad de la decisión. Tiene ajustes de parámetros simples y lógica clara, que es fácil de implementar y optimizar. En resumen, esta estrategia forma un sistema de negociación de ruptura de tendencia confiable, simple e intuitivo.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SMA Strategy with Rolling Trendline", overlay=true) // Input parameters smaPeriod = input(14, title="SMA Period") window = input(20, title="Trendline Window") startDate = input(timestamp("2023-01-01"), title="Start Date") endDate = input(timestamp("2023-12-31"), title="End Date") // Calculating SMA sma = sma(close, smaPeriod) // Function to calculate linear regression trendline for a window linreg_trendline(window) => sumX = 0.0 sumY = 0.0 sumXY = 0.0 sumX2 = 0.0 for i = 0 to window - 1 sumX := sumX + i sumY := sumY + close[i] sumXY := sumXY + i * close[i] sumX2 := sumX2 + i * i slope = (window * sumXY - sumX * sumY) / (window * sumX2 - sumX * sumX) intercept = (sumY - slope * sumX) / window slope * (window - 1) + intercept // Calculating the trendline trendline = linreg_trendline(window) // Entry and Exit Conditions longCondition = close > sma and close < trendline exitLongCondition = close < sma and close > trendline // Strategy logic if (true) if (longCondition) strategy.entry("Long", strategy.long) if (exitLongCondition) strategy.close("Long") // Plotting plot(sma, title="Simple Moving Average", color=color.blue) plot(trendline, title="Rolling Trendline", color=color.red) plotshape(series=longCondition, title="Enter Trade", location=location.belowbar, color=color.green, style=shape.triangleup) plotshape(series=exitLongCondition, title="Exit Trade", location=location.abovebar, color=color.red, style=shape.triangledown)