Cruzar la estrategia de fuga

El autor:¿ Qué pasa?, Fecha: 2023-10-12 16:47:55
Las etiquetas:

Resumen general

La estrategia de cruce de media móvil es una estrategia comercial cuantitativa muy común. Utiliza la cruz de oro y la cruz de muerte de las medias móviles para determinar tendencias y ganancias. Cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo, indica una tendencia alcista y se puede tomar una posición larga. Cuando el promedio móvil a corto plazo cruza por debajo del promedio móvil a largo plazo, indica una tendencia bajista y se puede tomar una posición corta.

Estrategia lógica

Esta estrategia se basa en la cruz de oro y la cruz de muerte de las medias móviles para determinar los puntos de entrada y salida.upOrDownylongOrShortpara determinar el largo o el corto;percentInputfijar el porcentaje umbral de variación de precios;closePositionDaysestablecer el número de días para mantener la posición.

La lógica básica es: calcular el aumento/disminución de hoy en relación con ayer. Si alcanza el porcentaje de umbral de entrada, se activa una señal de negociación. Si es una señal larga, cuando el precio de hoy aumenta más que el umbral en relación con ayer, vaya largo. Si es una señal corta, cuando el precio de hoy disminuye más que el umbral en relación con ayer, vaya corto.

Después de ir largo / corto, el día de entrada y los próximos 4 días se marcarán con colores en el gráfico.

Ventajas

  • El uso de cruces de promedios móviles para determinar la tendencia es un método maduro y fiable
  • Lógica estratégica simple y clara, fácil de entender e implementar
  • La frecuencia se puede controlar ajustando los parámetros
  • El mecanismo automático de suspensión de pérdidas controla eficazmente los riesgos

Los riesgos

  • Las medias móviles tienen efectos retardantes, pueden perder el mejor momento de los cambios rápidos de precios
  • Las fluctuaciones de precios significativas pueden ocurrir a corto plazo, generando señales innecesarias
  • La configuración inadecuada de los parámetros puede afectar al rendimiento de la estrategia
  • Incapacidad para responder eficazmente a los efectos de eventos inesperados

Gestión de riesgos:

  1. Optimizar los parámetros de la media móvil, los períodos más largos ayudan a filtrar el ruido
  2. Aumentar el porcentaje límite para reducir las operaciones innecesarias
  3. Prueba diferentes períodos de retención para controlar pérdidas únicas
  4. Combinar con otros indicadores para confirmar aún más las señales

Direcciones de optimización

  • Considere el uso de EMA, DMA en lugar de SMA para hacerlo más sensible
  • Añadir mecanismos de stop loss, por ejemplo, stop loss al romper el promedio
  • Añadir otros indicadores técnicos como MACD, KDJ para la combinación, mejorando la tasa de ganancia
  • Prueba métodos de aprendizaje automático para optimizar los parámetros
  • Optimizar el tiempo de entrada y salida, como el escape, etc.

Resumen de las actividades

La estrategia de cruce de promedios móviles es una estrategia de negociación cuantitativa muy simple y práctica. Al juzgar la relación entre las tendencias a corto y largo plazo, se beneficia de la naturaleza de tendencia de los precios de los activos. Esta estrategia es fácil de implementar con una lógica clara, y forma la base de muchas estrategias de negociación cuantitativas. Podemos obtener un mejor rendimiento a través de ajustes y optimizaciones de parámetros. Pero también necesitamos gestionar los riesgos y evitar el uso indebido.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  Created by Leon Ross

strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, 
  pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, 
  calc_on_every_tick=true, initial_capital=100000)
  
//Inputs
longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false
upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day
percentInput = input(title="Percent", type=float, defval=4.5)
closePositionDays = input(title="How Many Days to Close Position", defval=4)

//Conditions
//percentUpValue = (close / close[1]) - 1
//percentUp = percentUpValue >= (percentInput/100.0)
//upConditions = percentUp
//percentDownValue = 1- (close / close[1])
//percentDown = percentDownValue >= (percentInput/100.0)
//downConditions = percentDown
upValue = (close / close[1]) - 1
downValue = 1 - (close / close[1])
allConditions = if(upOrDown)
    upValue >= (percentInput/100.0)
else
    downValue >= (percentInput/100.0)
    
//Plots
bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70)
bgcolor(allConditions ? silver : na, transp=70, offset=1)
bgcolor(allConditions ? silver : na, transp=70, offset=2)
bgcolor(allConditions ? silver : na, transp=70, offset=3)
bgcolor(allConditions ? silver : na, transp=70, offset=4)
//bgcolor(downConditions == 1 ? red : na, transp=70)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4)

//Entires
if(longOrShort)
    strategy.entry(id = "Long", long = true, when = allConditions) 
else
    strategy.entry(id = "Short", long = false, when = allConditions)

//Exits
if (barssince(allConditions) == closePositionDays)
    if(longOrShort)
        strategy.close("Long")
    else
        strategy.close("Short")




Más.