Estrategia del ciclo cibernético de Ehlers para suavizar la señal

El autor:¿ Qué pasa?, Fecha: 2024-02-19 10:42:34
Las etiquetas:

img

Resumen general

Esta estrategia calcula la señal de precio suavizada basada en la teoría del ciclo cibernético propuesta por Ehlers para diseñar una estrategia de negociación con señales de negociación suavizadas.

Principio de la estrategia

  1. Limpiar la señal de precio original src con el suavizado de segundo orden para obtener la señal suavizada suave.

  2. Calcular el ciclo del indicador cíclico basándose en la señal suavizada. Ciclo:= (1 -.5alfa) (1 - .5 alfa)(Liso - 2la cantidad de agua que debe ser consumida en el lugar de ensamblajeEl valor de las emisiones de CO2ciclo[1] - (1 - alfa)(1 - alfa) * ciclo [2]

    donde α es el parámetro de suavizado.

  3. Limpiar exponencialmente el indicador cíclico con una alineación de primer orden para obtener la señal final de la señal de negociación. señal:= alfa2ciclo + (1 - alfa2)nz ((signales[1])

    donde α2 es el parámetro de suavizado de primer orden.

  4. Largo cuando la señal cruza sobre la señal [1]; Corto cuando la señal cruza bajo la señal [1].

Análisis de ventajas

  1. La suavización de segundo orden de la señal de precio puede filtrar eficazmente el ruido de alta frecuencia y hacer que las señales de negociación sean más confiables.

  2. La aplicación de la teoría del ciclo cibernético de Ehlers puede determinar con mayor precisión el punto de inflexión de las tendencias del mercado.

  3. La suavización exponencial de primer orden filtra parte del ruido en el indicador cíclico para producir señales comerciales más confiables.

  4. Todo el proceso de la estrategia es razonable y científico, con un gran espacio de optimización de parámetros y un excelente rendimiento real.

Análisis de riesgos

  1. Al igual que otras estrategias de indicadores técnicos, esta estrategia también es relativamente sensible al riesgo sistémico de mercado y puede incurrir en grandes pérdidas en caso de eventos de cisne negro.

  2. Debido al complejo proceso de cálculo, la configuración incorrecta de los parámetros puede causar retrasos en el cálculo, lo que afecta al rendimiento real.

  3. El procesamiento suavizado también conduce a señales comerciales rezagadas, que pueden no captar los puntos de inflexión del mercado a tiempo, perdiendo así oportunidades.

Direcciones de optimización

  1. Se pueden probar diferentes tipos de algoritmos de suavizado, como el suavizado exponencial de primer orden, el suavizado de la media móvil, etc., para encontrar el esquema de suavizado óptimo.

  2. Se puede introducir un mecanismo de ajuste de parámetros adaptativo para ajustar dinámicamente los parámetros en función de las condiciones del mercado para mejorar la solidez de la estrategia.

  3. Las estrategias de stop loss y take profit pueden diseñarse para reducir el riesgo de pérdida única y bloquear las ganancias al mismo tiempo.

  4. Se puede combinar con otros modelos de aprendizaje automático para lograr carteras de modelos y utilizar otros modelos para filtrar señales comerciales.

Resumen de las actividades

Esta estrategia diseña una estrategia de negociación de señales para suavizar el ciclo cibernético de Ehlers a través de la suavización de la señal de precio y el cálculo del indicador del ciclo cibernético de Ehlers. Puede filtrar eficazmente el ruido y generar señales de negociación más confiables. Al mismo tiempo, el espacio de parámetros es grande y el rendimiento real es bueno. Al introducir mecanismos adaptativos, estrategias de stop loss y otras optimización, la estabilidad y eficacia de la estrategia se pueden mejorar aún más.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers 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

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]

alpha2 = 1 / (lag + 1)
signal = na
signal := alpha2 * cycle + (1 - alpha2) * nz(signal[1])
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.