Basado en la estrategia de cruce de promedios móviles rápidos y lentos


Fecha de creación: 2024-02-27 16:06:30 Última modificación: 2024-02-27 16:06:30
Copiar: 1 Número de Visitas: 780
1
Seguir
1617
Seguidores

Basado en la estrategia de cruce de promedios móviles rápidos y lentos

Descripción general

La estrategia de cruce de la media rápida es una estrategia de media móvil simple. Utiliza dos medias móviles, una más rápida y otra más lenta, para indicar que el precio puede subir cuando la media móvil rápida cruza la media móvil lenta desde abajo; y una más suave cuando la media móvil rápida cruza la media móvil lenta desde arriba hacia abajo, para indicar que el precio puede bajar.

Principio de estrategia

La estrategia utiliza dos promedios móviles, uno rápido y otro lento. En concreto, el promedio móvil rápido tiene una longitud predeterminada de 25 ciclos y el promedio móvil lento tiene una longitud predeterminada de 62 ciclos. La estrategia permite elegir entre diferentes tipos de promedios móviles, incluyendo SMA, EMA, WMA, RMA y VWMA.

Cuando el promedio móvil rápido cruza el promedio móvil lento desde abajo, indica que el precio a corto plazo comienza a romper el precio a largo plazo, es una señal de cruce de oro típica, que indica que el precio puede entrar en el canal ascendente, en este caso la estrategia hace más; cuando el promedio móvil rápido cruza el promedio móvil lento desde arriba, indica que el precio a corto plazo comienza a caer por encima del precio a largo plazo, es una señal de cruce de muerte, que indica que el precio puede entrar en el canal descendente, en este caso la estrategia de liquidación.

De esta manera, se puede determinar la tendencia y la dirección de los precios a través de la intersección de la línea media rápida y lenta, y hacer una posición más alta o más baja en consecuencia, lo que genera ganancias.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. La idea es simple, fácil de entender y de implementar.
  2. La configuración de los parámetros es flexible y se puede personalizar el ciclo y el tipo de la línea media rápida y lenta
  3. Indicador fiable, rápido y mediano, cruzado entre líneas para determinar con precisión la tendencia de los precios
  4. Automatización, sin necesidad de juicio humano, para reducir el impacto de factores psicológicos
  5. Aplicable a varias variedades, ampliamente usadas en índices bursátiles, divisas y criptomonedas.
  6. Fácil de optimizar y ajustar la combinación de parámetros para encontrar una mejor configuración
  7. Escalable y puede utilizarse en combinación con otros indicadores o estrategias

En general, la estrategia utiliza el cruce de la línea media rápida y lenta como una señal de negociación central, con una gran capacidad para determinar la tendencia futura de los precios, y puede obtener buenos beneficios basados en el seguimiento de tendencias, lo que vale la pena aplicar en la práctica.

Análisis de riesgos

La estrategia también tiene algunos riesgos potenciales:

  1. Las señales de cruce de línea media rápida y lenta pueden ser falsas, los precios solo se ajustan a corto plazo en lugar de una reversión de tendencia a largo plazo
  2. Una mala selección de la media larga o corta puede conducir a una operación frecuente o a una oportunidad perdida.
  3. Las señales de cruce de línea media pueden no ser visibles cuando los precios fluctúan fuertemente.
  4. Las variedades de alto costo de transacción, las transacciones de señales cruzadas con demasiada frecuencia pierden ingresos
  5. La gran escalabilidad también conlleva el riesgo de una optimización excesiva

Estos riesgos pueden ser controlados y mejorados mediante:

  1. Filtrado en combinación con otros indicadores para evitar falsos informes, como el desvío de los precios de los indicadores
  2. Ajuste de los parámetros de la línea media para encontrar la combinación óptima y reducir la probabilidad de transacciones erróneas
  3. Suspensión de las estrategias para evitar grandes fluctuaciones en un momento de crisis
  4. Relajación adecuada de la suspensión de pérdidas para reducir las pérdidas innecesarias
  5. Recuperación de variedades, evaluación de riesgos y prevención de la optimización excesiva

Dirección de optimización

Las principales áreas de optimización de la estrategia incluyen:

  1. Selección de periodicidad de la línea media rápida y la línea media lenta: el parámetro predeterminado actual puede no ser el óptimo, se puede probar con diferentes periodicidades para encontrar la mejor configuración

  2. Selección de los tipos de promedios móviles: actualmente hay varios tipos de promedios móviles disponibles para probar qué tipo funciona mejor para una variedad específica

  3. Combinación con otros indicadores o estrategias: puede intentar combinar con un indicador de volatilidad, un indicador de precio de medida o una estrategia de seguimiento de tendencias para mejorar la eficacia

  4. Optimización de la adaptabilidad de los parámetros: permite que los parámetros del ciclo de la media se ajusten automáticamente en función de la volatilidad y la liquidez del mercado, lo que mejora la estabilidad

  5. Ayuda de modelos de IA: utiliza algoritmos de aprendizaje automático para analizar grandes cantidades de datos y buscar automáticamente las reglas de negociación óptimas

A través de estos medios de optimización, se espera mejorar aún más el rendimiento y la estabilidad de las estrategias.

Resumir

La estrategia de cruce de línea media rápida y lenta es una estrategia de seguimiento de tendencias muy práctica en general. Capta las leyes de cambio de precios en diferentes escalas de tiempo y determina la posible tendencia y dirección futura de los precios a través de la ruptura de la línea media rápida y la línea media lenta. La estrategia es simple, clara, fácil de entender y implementar, los parámetros se pueden personalizar con flexibilidad, a la vez que tiene una alta fiabilidad, un alto grado de automatización, un amplio rango de aplicación y una gran escalabilidad.

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

//@version=5
//Author @divonn1994

initial_balance = 100
strategy(title='Fast v Slow Moving Averages Strategy', shorttitle = 'Fast v Slow', overlay=true, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=initial_balance)

//Input for number of bars for moving average, Switch to choose moving average type, Display Options and Time Frame of trading----------------------------------------------------------------

fastBars = input.int(25, "Fast moving average length", minval=1)
slowBars = input.int(62, "Slow moving average length", minval=1)
strategy = input.string("EMA", "MA type", options = ["EMA", "VWMA", "SMA", "RMA", "WMA"])

redOn = input.string("On", "Red Background Color On/Off", options = ["On", "Off"], group='Display')
greenOn = input.string("On", "Green Background Color On/Off", options = ["On", "Off"], group='Display')
maOn = input.string("On", "Moving Average Plot On/Off", options = ["On", "Off"], group='Display')

startMonth = input.int(title='Start Month 1-12 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=12, group='Beginning of Strategy')
startDate = input.int(title='Start Date 1-31 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=31, group='Beginning of Strategy')
startYear = input.int(title='Start Year 2000-2100 (set any start time to 0 for furthest date)', defval=2011, minval=2000, maxval=2100, group='Beginning of Strategy')

endMonth = input.int(title='End Month 1-12 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=12, group='End of Strategy')
endDate = input.int(title='End Date 1-31 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=31, group='End of Strategy')
endYear = input.int(title='End Year 2000-2100 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=2100, group='End of Strategy')

//Strategy Calculations-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

inDateRange = true

maMomentum = switch strategy
    "EMA" => (ta.ema(close, fastBars) >= ta.ema(close, slowBars)) ? 1 : -1
    "SMA" => (ta.sma(close, fastBars) >= ta.sma(close, slowBars)) ? 1 : -1
    "RMA" => (ta.rma(close, fastBars) >= ta.rma(close, slowBars)) ? 1 : -1
    "WMA" => (ta.wma(close, fastBars) >= ta.wma(close, slowBars)) ? 1 : -1
    "VWMA" => (ta.vwma(close, fastBars) >= ta.vwma(close, slowBars)) ? 1 : -1
    =>
        runtime.error("No matching MA type found.")
        float(na)

fastMA = switch strategy
    "EMA" => ta.ema(close, fastBars)
    "SMA" => ta.sma(close, fastBars)
    "RMA" => ta.rma(close, fastBars)
    "WMA" => ta.wma(close, fastBars)
    "VWMA" => ta.vwma(close, fastBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)
        
slowMA = switch strategy
    "EMA" => ta.ema(close, slowBars)
    "SMA" => ta.sma(close, slowBars)
    "RMA" => ta.rma(close, slowBars)
    "WMA" => ta.wma(close, slowBars)
    "VWMA" => ta.vwma(close, slowBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)

//Enter or Exit Positions--------------------------------------------------------------------------------------------------------------------------------------------------------------------

if ta.crossover(maMomentum, 0)
    if inDateRange
        strategy.entry('long', strategy.long, comment='long')
if ta.crossunder(maMomentum, 0)
    if inDateRange
        strategy.close('long')

//Plot Strategy Behavior---------------------------------------------------------------------------------------------------------------------------------------------------------------------

plot(series = maOn == "On" ? fastMA : na, title = "Fast Moving Average", color = color.new(color.white,0), linewidth=2, offset=1)
plot(series = maOn == "On" ? slowMA : na, title = "Slow Moving Average", color = color.new(color.purple,0), linewidth=3, offset=1)
bgcolor(color = inDateRange and (greenOn == "On") and maMomentum > 0 ? color.new(color.green,75) : inDateRange and (redOn == "On") and maMomentum <= 0 ? color.new(color.red,75) : na, offset=1)