Estrategia de ruptura de la media móvil cruzada doble

El autor:¿ Qué pasa?, Fecha: 2023-11-27 16:21:45
Las etiquetas:

img

Resumen general

Esta estrategia genera señales de entrada largas o cortas cuando el promedio móvil simple rápido de 30 días y el promedio móvil simple lento de 33 días del precio de la acción se cruzan.

Principio de la estrategia

El núcleo de esta estrategia es calcular el MA rápido de 30 días y el MA lento de 33 días. La línea rápida puede responder a los cambios de precio más rápido, mientras que la línea lenta tiene un mejor efecto de filtrado. Cuando la línea rápida rompe la línea lenta hacia arriba, se genera una señal de compra. Esto indica que el precio comienza a subir y la línea rápida ha respondido mientras que la línea lenta todavía está rezagada. Cuando la línea rápida rompe la línea lenta hacia abajo, se genera una señal de venta. Esto indica que el precio comienza a disminuir mientras que la línea rápida ha respondido pero la línea lenta todavía está rezagada.

A través de un diseño de cruce MA rápido y lento, puede generar señales comerciales cuando comienza una nueva tendencia y sale en señales opuestas, capturando efectivamente las tendencias de precios a medio y largo plazo.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. Utilizando una media móvil sencilla, es fácil de entender e implementar
  2. La combinación de línea rápida y línea lenta puede responder rápidamente a los cambios de precios y también tiene un efecto filtrante
  3. Las señales de la cruz dorada y la cruz de la muerte son simples y claras, fáciles de operar.
  4. Puede captar de manera eficaz las tendencias a medio y largo plazo
  5. Salidas rápidas a las señales opuestas para controlar los riesgos

Análisis de riesgos

También existen algunos riesgos para esta estrategia:

  1. Puede generar múltiples señales falsas cuando el precio está limitado al rango, causando un exceso de negociación
  2. No puede manejar muy bien las fluctuaciones extremas de precios causadas por eventos inesperados
  3. Los parámetros como los períodos de MA pueden necesitar optimización, la configuración incorrecta afectará el rendimiento de la estrategia
  4. Los costes de negociación afectan en cierta medida a la rentabilidad

Los métodos como la optimización de parámetros, el establecimiento del nivel de stop loss, la negociación solo cuando la tendencia es clara, etc. se pueden utilizar para controlar y reducir esos riesgos.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimizar los períodos de admisión y los tipos de cruce para encontrar la combinación óptima de parámetros
  2. Añadir otros filtros de indicadores técnicos, por ejemplo, volumen de operaciones, MACD, etc., para reducir las señales falsas
  3. Añadir el mecanismo de pérdida de parada adaptativa en lugar de simplemente la señal opuesta de pérdida de parada
  4. Conjunto de parámetros de diseño y reglas de parada de pérdidas para diferentes productos
  5. Incorporar métodos de aprendizaje automático para ajustar dinámicamente los parámetros

A través de pruebas y optimización, las reglas de estrategia pueden mejorarse continuamente para obtener señales comerciales más confiables en diferentes entornos de mercado.

Resumen de las actividades

En resumen, esta estrategia de ruptura de cruce de doble MA es bastante simple y práctica. Al combinar MA rápido y MA lento, puede identificar eficazmente el comienzo de tendencias a medio y largo plazo y generar señales comerciales relativamente confiables. Además, su regla de stop loss es fácil de implementar. Con una optimización adicional, esta estrategia puede convertirse en un valioso sistema cuantitativo a largo plazo.


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

//@version=3
//future strategy
//strategy(title = "es1!_1minute_hull", default_qty_type = strategy.fixed, initial_capital=250000,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2, calc_on_order_fills=false, calc_on_every_tick=false,pyramiding=0)
//strategy.risk.max_position_size(2)
//stock strategy
strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=1000000, overlay = false)//, calc_on_order_fills=true, calc_on_every_tick=true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true,initial_capital=250000, default_qty_type = strategy.percent_of_equity)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.005,default_qty_value=10000)
//strategy.risk.allow_entry_in(strategy.direction.long) // There will be no short entries, only exits from long.




testStartYear = 2010
testStartMonth = 1
testStartDay = 1
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testEndYear = 2039
testEndMonth = 1
testEndDay = 1
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


testPeriod() =>
    //true
    time >= testPeriodStart and time <= testPeriodEnd ? true : false

fast_length = 30
slow_length = 33

ema1 = 0.0
ema2 = 0.0

volumeSum1 = sum(volume, fast_length)
volumeSum2 = sum(volume, slow_length)

//ema1 := (((volumeSum1 - volume) * nz(ema1[1]) + volume * close) / volumeSum1)
ema1 :=  ema(close,fast_length)
//ema2 := (((volumeSum2 - volume) * nz(ema2[1]) + volume * close) / volumeSum2)
ema2 :=  ema(close,slow_length)



plot(ema1,color=#00ff00, linewidth=3)
plot(ema2, color=#ffff00, linewidth=3)

go_long = crossover(ema1,ema2)
go_short = crossunder(ema1,ema2)

if testPeriod()
    strategy.entry("long_ride", strategy.long, when=go_long)
    strategy.entry("short_ride", strategy.short,when=go_short)
    
        
    strategy.close("long_ride",when=go_short)
    strategy.close("short_ride",when=go_long)
    

Más.