
La estrategia combina una media móvil simple (SMA) y una línea de tendencia de retorno lineal rodante, estableciendo una condición de compra cuando el precio de cierre es superior al SMA y la línea de tendencia, y una condición de salida cuando el precio de cierre es inferior al SMA y la línea de tendencia. La estrategia utiliza principalmente la señal de negociación en línea recta del SMA y el apoyo de la línea de tendencia rodante.
La estrategia se basa principalmente en los siguientes componentes:
SMA: promedio móvil simple, calcula el promedio de los precios de cierre en un período determinado como línea de señal.
Línea de tendencia de rotación: la línea recta de mejor ajuste en una ventana basada en el cálculo de la regresión lineal en un período determinado como señal de tendencia. El método de cálculo es el mínimo de la ecuación.
Condiciones de entrada: hacer una entrada adicional cuando el precio de cierre esté por encima de la media SMA y la línea de tendencia de rodaje.
Condiciones de salida: salida en posición cerrada cuando el precio de cierre está por debajo de la media SMA y la línea de tendencia de rodaje.
De esta manera, la estrategia se basa principalmente en la entrada de la señal de breakout de la operación de la línea recta, así como en la salida de la breakout de la vía recta. Utilizando la característica de la media de regreso de la media móvil y el soporte de la media de la vía de regreso lineal, se realiza una operación de breakout de seguimiento de la tendencia.
La estrategia integra un doble filtrado de la línea de tendencia y la línea de la línea de tendencia, lo que reduce efectivamente las operaciones de falsa ruptura. Al mismo tiempo, la línea de tendencia de rodaje proporciona un soporte de canal más preciso y hace que las decisiones de negociación sean más confiables. Las principales ventajas son las siguientes:
La estrategia también tiene algunos riesgos, que se centran en:
Para optimizar estos riesgos, se puede comenzar por los siguientes puntos:
La estrategia puede ser optimizada en las siguientes dimensiones:
Se añade la función de ajuste dinámico de los parámetros de los ciclos SMA y de los puntos de deslizamiento. Los parámetros se optimizan automáticamente en diferentes entornos de mercado.
Aumentar el mecanismo de suspensión de pérdidas. Se detiene cuando el precio rompe la línea de tendencia en cierta proporción.
En combinación con otros indicadores de filtración de señales, como indicadores de capacidad cuantitativa, indicadores de fuerza y debilidad, etc., mejora la precisión de la toma de decisiones.
Desarrollar versiones invertidas. Hacer más cuando el precio se acerca al fondo y rompe el canal descendente.
La estrategia integra señales de comercio de medias móviles y soporte de canales de línea de tendencia en movimiento para realizar operaciones de seguimiento de tendencias. El mecanismo de doble filtración reduce la probabilidad de falsas rupturas y mejora la calidad de las decisiones. La configuración de parámetros sencilla, la claridad de la lógica, la facilidad de implementación y el ajuste optimizado.
/*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)