Estrategia de intercambio de SMA

El autor:¿ Qué pasa?, fecha: 2023-11-08 11:36:51
Las etiquetas:

img

Resumen general

Esta estrategia genera señales comerciales basadas en el cruce entre los promedios móviles rápidos y lentos. Produce señales de compra cuando el promedio móvil rápido cruza por encima del promedio móvil lento desde abajo. Produce señales de venta cuando el promedio móvil rápido cruza por debajo del promedio móvil lento desde arriba.

Principios

Esta estrategia utiliza la función sma para calcular los promedios móviles rápidos y lentos. El fast_SMA es el promedio móviles rápidos con la duración del período de entrada fast_SMA_. El slow_SMA es el promedio móviles lentos con la duración del período de entrada slow_SMA_.

La estrategia utiliza las funciones de cruce y cruce para determinar el cruce entre los promedios móviles rápidos y lentos. Cuando el promedio móvil rápido cruza por encima del promedio móvil lento, la variable LONG es verdadera y se genera una señal de compra. Cuando el promedio móvil rápido cruza por debajo del promedio móvil lento, la variable SHORT es verdadera y se genera una señal de venta.

Ventajas

Esta estrategia tiene las siguientes ventajas:

  1. El principio es simple, fácil de entender e implementar.
  2. Períodos de media móvil personalizables, adaptables a los diferentes entornos de mercado.
  3. Filtra el ruido del mercado y genera señales comerciales relativamente fiables.
  4. Captura tanto el comienzo como los puntos de inflexión de las tendencias.

Los riesgos

Esta estrategia también tiene los siguientes riesgos:

  1. Puede generar señales comerciales excesivas si las configuraciones no son adecuadas, lo que conduce a un exceso de operaciones.
  2. Puede producir muchas señales falsas en los mercados laterales.
  3. No puede determinar la duración de una tendencia, puede revertirse prematuramente.

Gestión de riesgos:

  1. Establecer los parámetros de media móvil adecuados para equilibrar el efecto de filtración y la sensibilidad.
  2. Añadir filtros de indicadores de tendencia para evitar señales falsas.
  3. Establezca puntos de stop loss para controlar la pérdida por operación.

Optimización

Esta estrategia se puede optimizar a partir de los siguientes aspectos:

  1. Se añadirán condiciones de filtrado sobre el volumen o la volatilidad cuando se produzca la ruptura para evitar falsas rupturas.
  2. Incorporar indicadores de tendencia para identificar la dirección y la fuerza de la tendencia.
  3. Añadir modelos de aprendizaje automático para optimizar automáticamente los parámetros de la media móvil.
  4. Combinar con soporte/resistencia y bandas de Bollinger para definir rangos de negociación y mejorar la precisión de entrada.

Resumen de las actividades

Esta estrategia genera efectivamente señales comerciales aprovechando las ventajas de las medias móviles. Aunque hay algunos riesgos, se pueden mejorar mediante la optimización de parámetros, la adición de filtros, etc. La estrategia de cruce de medias móviles merece más investigación y aplicación.


/*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)

Más.