
Una estrategia de canal de regresión lineal autoadaptativa es una estrategia de negociación cuantitativa basada en el análisis de regresión lineal. La estrategia forma un canal ascendente y descendente calculando la ecuación de regresión lineal del precio de un título en un período de tiempo determinado y utiliza el tren ascendente y descendente del canal como señal de negociación para realizar operaciones intervalladas o seguimiento de tendencias.
El núcleo de la estrategia de canal de regresión lineal de adaptación es calcular la ecuación de regresión lineal de cierre de precio de un determinado número de líneas de raíz K de K, formando una línea media que representa los dígitos medios de precio, una línea superior que representa el límite de precio y una línea inferior que representa el límite de precio. El proceso de cálculo es el siguiente:
Recoge los parámetros de entrada de la raíz K de la línea K de las variables independientes x y las variables dependientes y. donde x es un número entero de 1 a la longitud y y es el valor de cierre de la línea K correspondiente.
Cálculo del coeficiente de regresión:
Calcula el valor de la regresión lineal correspondiente a cada línea K y’, diferencia estándar STDDEV
La línea media es la ecuación de regresión y’ = mx + b, y los carriles ascendentes y descendentes flotan en la línea media en un intervalo de un múltiplo estándar de diferencia.
Con la llegada de la nueva línea K, el cálculo anterior se actualiza, formando un canal de adaptación ascendente y descendente. De acuerdo con el cruce de la vía ascendente y descendente, se hace más deuda, se detiene cerca de la línea media.
La estrategia de canal de regresión lineal adaptativa tiene las siguientes ventajas sobre la estrategia de línea media tradicional:
Modelos de análisis de regresión más científicos y razonables, con mayor relevancia estadística que el promedio
Más flexibilidad, el alcance de los canales se ajusta automáticamente a los cambios en los precios
La detección es más eficaz, y en algunas variedades es claramente superior a la estrategia de línea media.
El resultado de la prueba en vivo fue satisfactorio.
El principal riesgo de esta estrategia es:
Las fluctuaciones excesivas de los precios causan grandes pérdidas. La solución es establecer parámetros de pérdidas y optimización.
El desvío de la vía hace que el seguimiento sea ineficaz. La solución es ajustar los parámetros en combinación con otros indicadores técnicos.
El resultado de la detección parece ser bueno, pero el resultado en el disco duro no es tan bueno. La solución es ajustar los parámetros y verificarlos.
La estrategia puede seguir optimizándose en las siguientes dimensiones:
Prueba más combinaciones de parámetros para encontrar el mejor
Combinación con otros indicadores técnicos para evitar que la señal se desvíe cuando el movimiento es intenso
Aumentar las estrategias de control de pérdidas para proteger los fondos
Aumentar el módulo de gestión de posiciones y ajustar el tamaño de las posiciones según las condiciones del mercado
La estrategia de la vía de regresión lineal auto-adaptativa es una estrategia cuantitativa de buen resultado en general. Su base teórica es sólida, su eficacia práctica es buena, merece ser estudiada y optimizada, y puede ser una parte efectiva del sistema de comercio cuantitativo. Pero también es necesario reconocer sus limitaciones, prevenir los riesgos y practicar con cautela.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Stealthy 7 Linear Regression Channel Strategy", overlay=true)
source = open
length = input(100, minval=1)
mult1 = input(1, minval=0.001, maxval=50)
mult2 = input(1, minval=0.001, maxval=50)
DayTrader = input(title="Range Mode", type=bool, defval=false)
//Making the first least squares line
sum_x = length * (length + 1) / 2
sum_y = 0
sum_xy = 0
xyproductsum = 0
sum_xx = 0
for i = 1 to length
sum_y := sum_y + close[i]
sum_xy := i * close[i] + sum_xy
sum_xx := i * i + sum_xx
m = (length*sum_xy - (sum_x * sum_y)) / (length * sum_xx - (sum_x * sum_x))
b = sum_y / length - (m * sum_x / length)
//Finding the first standard deviation from the line
difference = 0
for i = 1 to length
y = i * m + b
difference := pow(abs(close[i] - y),2) + difference
STDDEV = sqrt(difference / length)
//Creating trading zones
dev = mult1 * STDDEV
dev2 = mult2 * STDDEV
upper = b + dev
lower = b - dev2
middle = b
if DayTrader == false
if crossover(source, upper)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, lower)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
if crossover(source, middle) and strategy.position_size < 0
strategy.close_all()
if crossunder(source,middle) and strategy.position_size > 0
strategy.close_all()
if DayTrader == true
if crossover(source, lower)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, upper)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
plot(upper, title="UpperBand", color=purple, linewidth=1, style=line)
plot(lower, title="LowerBand", color=purple, linewidth=1, style=line)
plot(middle, title="MiddleBand", color=black, linewidth=1, style=line)