En la carga de los recursos... Cargando...

Estrategia de cruce de la media móvil SMA

El autor:¿ Qué pasa?, Fecha: 2024-03-28 17:50:00
Las etiquetas:

img

Resumen general

Esta estrategia es una simple estrategia de cruce de promedios móviles SMA. Utiliza dos promedios móviles simples (SMA) con diferentes longitudes. Cuando el MA rápido cruza por encima del MA lento, entra en una posición larga. Cuando el MA rápido cruza por debajo del MA lento, cierra la posición larga. Las longitudes de los dos MA se pueden personalizar, así como las fechas de inicio y finalización para backtesting.

La idea principal de esta estrategia es utilizar las características de tendencia de los promedios móviles y las características de señal de los cruces de MA para la negociación. Cuando el MA rápido está por encima del MA lento, indica una tendencia al alza y una posición larga debe mantenerse. Cuando el MA rápido está por debajo del MA lento, indica una tendencia a la baja y no debe mantenerse ninguna posición.

Principio de la estrategia

  1. Calcular dos SMA con diferentes longitudes, que pueden ser personalizadas.
  2. Compruebe si la hora actual está dentro de la ventana de backtesting.
  3. Si el MA rápido se cruza por encima del MA lento, introduzca una posición larga.
  4. Si el MA rápido se cruza por debajo del MA lento, cierre todas las posiciones largas.
  5. En otros casos, permanezca en el suelo y no haga nada.

Análisis de ventajas

  1. Simple y fácil de entender, con lógica clara, adecuada para que los principiantes aprendan y usen.
  2. La media móvil es un indicador técnico ampliamente utilizado, con características de tendencia obvias, que pueden reflejar bien la tendencia actual del mercado.
  3. El cruce MA es una señal clásica de seguimiento de tendencias que puede capturar rápidamente los cambios en las tendencias.
  4. Las longitudes de los MA y la ventana de backtesting pueden ser personalizadas, lo que proporciona una buena flexibilidad.
  5. Adecuado para instrumentos y marcos de tiempo con fuertes características de tendencia.

Análisis de riesgos

  1. Cuando el mercado fluctúa mucho y la tendencia se invierte con frecuencia, puede haber frecuentes señales de cruce, lo que resulta en una negociación excesiva y un aumento de los costos de transacción.
  2. Esta estrategia sólo puede capturar tendencias al alza, y es impotente en los mercados de rango y tendencias a la baja.
  3. La selección de los parámetros de MA debe optimizarse para diferentes instrumentos y plazos, ya que los diferentes parámetros pueden tener grandes diferencias de rendimiento.
  4. Esta estrategia no tiene medidas de stop-loss y puede enfrentar mayores riesgos de extracción cuando el mercado fluctúa dramáticamente.

Direcciones de optimización

  1. Considerar la posibilidad de añadir medidas de stop-loss adecuadas, como la parada de seguimiento basada en ATR, para controlar la pérdida máxima de una sola operación.
  2. Considere agregar algunas condiciones de filtrado, como el volumen de operaciones y la volatilidad, para filtrar algunas señales falsas.
  3. Considere la optimización de parámetros, como el uso de algoritmos genéticos u otros algoritmos inteligentes para encontrar la combinación óptima de parámetros.
  4. Considerar la combinación de otros indicadores técnicos o señales de negociación con el cruce MA, como el MACD y el RSI, para mejorar la fiabilidad y la eficacia de la estrategia.

Conclusión

La estrategia de cruce de media móvil SMA es una estrategia simple, fácil de entender, clásica y práctica de seguimiento de tendencias que es adecuada para que los principiantes la aprendan y la usen. Utiliza las características de tendencia de las medias móviles y las características de señal de los cruces de MA para capturar rápidamente los cambios en las tendencias del mercado. Sin embargo, esta estrategia también tiene algunas limitaciones y riesgos, como retraso, comercio frecuente y falta de stop-loss. Por lo tanto, en aplicaciones prácticas, necesita ser adecuadamente optimizada y mejorada de acuerdo con condiciones específicas para mejorar la estabilidad y rentabilidad de la estrategia.


/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
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/
// © j0secyn

//@version=5
strategy("MA Cross", overlay=true, margin_long=100, margin_short=100, default_qty_value=100, default_qty_type=strategy.percent_of_equity, initial_capital=10000)

// === INPUT BACKTEST RANGE ===
fromDay   = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear  = input.int(defval = 2018,title = "From Year", minval = 1970)
thruDay   = input.int(defval = 30, title = "Thru Day", minval = 1, maxval = 31)
thruMonth = input.int(defval = 9, title = "Thru Month", minval = 1, maxval = 12)
thruYear  = input.int(defval = 2024, title = "Thru Year", minval = 1970)

slow_ma_length = input.int(defval = 100, title = "Slow MA lenght")
fast_ma_length = input.int(defval = 30, title = "Fast MA lenght")

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)            // backtest start  window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)            // backtest finish window
window()  => true

// === LOGIC ===
crossOv = ta.crossover(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length))
crossUn = ta.crossunder(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length))

// === EXECUTION ===
// strategy.entry("L", strategy.long, when = window() and crossOv)        // enter long when "within window of time" AND crossover
// strategy.close("L", when = window() and crossUn)                       // exits long when "within window of time" AND crossunder         
strategy.entry("L", strategy.long, when = window() and crossOv)        // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and crossUn)                       // exits long when "within window of time" AND crossunder         

Más.