Estrategia de captura de puntos bajos basada en la regresión lineal de reparación de Vix


Fecha de creación: 2024-01-30 16:56:39 Última modificación: 2024-01-30 16:56:39
Copiar: 1 Número de Visitas: 735
1
Seguir
1617
Seguidores

Estrategia de captura de puntos bajos basada en la regresión lineal de reparación de Vix

Descripción general

La idea central de la estrategia es la combinación de la indicación de reparación de Wix y su regresión lineal para capturar con precisión los puntos bajos del mercado. La estrategia se llama “La estrategia de la regresión lineal de reparación de los puntos bajos”.

Principio de estrategia

  1. Calculando el índice de reparación de Wix, se puede determinar mejor el punto bajo del mercado
  2. Aplica la regresión lineal al indicador de reparación de Wix. Cuando el color del histograma de regresión lineal se vuelve verde, lo que indica que la regresión lineal de reparación de Wix comienza a subir, se puede emitir una señal de compra
  3. Combinado con la columna verde del indicador de reparación de Wix, se puede confirmar aún más el momento de la compra
  4. Cuando el color del histograma de regresión lineal se vuelve rojo, indica que la regresión lineal de reparación de Wix comienza a disminuir y emite una señal de venta

El proceso anterior utiliza la regresión lineal para mejorar la precisión y la puntualidad de las señales de los indicadores de reparación de Wix, filtrando algunas señales falsas y capturando con precisión los puntos bajos.

Análisis de las ventajas

  1. La estrategia utiliza la regresión lineal para filtrar las señales falsas de parte del indicador de reparación de Wix para que las señales de compra/venta sean más precisas y confiables
  2. La regresión lineal mejora la sensibilidad y la puntualidad de las señales para capturar rápidamente los puntos de inflexión del mercado.
  3. La lógica de la estrategia es simple, clara, fácil de entender y adecuada para la realización de transacciones cuantitativas
  4. Más parámetros de configuración, con flexibilidad para adaptarse a los cambios en el mercado

Riesgos y soluciones

  1. La estrategia se utiliza principalmente para determinar los puntos bajos del mercado en general y no para acciones individuales.
  2. La regresión lineal no puede filtrar completamente las señales falsas, y en combinación con el indicador de reparación de Wix puede reducir el riesgo
  3. Se necesitan ajustes adecuados de los parámetros para adaptarse a los cambios en la situación y evitar fallas
  4. Se recomienda su uso en combinación con otros indicadores para una mayor confirmación de la señal.

Dirección de optimización

  1. Se puede considerar la combinación con un indicador de fluctuación o un indicador de energía cuantitativa para filtrar aún más la señal
  2. Se pueden estudiar métodos de optimización de adaptación de parámetros para que las estrategias sean más inteligentes
  3. Se pueden explorar métodos de aprendizaje automático para usar modelos más complejos para predecir la tendencia de reparación de Wix
  4. Se podría intentar aplicar un método similar a las acciones individuales para estudiar cómo filtrar las señales falsas.

Resumir

La estrategia utiliza Wix para corregir el indicador de los puntos bajos, mientras que la introducción de la regresión lineal mejora la calidad de la señal, lo que permite una captura efectiva de los puntos bajos del mercado. La estrategia es simple y práctica, los resultados son ideales, el principal riesgo es que las falsas señales no se filtran completamente.

Código Fuente de la Estrategia
/*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"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HeWhoMustNotBeNamed

//@version=4
strategy("VixFixLinReg-Strategy", shorttitle="VixFixLinReg - Strategy",
                     overlay=false, initial_capital = 100000, 
                     default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, 
                     commission_value = 0.01)
pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bolinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
pl = input(1.01, title="Lowest Percentile - 1.10=90%, 1.05=95%, 1.01=99%")
hp = input(false, title="Show High Range - Based on Percentile and LookBack Period?")
sd = input(false, title="Show Standard Deviation Line?")
i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true
considerVIXFixClose = input(false)
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

atrLen = input(22)
atrMult = input(5)
initialStopBar = input(5)
waitForCloseBeforeStop = input(true)
f_getStop(atrLen, atrMult)=>
    stop = strategy.position_size > 0 ? close - (atrMult * atr(atrLen)) : lowest(initialStopBar)
    stop := strategy.position_size > 0 ? max(stop,nz(stop[1], stop)) : lowest(initialStopBar)
    stop

wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100

sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev

rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl


col = wvf >= upperBand or wvf >= rangeHigh ? color.lime : color.gray

val = linreg(wvf, pd, 0)
absVal = abs(val)

linRegColor = val>val[1]? (val > 0 ? color.green : color.orange): (val > 0 ? color.lime : color.red)
plot(hp and rangeHigh ? rangeHigh : na, title="Range High Percentile", style=plot.style_line, linewidth=4, color=color.orange)
plot(hp and rangeLow ? rangeLow : na, title="Range High Percentile", style=plot.style_line, linewidth=4, color=color.orange)
plot(wvf, title="Williams Vix Fix", style=plot.style_histogram, linewidth = 4, color=col)
plot(sd and upperBand ? upperBand : na, title="Upper Band", style=plot.style_line, linewidth = 3, color=color.aqua)

plot(-absVal, title="Linear Regression", style=plot.style_histogram, linewidth=4, color=linRegColor)

vixFixState = (col == color.lime) ? 1: 0
vixFixState := strategy.position_size == 0? max(vixFixState, nz(vixFixState[1],0)) : vixFixState

longCondition = (vixFixState == 1 and linRegColor == color.lime) and inDateRange
exitLongCondition = (linRegColor == color.orange or linRegColor == color.red) and considerVIXFixClose

stop = f_getStop(atrLen, atrMult)
label_x = time+(60*60*24*1000*20) 
myLabel = label.new(x=label_x, y=0, text="Stop : "+tostring(stop), xloc=xloc.bar_time, style=label.style_none, textcolor=color.black, size=size.normal)
label.delete(myLabel[1])
strategy.entry("Long", strategy.long, when=longCondition, oca_name="oca_buy")
strategy.close("Long", when=exitLongCondition or (close < stop and waitForCloseBeforeStop and linRegColor == color.green))
strategy.exit("ExitLong", "Long", stop = stop, when=not waitForCloseBeforeStop and linRegColor == color.green)