Estrategia del ciclo cibernético estocástico de Ehlers

El autor:¿ Qué pasa?, Fecha: 2024-01-17 16:03:30
Las etiquetas:

img

Resumen general

La Estrategia del Ciclo Cibernético Estocástico de Ehlers es una estrategia de negociación cuantitativa que genera señales comerciales utilizando el indicador del ciclo estocástico de Ehlers.

Estrategia lógica

Esta estrategia primero construye un indicador de ciclo suavizado, luego construye un valor de indicador estocástico basado en ese indicador.

Específicamente, el indicador de ciclo suavizado se calcula como:

smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6

Este indicador combina el precio actual y los precios de los 3 períodos anteriores para construir una señal de ciclo suavizada.

A partir de este indicador suavizado, se puede calcular el ciclo estocástico:

cycle := (1 - .5 * alpha) * (1 - .5 * alpha) *  
           (smooth - 2 * smooth[1] + smooth[2]) +  
           2 * (1 - alpha) * cycle[1] -  
           (1 - alpha) * (1 - alpha) * cycle[2]

Esta fórmula de cálculo contiene la diferencia de segundo orden de la señal periódica suavizada y los valores de los dos ciclos anteriores. α es un factor de suavizado que ajusta el peso de los valores de ciclo nuevos y viejos.

Por último, se calcula un valor de valor aleatorio de 0-1001 basado en este indicador de ciclo. Y la señal de valor de la señal se construye en base al promedio móvil de valor de 10 días1. Las señales comerciales se emiten cuando la línea de promedio móvil de la señal cruza hacia arriba o hacia abajo.

Ventajas de la estrategia

Esta estrategia combina indicadores estocásticos e indicadores de ciclo para integrar las ventajas de ambos.

Las principales ventajas son:

  1. Los indicadores de ciclo pueden identificar patrones cíclicos, los indicadores estocásticos proporcionan oportunidades comerciales
  2. El diseño de dos indicadores puede filtrar eficazmente las señales falsas
  3. Los parámetros personalizables se adaptan a diferentes entornos de mercado

Riesgos de la estrategia

Los principales riesgos de esta estrategia son:

  1. La configuración incorrecta de los parámetros puede dar lugar a operaciones frecuentes, aumento de los costes de negociación y costes de deslizamiento
  2. No puede manejar eficazmente los mercados con violentas fluctuaciones de precios que pueden provocar grandes pérdidas.
  3. Los indicadores de ciclo dependen en gran medida del ajuste de la curva, el ajuste incorrecto puede generar señales incorrectas

Los riesgos pueden controlarse optimizando la configuración de los parámetros, estableciendo puntos de stop loss, combinando otros indicadores de filtrado, etc.

Direcciones de optimización

Esta estrategia también puede optimizarse en los siguientes aspectos:

  1. Combinar con otros indicadores técnicos para el filtrado de señales, tales como bandas de Bollinger, RSI, etc., para reducir las señales falsas
  2. Añadir mecanismos de salida adaptativos, ajustar dinámicamente los puntos de stop loss de acuerdo con la volatilidad del mercado
  3. Utilizar métodos de aprendizaje automático para optimizar automáticamente los parámetros para adaptarse dinámicamente al mercado
  4. Optimizar la utilización del capital mediante apalancamiento, agregación y otros medios

Conclusión

La Estrategia de Ciclo Cibernético Estocástico de Ehlers integra las ventajas de los indicadores estocásticos y del ciclo a través del diseño de señal dual para controlar eficazmente los riesgos y puede lograr buenos rendimientos en mercados con una fuerte ciclicidad.


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

//@version=3
strategy("Ehlers Stochastic Cyber Cycle Strategy",overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1)
src = input(hl2, title = "Source") 
alpha = input(.07, title = "Alpha")
lag = input(9, title = "Lag")
smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6
len = input(8, title = "Stochastic len")
cycle = na
if na(cycle[7])
    cycle := (src - 2 * src[1] + src[2]) / 4
else
    cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * (smooth - 2 * smooth[1] + smooth[2]) + 2 * (1 - alpha) * cycle[1] - (1 - alpha) * (1 - alpha) * cycle[2]

value1 = stoch(cycle, cycle, cycle, len) / 100
value2 = 2 * ((4 * value1 + 3 * value1[1] + 2 * value1[2] + value1[3]) / 10 - 0.5)

signal = value2
oppositeTrade = input(true)
barsSinceEntry = 0
barsSinceEntry := nz(barsSinceEntry[1]) + 1
if strategy.position_size == 0
    barsSinceEntry := 0
if (crossover(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossunder(signal, signal[1]))
    strategy.entry("Long", strategy.long)
    barsSinceEntry := 0
if (crossunder(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossover(signal, signal[1]))
    strategy.entry("Short", strategy.short)
    barsSinceEntry := 0
if strategy.openprofit < 0 and barsSinceEntry > 8
    strategy.close_all()
    barsSinceEntry := 0
    
    
plot(0, title="ZeroLine", color=gray) 
plotSrc = signal
cyclePlot = plot(plotSrc, title = "CyberCycle", color = blue)
triggerPlot = plot(plotSrc[1], title = "Trigger", color = green)
fill(cyclePlot, triggerPlot, color = plotSrc < plotSrc[1] ? red : lime, transp = 50)

Más.