Estrategia de cruce de medias móviles


Fecha de creación: 2023-09-18 17:35:37 Última modificación: 2023-09-18 17:35:37
Copiar: 0 Número de Visitas: 688
1
Seguir
1617
Seguidores

Descripción general

La estrategia de cruce de la media móvil es una estrategia de seguimiento de tendencias basada en el cruce de la media móvil como señal de negociación. La estrategia utiliza el cruce del precio con la media móvil y el cruce de dos líneas de media móviles como señal de compra y venta para obtener ganancias.

Principio de estrategia

Los principales principios de la estrategia son los siguientes:

  1. Calcula dos medias móviles, más o menos rápidas, con una opción de SMA o EMA.

  2. Cuando la línea rápida atraviesa la línea lenta, haga más; cuando la línea rápida atraviesa la línea lenta, haga la misma posición.

  3. Se puede elegir el precio de ruptura de la línea media o el cruce entre las líneas medias como señal de negociación.

  4. Se puede configurar el período de tiempo durante el cual la estrategia se ejecutará.

  5. En el mercado de capitales, solo se puede hacer más, en el mercado de capitales, solo se puede hacer menos.

  6. Optimización de los parámetros de la línea media móvil para adaptarse a diferentes períodos.

La estrategia utiliza la función de seguimiento de tendencias de las medias móviles, indicando que se está en una tendencia ascendente cuando se cruza la media larga en la media corta y se debe hacer más; por el contrario, cuando se cruza la media larga por debajo de la media corta, indicando que se encuentra en una tendencia descendente, se debe reducir la posición.

Análisis de las ventajas

Las principales ventajas de la estrategia incluyen:

  1. El principio es simple, fácil de implementar, las señales de intercambio son claras.

  2. El objetivo de la plataforma es ayudar a los inversores a encontrar y manejar oportunidades de compra y venta de manera más eficiente.

  3. Se puede combinar con diferentes parámetros de la línea media para varios entornos de mercado.

  4. Se puede optar por hacer solo más o solo vacío, evitando la operación inversa de incertidumbre.

  5. Se puede configurar el tiempo de ejecución de la estrategia para evitar períodos de tiempo específicos.

  6. La optimización de parámetros mejora continuamente el rendimiento de la estrategia.

Análisis de riesgos

Los principales riesgos de esta estrategia son:

  1. Es fácil generar falsas señales y se debe evitar el comercio demasiado frecuente.

  2. El rendimiento depende de la selección de los parámetros de la línea media, la elección incorrecta puede causar pérdidas.

  3. Hay un cierto retraso que debe evitar el ingreso prematuro y la salida tardía.

  4. No es adecuado para un entorno de mercado con una liquidación convulsiva.

  5. El cruce de la línea media tiene cierta aleatoriedad y no puede evitar completamente las pérdidas.

Se puede reducir el riesgo mediante la confirmación del volumen de operaciones, la optimización de los parámetros o su uso en combinación con otros indicadores.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Se añade /%(Line - ShortMa) /ShortMa) /(Line - LongMa) /LongMa) / como condición de filtro de la pendiente de la línea media.

  2. Optimización de los parámetros del ciclo de la media móvil para probar diferentes combinaciones.

  3. La inclusión de indicadores como el MACD o el RSI para una confirmación múltiple.

  4. Establecer condiciones de stop loss para limitar las pérdidas individuales.

  5. Distinguir entre mercados de tendencia y mercados de liquidación, para el uso condicional.

  6. Prueba las diferentes posiciones para encontrar la mejor opción.

Resumir

La estrategia de cruce de línea media móvil es una estrategia de seguimiento de tendencias sencilla y práctica. La ventaja es que es fácil de implementar y puede seguir la tendencia de manera efectiva; la desventaja es que tiene un retraso y puede generar más señales falsas. Se puede mejorar la estrategia mediante optimización de parámetros, selección de indicadores, etc., para que tenga un mejor rendimiento en mercados con una tendencia evidente.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gliese581d

//@version=4
strategy(title="Moving Averages Testing", overlay=true, precision=2, calc_on_every_tick=false, max_bars_back=5000, pyramiding=2,  
 default_qty_type=strategy.percent_of_equity, default_qty_value=50, commission_type=strategy.commission.percent, initial_capital=10000)


//SETTINGS

longs_on = input(title="Long Trades enabled", defval=true)
shorts_on = input(title="Short Trades enabled", defval=true)

long_cond = input(title="Buy/Long Crossover Condition", defval="price x MA1", options=["price x MA1", "price x MA2", "MA1 x MA2"])
short_cond = input(title="Sell/Short Crossunder Condition", defval="price x MA2", options=["price x MA1", "price x MA2", "MA1 x MA2"])

ma1_type = input(title="Moving Average 1 Type", defval="SMA", options=["SMA", "EMA"])
ma1_len = input(defval=20, title="Moving Average 1 Len", type=input.integer, minval=1, maxval=1000, step=1)
ma2_type = input(title="Moving Average 2 Type", defval="SMA", options=["SMA", "EMA"])
ma2_len = input(defval=30, title="Moving Average 2 Len", type=input.integer, minval=1, maxval=1000, step=1)


//MOVING AVERAGES

ma_1 = ma1_type == "EMA" ? ema(close, ma1_len) : sma(close, ma1_len)
ma_2 = ma2_type == "EMA" ? ema(close, ma2_len) : sma(close, ma2_len)


//STRATEGY

//trade entries
long_entry = long_cond == "price x MA1" ? crossover(close, ma_1) : long_cond == "price x MA2" ? crossover(close, ma_2) : long_cond == "MA1 x MA2" ? crossover(ma_1, ma_2) : false
short_entry = short_cond == "price x MA1" ? crossunder(close, ma_1) : short_cond == "price x MA2" ? crossunder(close, ma_2) : short_cond == "MA1 x MA2" ? crossunder(ma_1, ma_2) : false

start_month = input(defval=4, title="Strategy Start Month", type=input.integer, minval=1, maxval=12, step=1)
start_year = input(defval=2018, title="Strategy Start Year", type=input.integer, minval=2000, maxval=2025, step=1)
end_month = input(defval=12, title="Strategy End Month", type=input.integer, minval=1, maxval=12, step=1)
end_year = input(defval=2020, title="Strategy End Year", type=input.integer, minval=2000, maxval=2025, step=1)

in_time = true

strategy.entry("Long", strategy.long, when=longs_on and in_time and long_entry)
strategy.close("Long", when=longs_on and not shorts_on and short_entry)

strategy.entry("Short", strategy.short, when=shorts_on and in_time and short_entry)
strategy.close("Short", when=shorts_on and not longs_on and long_entry)


//PLOTTING

//color background
last_entry_was_long = nz(barssince(long_entry)[1], 5000) < nz(barssince(short_entry)[1], 5000)
bgcol = (longs_on and last_entry_was_long) ? color.green : (shorts_on and not last_entry_was_long) ? color.red : na
bgcolor(color=bgcol, transp=90)

plot((long_cond == "price x MA1" or long_cond == "MA1 x MA2") or (short_cond == "price x MA1" or short_cond == "MA1 x MA2") ? ma_1 : na, color=color.blue)
plot((long_cond == "price x MA2" or long_cond == "MA1 x MA2") or (short_cond == "price x MA2" or short_cond == "MA1 x MA2") ? ma_2 : na, color=color.black)
plotshape(long_entry, style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(short_entry, style=shape.triangledown, location=location.abovebar, color=color.red)