Estrategia de seguimiento del impulso de cruce de medias móviles y volatilidad del cisne negro

EMA SMA ATR
Fecha de creación: 2024-12-13 11:52:51 Última modificación: 2024-12-13 11:52:51
Copiar: 0 Número de Visitas: 139
1
Seguir
1166
Seguidores

Estrategia de seguimiento del impulso de cruce de medias móviles y volatilidad del cisne negro

Descripción general

La estrategia es un sistema de seguimiento de la dinámica de las operaciones basado en la amplitud de las fluctuaciones de los precios y el cruce de las líneas medias. La estrategia se activa principalmente mediante la vigilancia de las fluctuaciones anormales de la tasa de fluctuación de los precios de más del 1,91% (eventos de “black swan”), mientras que la combinación de las cruces de EMA144 y EMA169 confirma la dirección de la tendencia y el momento de la salida.

Principio de estrategia

La lógica central de la estrategia tiene dos partes principales:

  1. Monitoreo de la volatilidad: se mide la volatilidad de los precios calculando la diferencia absoluta entre el precio de cierre y el precio de apertura en relación con la proporción del precio de cierre, y se activa una señal de negociación cuando la proporción supera el 1,91%
  2. Confirmación de tendencia: se utiliza el cruce de EMA144 y EMA169 para confirmar la dirección de la tendencia, el cruce hacia arriba hace más, el cruce hacia abajo hace vacío. También se introducen los SMA60 y SMA20 como indicadores auxiliares.

La estrategia se realiza en exceso cuando se detecta una oscilación al alza mayor al 1.91% y se realiza en blanco cuando se detecta una oscilación a la baja. Cuando se produce un cruce inverso de la línea de paridad, la estrategia se liquida automáticamente para controlar el riesgo.

Ventajas estratégicas

  1. Respuesta rápida: La estrategia capta las fuertes fluctuaciones del mercado a tiempo, especialmente para operaciones de corto plazo.
  2. Control de riesgo: Control efectivo del riesgo de la posición mediante el cruce de la línea media como señal de posición cerrada.
  3. Alta flexibilidad: la estrategia permite ajustar el rango de tiempo de respuesta y los parámetros, que se pueden optimizar en función de las diferentes condiciones del mercado.
  4. Una buena gestión de posiciones: el control de posiciones se realiza con un porcentaje del valor neto de la cuenta y se admite un aumento de la pirámide de hasta 3 veces.

Riesgo estratégico

  1. Riesgo de ruptura falsa: En los mercados de alta volatilidad pueden aparecer señales falsas que conducen a operaciones innecesarias.
  2. Riesgo de deslizamiento: debido a que la estrategia opera en períodos cortos, es posible que se enfrente a una mayor pérdida de deslizamiento.
  3. Riesgo de reversión de la tendencia: es el riesgo de reversión rápida de la tendencia después de una fuerte fluctuación.
  4. Sensibilidad de parámetros: los efectos de la estrategia son sensibles a los ajustes de parámetros y pueden requerir ajustes frecuentes en diferentes condiciones de mercado.

Dirección de optimización de la estrategia

  1. Introducción de filtros de fluctuación: Se recomienda agregar indicadores ATR para filtrar el ruido del mercado y mejorar la calidad de la señal.
  2. Optimización del tiempo de ingreso: se puede considerar la posibilidad de agregar una confirmación de ingreso para mejorar la precisión del ingreso.
  3. Parámetros de ajuste dinámico: Se recomienda desarrollar un sistema de parámetros adaptativos que ajusten automáticamente los valores de activación de los umbrales según las condiciones del mercado.
  4. Mejora de los mecanismos de detención de pérdidas: Se sugiere la adición de la función de seguimiento de las pérdidas para proteger mejor los beneficios obtenidos.

Resumir

La estrategia permite una rápida respuesta y seguimiento de tendencias a las fluctuaciones anormales del mercado mediante la combinación de monitoreo de la volatilidad y el cruce de la línea media. La estrategia está diseñada de manera razonable y tiene un buen mecanismo de control de riesgo, pero aún requiere que el comerciante optimice los parámetros y gestione el riesgo en función de las condiciones reales del mercado. Se recomienda comenzar con una posición pequeña en el comercio en vivo y verificar gradualmente el rendimiento de la estrategia en diferentes entornos de mercado.

Código Fuente de la Estrategia
/*backtest
start: 2024-12-05 00:00:00
end: 2024-12-12 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

//黑天鹅警报器,作者():道格拉斯机器人
//适合1分钟-3分钟的k线,发生波动超过百分之二时,自动报警
strategy('黑天鹅警报', overlay=true, initial_capital=10000, currency='USD', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, pyramiding=3)
//-------------------------------------------
//-------------------------------------------
timecondition = timeframe.period == '480' or timeframe.period == '240' or timeframe.period == 'D' or timeframe.period == '720'
// Make input options that configure backtest date range
startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31)
startMonth = input.int(title='Start Month', defval=11, minval=1, maxval=12)
startYear = input.int(title='Start Year', defval=2018, minval=1800, maxval=2100)
endDate = input.int(title='End Date', defval=1, minval=1, maxval=31)
endMonth = input.int(title='End Month', defval=11, minval=1, maxval=12)
endYear = input.int(title='End Year', defval=2031, minval=1800, maxval=2100)
// Look if the close time of the current bar
// falls inside the date range
inDateRange = time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0) and time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0)



// Inputs
a = input(1, title='Key Vaule. \'This changes the sensitivity\'')
c = input(10, title='ATR Period')
h = input(false, title='Signals from Heikin Ashi Candles')


ma60 = ta.sma(close, 60)
ema144 = ta.ema(close, 144)

ema169 = ta.ema(close, 169)
ma20 = ta.sma(close, 20)


plot(ema144, color=color.new(color.yellow, 0), title='144')
plot(ema169, color=color.new(color.orange, 0), title='169')


heitiane = close - open
heitiane := math.abs(heitiane)
heitiane /= close

if inDateRange and heitiane > 0.0191 and close < open  //  and close>f3
    strategy.entry('botsell20', strategy.short, comment='黑天鹅追空' + str.tostring(heitiane))

if ta.crossover(ema144, ema169)
    strategy.close('botsell20', comment='平空')
if inDateRange and heitiane > 0.0191 and close > open  //  and close>f3
    strategy.entry('botbuy20', strategy.long, comment='白天鹅追多' + str.tostring(heitiane))

if ta.crossunder(ema144, ema169)
    strategy.close('botbuy20', comment='平多')