Estrategia de ruptura oscilante


Fecha de creación: 2023-10-20 16:37:28 Última modificación: 2023-10-20 16:37:28
Copiar: 0 Número de Visitas: 943
1
Seguir
1617
Seguidores

Estrategia de ruptura oscilante

Descripción general

La estrategia utiliza el indicador ZigZag para trazar líneas de soporte y resistencia, tomando las operaciones de venta o ventaja correspondientes cuando el precio rompe las líneas de soporte o resistencia.

Principio de estrategia

La estrategia primero utiliza el indicador ZigZag para trazar una línea Z-shaped bajo determinados parámetros. Luego traza una línea de soporte verde cuando el indicador ZigZag aparece en la parte inferior, y una línea de resistencia roja cuando aparece en la parte superior.

En concreto, la lógica central de la estrategia es la siguiente:

  1. El uso de ema para el precio de cierre de la media móvil de tres veces el índice, obteniendo una curva suave.

  2. Para determinar si la curva de suavización sube, si sube y la línea K anterior no sube, tome el valor mínimo de esta línea K. Si baja y la línea K anterior sube, tome el valor máximo de esta línea K. De lo contrario, tome NaN.

  3. Repite el proceso y obtendrá una línea zigzag.

  4. Cuando el zigzag sube, se marca como el punto superior actual; cuando baja, se marca como el punto inferior actual.

  5. Cuando el punto sube, se traza la línea de soporte en verde uplevel; cuando el punto baja, se traza la línea de resistencia en rojo dnlevel。

  6. Cuando el precio está por encima de la línea verde, haga más, y cuando está por debajo de la línea roja, haga menos.

Análisis de las ventajas

Esta estrategia tiene las siguientes ventajas:

  1. Utiliza el indicador ZigZag para identificar los puntos de resistencia de soporte clave, que a menudo son importantes.

  2. ZigZag borra parte del ruido del mercado para que las señales de comercio sean más claras.

  3. La entrada se hace de manera innovadora para capturar el cambio de tendencia a tiempo.

  4. La forma de dibujar las líneas de resistencia es sencilla y eficaz.

  5. La lógica de la estrategia es clara y fácil de entender, y hay mucho espacio para optimizar los parámetros.

  6. Flexible en su elección de variedad de transacciones y ciclo de tiempo, adaptable.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. La configuración incorrecta de los parámetros del indicador ZigZag puede causar oportunidades de negociación perdidas.

  2. Una vez que se rompa el nivel de resistencia de soporte, se puede volver a probar. Se debe establecer un stop loss para controlar el riesgo.

  3. Las señales de ruptura pueden ser engañosas y deben verificarse en combinación con las tendencias y las formas.

  4. Los mercados pueden estar en un periodo de fluctuaciones horizontales prolongadas, en el que las estrategias producen demasiadas transacciones no efectivas.

  5. Se debe tener en cuenta el impacto de los costos de las transacciones y evitar el exceso de frecuencia.

Las medidas de respuesta son:

  1. Optimice los parámetros ZigZag para encontrar la combinación óptima de parámetros.

  2. Establezca el stop loss a tiempo después de la ruptura para controlar la pérdida individual.

  3. La combinación de indicadores de tendencia y otras señales de filtración mejora la precisión.

  4. Se añaden condiciones para identificar la liquidación del mercado, y no se comercian durante este período.

  5. Disminuir el margen de ruptura para reducir las transacciones no válidas.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de los parámetros ZigZag para encontrar la combinación óptima de parámetros. Se puede encontrar el mejor parámetro recorriendo la retroalimentación.

  2. Considere la posibilidad de volver a probar el punto de resistencia de soporte después de la entrada de la brecha, configure la lógica de salida de la prueba de nuevo.

  3. La combinación de indicadores de tendencia como el MA y otros filtra las señales de comercio de baja probabilidad.

  4. Aumentar los indicadores de potencia para confirmar la señal de ruptura y evitar la aparición de señales erróneas.

  5. Configurar el método dual mencionado por Lachenbruch para filtrar las señales erróneas y obtener ganancias.

  6. Considere la posibilidad de utilizar algoritmos como el aprendizaje automático para optimizar dinámicamente los parámetros.

  7. Introducir estrategias de stop loss y establecer puntos de stop loss para controlar el riesgo.

Resumir

La estrategia en general es una estrategia de ruptura de temblor simple y práctica. Utiliza el indicador ZigZag para trazar líneas de soporte y resistencia y actúa cuando el precio rompe estas líneas. La estrategia tiene una gran adaptabilidad, pero también existe un cierto riesgo.

Código Fuente de la Estrategia
/*backtest
start: 2022-10-13 00:00:00
end: 2023-10-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
// strategy(title = "Noro's ZZ-2 Strategy", shorttitle = "Noro's ZZ-2 Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(4, title = "ZigZag length")
Extreme = input(4, title = "ZigZag extreme")
src = input(close, title = "Source")
showzz = input(false, defval = false, title = "Show ZigZag")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//ZigZag
f_zz(_length, _detection)=>
    _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33))
    _isRising = _hls >= _hls[1]
    _zigzag = _isRising and not _isRising[1] ? lowest(_detection) :  not _isRising and _isRising[1] ? highest(_detection) : na
zigzag = f_zz(length, Extreme)
zzcol = showzz ? black : na
plot(zigzag, color = zzcol, linewidth = 2)

//Levels
dot = 0.0
dot := zigzag > 0 ? zigzag : dot[1]
uplevel = 0.0
uplevel := dot > dot[1] ? zigzag : uplevel[1]
dnlevel = 0.0
dnlevel := dot < dot[1] ? zigzag : dnlevel[1]
upcol = na
upcol := dot > dot[1] ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := dot < dot[1] ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if dot > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)