Estrategia de cruce de SMA


Fecha de creación: 2023-11-08 11:36:51 Última modificación: 2023-11-08 11:36:51
Copiar: 1 Número de Visitas: 646
1
Seguir
1617
Seguidores

Estrategia de cruce de SMA

Descripción general

La estrategia se basa en el principio cruzado de las medias móviles rápidas y las medias móviles lentas para generar señales de compra. Cuando las medias móviles rápidas cruzan las medias móviles lentas desde abajo, se genera una señal de compra; cuando las medias móviles rápidas cruzan las medias móviles lentas desde arriba, se genera una señal de venta.

El principio

La estrategia utiliza la función sma para calcular las medias móviles rápidas y las medias móviles lentas. Fast_SMA es una media móvil rápida con una longitud de ciclo de fast_SMA_input; slow_SMA es una media móvil lenta con una longitud de ciclo de slow_SMA_input.

Las estrategias utilizan las funciones de cruz y cruzador para determinar el cruce entre las medias móviles rápidas y las medias móviles lentas. Cuando se cruza una media móvil lenta sobre una media móvil rápida, la variable LONG es verdadera y genera una señal de compra; cuando se cruza una media móvil lenta debajo de una media móvil rápida, la variable SHORT es verdadera y genera una señal de venta.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. La estrategia es simple, fácil de entender y de implementar.
  2. Se puede personalizar el ciclo de la media móvil para diferentes entornos de mercado.
  3. Se puede filtrar parte del ruido del mercado para generar una señal de negociación más confiable.
  4. La idea es capturar el inicio y el giro de una tendencia al mismo tiempo.

Análisis de riesgos

La estrategia también tiene los siguientes riesgos:

  1. Si se configura incorrectamente, se generan demasiadas señales de transacción, lo que hace que las transacciones sean frecuentes.
  2. En el mercado horizontal puede generarse una gran cantidad de señales no válidas.
  3. No se sabe cuánto tiempo durará la tendencia, y puede que se invierta prematuramente.

Los métodos para controlar el riesgo:

  1. Establezca los parámetros de las medias móviles de manera razonable para equilibrar el efecto de filtración y la sensibilidad.
  2. La combinación de los indicadores de tendencia y el filtro de las señales de invalidez.
  3. Establezca un punto de parada para controlar las pérdidas individuales.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Aumentar las condiciones de filtración para comprobar el volumen de transacción o los indicadores de volatilidad al romper las medias móviles y evitar falsas rupturas.
  2. Combinado con indicadores de tendencias, identifica la dirección y la intensidad de las tendencias.
  3. Agrega modelos de aprendizaje automático para optimizar los parámetros de las medias móviles.
  4. La combinación de los indicadores técnicos de soporte, como el nivel de resistencia y las bandas de Brin, permite una mejor precisión de entrada.

Resumir

La estrategia utiliza las ventajas de las medias móviles para generar señales de negociación de manera simple y eficiente. Aunque existen algunos riesgos, se pueden mejorar mediante la optimización de los parámetros, el aumento de las condiciones de filtración, etc. La estrategia de cruce de medias móviles merece más investigación y aplicación.

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

//@author Jacques Grobler
//
//                  SIMPLE CROSS OVER BOT
//                  =====================
//
// This is a simple example of how to set up a strategy to go long or short
// If you make any modifications or have any suggestions, let me know
// When using this script, every section marked back testing should be 
// uncommented in order to use for back testing, same goes for using the script portion

///////////////////////////////////////////////////////////////////////////////////////
//// INTRO
//// -----
// BACKTESTING
//@version=4
strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1)

// SIGNALS
//study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true)

///////////////////////////////////////////////////////////////////////////////////////
//// INPUTS
//// ------
// BACKTESTING
dateSart_Year = input(2018, title="Start Year", minval=2000)
dateSart_Month = input(1, title="Start Month", minval=1, maxval=12)
dateSart_Day = input(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input(2019, title="End Year", minval=2000)
dateEnd_Month = input(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input(1, title="End Day", minval=1, maxval=31)

// BACKTESTING AND SIGNALS
fast_SMA_input = input(7, title="SMA Fast")
slow_SMA_input = input(25, title="SMA Slow")

///////////////////////////////////////////////////////////////////////////////////////
//// INDICATORS
//// ----------
fast_SMA = sma(close, fast_SMA_input)
slow_SMA = sma(close, slow_SMA_input)

///////////////////////////////////////////////////////////////////////////////////////
//// STRATEGY
//// --------
LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA
stratLONG() => crossover(fast_SMA, slow_SMA)
SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA
stratSHORT() => crossunder(fast_SMA, slow_SMA)

///////////////////////////////////////////////////////////////////////////////////////
//// TRIGGERS
//// --------
// BACKTESTING
testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0)
testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0)
timecondition = true

strategy.entry(id="LONG", long = true, when=timecondition and stratLONG())
strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT())

// SIGNALS
//alertcondition(LONG, title="LONG")
//alertcondition(SHORT, title="SHORT")

///////////////////////////////////////////////////////////////////////////////////////
//// PLOTS
//// -----
// BACKTESTING AND SIGNALS
plot(fast_SMA, color=green, linewidth=1)
plot(slow_SMA, color=yellow, linewidth=1)
plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green)
plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)