Estrategia de ruptura de cruce de medias móviles dobles


Fecha de creación: 2023-11-27 16:21:45 Última modificación: 2023-11-27 16:21:45
Copiar: 0 Número de Visitas: 553
1
Seguir
1617
Seguidores

Estrategia de ruptura de cruce de medias móviles dobles

Descripción general

La estrategia calcula los movimientos simples rápidos de 30 días y los movimientos simples lentos de 33 días de las acciones, para realizar una entrada LONG o SHORT cuando se produzcan horquillas de oro o horquillas muertas. Se detiene inmediatamente cuando se produce una señal en contrario. Esto puede capturar eficazmente los cambios en la tendencia.

Principio de estrategia

El núcleo de esta estrategia es calcular una media rápida de 30 días y una media lenta de 33 días. La media rápida responde más rápidamente a los cambios de precio y la media lenta tiene un mejor efecto de fluctuación.

Con este diseño de cruce de línea media rápida y lenta, se puede generar una señal de negociación al comienzo de la tendencia y una parada cuando se produce una señal de reversión, capturando efectivamente la tendencia de precios de la línea media y larga. Al mismo tiempo, se evita ser confundido por las excesivas fluctuaciones del mercado.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de medias móviles simples, fáciles de entender y de implementar
  2. La combinación de líneas rápidas y lentas permite una respuesta rápida a los cambios de precio, pero también tiene un efecto de filtración.
  3. Las señales de la horca dorada y la horca muerta son sencillas, claras y fáciles de operar.
  4. La tendencia de la línea media-larga se puede capturar de manera efectiva
  5. Detenerse rápidamente cuando se produce una señal de retroceso, controlando el riesgo

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. Cuando los precios están en un estado de oscilación, puede haber múltiples falsas señales que causan un comercio excesivo.
  2. No se puede hacer frente a los cambios bruscos en los precios causados por los eventos inesperados.
  3. Los parámetros seleccionados, como el ciclo de la media, pueden necesitar optimización, y una configuración incorrecta puede afectar el rendimiento de la política
  4. Los gastos de transacción afectan a las ganancias

Estos riesgos pueden ser controlados y reducidos por métodos como la optimización de parámetros, la configuración de puntos de parada y el comercio solo cuando la tendencia es clara.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización del ciclo promedio y el tipo de cruce para encontrar la combinación óptima de parámetros
  2. Añadir filtros para otros indicadores técnicos, como volumen de operaciones, MACD, etc., para reducir las señales falsas
  3. Añadir un mecanismo de deterioro adaptativo, en lugar de un simple deterioro de la señal inversa
  4. Combinación de parámetros de diseño y reglas de stop loss para diferentes productos
  5. Parámetros de ajuste dinámico de métodos como el aprendizaje automático

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

Resumir

La estrategia de ruptura de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea

Código Fuente de la Estrategia
/*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)