Estrategia de trading cuantitativo basada en promedios móviles rápidos y promedios móviles lentos


Fecha de creación: 2024-01-24 14:49:29 Última modificación: 2024-01-24 14:49:29
Copiar: 0 Número de Visitas: 484
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo basada en promedios móviles rápidos y promedios móviles lentos

Descripción general

La Estrategia de Breakout de la Media Móvil Doble es una estrategia de negociación cuantitativa basada en las medias móviles rápidas y las medias móviles lentas. Utiliza las medias móviles indexadas de dos períodos diferentes como señal de negociación.

Principio de estrategia

La lógica central de esta estrategia es la de utilizar las líneas de movimiento rápido y las líneas de movimiento lento para formar señales de negociación. La estrategia define un ciclo de movimiento rápido de 12 días y un ciclo de movimiento lento de 26 días. El método de cálculo es el siguiente:

  1. Calcula el índice de la media móvil de la matriz de precios AP, con un período de 2 días
  2. Calculación de la media móvil rápida basada en AP FAST, con un período de 12 días
  3. Calcula una media móvil lenta basada en el AP Slow, con un período de 26 días
  4. Comparación entre la media móvil rápida y la media móvil lenta:
    1. La señal de múltiples cabezas cuando el Fast se pone sobre el Slow
    2. La señal de cabeza vacía cuando Fast pasa por debajo de Slow
  5. Las señales de negociación específicas se juzgan en combinación con la relación entre el precio y la media móvil:
    1. Señales de múltiples cabezas: Rápido>Lento && AP>Rápido
    2. Señales de cabeza en blanco: Rápido

Una estrategia típica de doble movimiento de la media es determinar la tendencia del mercado y generar señales de negociación mediante el cruce de la media de movimiento rápido y la media de movimiento lento.

Análisis de las ventajas

La estrategia de la brecha de la línea media doble móvil tiene las siguientes ventajas:

  1. La lógica de la estrategia es simple, clara, fácil de entender y de implementar
  2. Adaptación a diferentes entornos de mercado mediante el ajuste del ciclo de la media móvil
  3. Se puede hacer más deuda al mismo tiempo para obtener mayores ganancias
  4. Se puede combinar el precio con la relación de la media móvil para enviar señales de negociación más precisas
  5. La línea media móvil tiene un cierto retraso y puede eliminar el ruido del mercado de manera efectiva

Análisis de riesgos

La estrategia de doble avance móvil también tiene ciertos riesgos:

  1. Cuando el mercado está en crisis, hay más señales falsas.
  2. Las estrategias de doble movilidad son propensas a la curva de ajuste y ignoran los cambios estructurales en el mercado
  3. La dependencia de los indicadores técnicos es vulnerable a las falsas brechas y existe el riesgo de pérdidas

La solución:

  1. Optimizar el ciclo de las medias móviles para que se ajusten mejor a la situación actual del mercado
  2. Combinado con otros indicadores, como señales de confirmación de tráfico, para evitar falsas brechas
  3. Adoptar estrategias de seguimiento de tendencias para controlar el porcentaje de ganancias y pérdidas y reducir el riesgo

Dirección de optimización

Las estrategias de penetración en la línea media móvil pueden ser optimizadas en los siguientes aspectos:

  1. Encontrar una combinación de ciclos de promedio móvil más adecuada para adaptarse a los cambios en el mercado
  2. Aumentar el volumen de transacciones y otros indicadores para filtrar las señales y asegurar la efectividad de las señales de transacción
  3. Indicadores de estructura de mercado combinados para identificar tendencias y ajustar parámetros de ciclo de la línea media
  4. El uso de medias móviles dinámicas puede ajustar el ciclo automáticamente según los cambios en el mercado
  5. La combinación de las estrategias de stop loss puede ayudar a controlar el riesgo y proteger los fondos.

Resumir

La estrategia de ruptura de la línea de paridad móvil doble es una estrategia de comercio cuantitativa simple y práctica. Tiene ventajas como la lógica de la estrategia simple y fácil de implementar, pero también hay ciertos problemas de adaptabilidad al mercado. Podemos convertirla en un sistema de comercio de ganancias estables mediante la optimización de parámetros, filtración de señales y control de riesgos.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("CDC Action Zone V.2", overlay=true)

// CDC ActionZone V2 29 Sep 2016
// CDC ActionZone is based on a simple 2MA and is most suitable for use with medium volatility market
// 11 Nov 2016 : Ported to Trading View with minor UI enhancement
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"])
src = input(title="Data Array",type=input.source,defval=ohlc4)
prd1=input(title="Short MA period", type=input.integer,defval=12)
prd2=input(title="Long MA period",type=input.integer,defval=26)
AP = ema(src,2)
Fast = ema(AP,prd1)
Slow = ema(AP,prd2)


Bullish = Fast>Slow
Bearish = Fast<Slow

Green = Bullish and AP>Fast
Red = Bearish and AP<Fast
Yellow = Bullish and AP<Fast
Blue = Bearish and AP>Fast

Buy = Bullish and Bearish[1]
Sell = Bearish and Bullish[1]


alertcondition(Buy,"Buy Signal","Buy")
alertcondition(Sell,"Sell Signal","Sell")


//Plot

l1=plot(Fast,"Fast", linewidth=1,color=color.red)
l2=plot(Slow,"Slow", linewidth=2,color=color.blue)
bcolor = Green ? color.lime : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
fill(l1,l2,bcolor)

// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2000, title = "From Year", minval = 1920)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 1921)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"


if LSB == "Long only" and Buy and window()
    strategy.entry("L",true)
if LSB == "Long only" and Sell and window()
    strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Buy and window()
    strategy.entry("L",true)
if LSB == "Both" and Sell and window()
    strategy.entry("S",false)
if LSB == "Short only" and Sell and window()
    strategy.entry("S",false)
if LSB == "Short only" and Buy and window()
    strategy.close("S",qty_percent=100,comment="TP Short")