Estrategia de optimización de seguimiento de tendencia de las luces cuánticas

El autor:¿ Qué pasa?, Fecha: 2024-01-04 15:44:23
Las etiquetas:

img

Resumen general

Quant Lights es una estrategia combinada que utiliza el indicador estocástico y el indicador OTT. La estrategia utiliza el indicador estocástico para generar señales de compra y venta, y las combina con el indicador OTT para filtrar las señales, tratando de capturar la gran tendencia y reducir el impacto de las fluctuaciones del mercado que causan señales falsas.

Principio de la estrategia

La idea central de la estrategia es superponer el indicador OTT sobre el indicador estocástico para filtrar la señal. El indicador estocástico compara el precio con los precios más altos y más bajos en el período de tiempo especificado para juzgar si el precio está en un área extrema.

El código establece el nivel más alto del estocástico en 1080 y el nivel más bajo en 1020. Cuando el valor estocástico está entre ellos, es un área limitada por el rango. Cuando el estocástico genera señales de compra / venta, el código determinará la validez de la señal en función del indicador OTT. Si el precio cruza por encima de la línea promedio OTT, se emite una señal de compra. Si el precio cruza por debajo de la línea promedio OTT, se emite una señal de venta.

Esta combinación aprovecha el Estocástico para determinar las condiciones de sobrecompra y sobreventa y generar señales de entrada, mientras que el OTT es responsable de rastrear las tendencias y utilizar paradas para filtrar las señales falsas causadas por fluctuaciones excesivas del mercado, optimizando así la precisión y la volatilidad de la señal.

Análisis de ventajas

La estrategia combina indicadores estocásticos y OTT para optimizar los siguientes aspectos:

  1. Mejora de la precisión de las señales. Los jueces estocásticos sobrecompran y sobrevenden las condiciones, OTT filtra las señales falsas causadas por las fluctuaciones de los mercados.
  2. Reduce la volatilidad de la estrategia, limita la pérdida actual a través de paradas dinámicas, filtrando muchas fallas.
  3. Captura de manera efectiva las principales tendencias de las acciones.
  4. Reduce la interferencia excesiva de la señal, mejora la calidad de la señal y reduce las señales inútiles.
  5. Cuantifica la configuración de parada dinámica, garantiza cualitativamente la pérdida actual y reduce aún más la volatilidad de la estrategia.
  6. El sistema integra indicadores de tendencia y sobrecompra/sobreventa.

En resumen, al utilizar OTT para filtrar las señales estocásticas, la estrategia mejora efectivamente la calidad de las señales y los rendimientos de la inversión, al tiempo que reduce el número de transacciones y la volatilidad de la estrategia, logrando el efecto de bajo riesgo, altos rendimientos y un seguimiento cercano de las tendencias.

Análisis de riesgos

  • El ámbito de aplicación de esta estrategia es relativamente estrecho, es especialmente adecuado para las acciones con tendencias obvias y tiene un menor impacto en las acciones con fluctuaciones de precios muy grandes o en las acciones en consolidación lateral.
  • La estrategia no tiene en cuenta los fundamentos de las acciones y el entorno macro, por lo que hay un punto ciego.
  • Configuración de parámetros sensibles. Múltiples parámetros de Estocástico y OTT necesitan ajuste profesional, de lo contrario afectará la rentabilidad de la estrategia.
  • Las paradas son demasiado sueltas, con algunas pérdidas potenciales que necesitan una mayor optimización.
  • En el caso de los mercados con fallas y fluctuaciones, habrá ciertas pérdidas e interferencias en la señal, por lo que es necesario modificar las condiciones de juicio y de parada.

Con respecto a los riesgos anteriores, se pueden adoptar las siguientes medidas para mejorar:

  1. Utilice diferentes combinaciones de parámetros para diferentes tipos de poblaciones.
  2. Mejora las señales incorporando fundamentos y noticias.
  3. Optimizar los parámetros mediante pruebas para encontrar los ajustes óptimos.
  4. Introducir paradas móviles para reducir aún más los riesgos.
  5. Modificar las condiciones de juicio y utilizar mecanismos de confirmación de señales más rigurosos.

Direcciones de optimización

La estrategia se puede optimizar aún más en los siguientes aspectos:

  1. Ajustar la configuración de parámetros de acuerdo con los diferentes mercados y tipos de acciones. Los valores por defecto actuales son universales y pueden ser probados por separado para diferentes acciones para encontrar las combinaciones óptimas de parámetros.

  2. Introducir mecanismos de toma de ganancias y movimiento de paradas. Actualmente, el uso de paradas fijas dinámicas no puede rastrear dinámicamente las pérdidas y ganancias. Se puede realizar una prueba de la introducción de paradas móviles y tomar ganancias para un mayor control de riesgos y ganancias.

  3. Optimizar la lógica de juicio de señales. La lógica de juicio actual es relativamente simple, marcando directamente las señales de compra y venta cuando los precios se rompen o bajan. Se pueden incorporar más indicadores y patrones de precios para garantizar la confiabilidad de la señal.

  4. Aumentar las condiciones de posición abierta y los mecanismos de filtrado. La estrategia actual procesa cada señal indiscriminadamente. Se pueden introducir indicadores de volumen, indicadores de volumen de negociación y otras condiciones de posición abierta, así como una cierta ventana de tiempo de señal para filtrar señales falsas.

  5. Prueba diferentes combinaciones de indicadores con OTT. Actualmente se utiliza la combinación estocástica y OTT. Se puede probar la efectividad de combinar otros indicadores como MACD y RSI con OTT.

  6. Integrar módulos de gestión de capital y dimensionamiento de posiciones. Actualmente no existen mecanismos de gestión de capital y control de posiciones, que dependen enteramente de paradas. Se pueden probar diferentes tipos de métodos de gestión de capital y dimensionamiento de posiciones para controlar aún más los riesgos individuales y generales.

Resumen de las actividades

Quant Lights es una estrategia cuantitativa que combina orgánicamente el indicador estocástico con el indicador OTT. Utiliza las fortalezas complementarias de los dos indicadores para mejorar la precisión de la señal y capturar de manera efectiva las tendencias principales al tiempo que reduce los riesgos.

Las ventajas de la estrategia incluyen una baja tasa de error, señales claras y una pequeña volatilidad.

Al mismo tiempo, todavía hay margen de mejora en esta estrategia. A través de la optimización de parámetros, la mejora del mecanismo de parada, la mejora de señales y mecanismos de filtrado, etc., la estrategia puede desarrollarse hacia una dirección más estable, automatizada e inteligente. Este es también el objetivo de nuestro trabajo de seguimiento.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic
//created by: @Anil_Ozeksi
//developer: ANIL ÖZEKŞİ
//author: @kivancozbilgic


strategy(title="Stochastic Optimized Trend Tracker", shorttitle="SOTT", format=format.price, precision=2)
periodK = input(250, title="%K Length", minval=1)
smoothK = input(50, title="%K Smoothing", minval=1)
src1 = input(close, title="Source")
length=input(3, "OTT Period", minval=1)
percent=input(0.618, "OTT Percent", type=input.float, step=0.1, minval=0)
showsupport = input(title="Show Support Line?", type=input.bool, defval=false)
showsignalsc = input(title="Show Stochastic/OTT Crossing Signals?", type=input.bool, defval=false)
Var_Func1(src1,length)=>
    valpha1=2/(length+1)
    vud11=src1>src1[1] ? src1-src1[1] : 0
    vdd11=src1<src1[1] ? src1[1]-src1 : 0
    vUD1=sum(vud11,9)
    vDD1=sum(vdd11,9)
    vCMO1=nz((vUD1-vDD1)/(vUD1+vDD1))
    VAR1=0.0
    VAR1:=nz(valpha1*abs(vCMO1)*src1)+(1-valpha1*abs(vCMO1))*nz(VAR1[1])
VAR1=Var_Func1(src1,length)
k = Var_Func1(stoch(close, high, low, periodK), smoothK)
src=k+1000
Var_Func(src,length)=>
    valpha=2/(length+1)
    vud1=src>src[1] ? src-src[1] : 0
    vdd1=src<src[1] ? src[1]-src : 0
    vUD=sum(vud1,9)
    vDD=sum(vdd1,9)
    vCMO=nz((vUD-vDD)/(vUD+vDD))
    VAR=0.0
    VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1])
VAR=Var_Func(src,length)
h0 = hline(1080, "Upper Band", color=#606060)
h1 = hline(1020, "Lower Band", color=#606060)
fill(h0, h1, color=#9915FF, transp=80, title="Background")
plot(k+1000, title="%K", color=#0094FF)
MAvg=Var_Func(src, length)
fark=MAvg*percent*0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop =  MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT=MAvg>MT ? MT*(200+percent)/200 : MT*(200-percent)/200 
plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Support Line")
OTTC = #B800D9 
pALL=plot(nz(OTT[2]), color=OTTC, linewidth=2, title="OTT", transp=0)
alertcondition(cross(src, OTT[2]), title="Price Cross Alert", message="OTT - Price Crossing!")
alertcondition(crossover(src, OTT[2]), title="Price Crossover Alarm", message="PRICE OVER OTT - BUY SIGNAL!")
alertcondition(crossunder(src, OTT[2]), title="Price Crossunder Alarm", message="PRICE UNDER OTT - SELL SIGNAL!")
buySignalc = crossover(src, OTT[2])
plotshape(buySignalc and showsignalsc ? OTT*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
sellSignallc = crossunder(src, OTT[2])
plotshape(sellSignallc and showsignalsc ? OTT*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)

dummy0 = input(true, title = "=Backtest Inputs=")
FromDay    = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear   = input(defval = 2005, title = "From Year", minval = 2005)
ToDay      = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "To Year", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if buySignalc
    strategy.entry("Long", strategy.long,when=Timerange())
if sellSignallc
    strategy.entry("Short", strategy.short,when=Timerange())

  
  



Más.