Estrategia de doble empuje basada en SMA

El autor:¿ Qué pasa?, Fecha: 2023-11-22 15:42:29
Las etiquetas:

img

Resumen general

Esta estrategia construye una estrategia simple de doble empuje basada en el indicador SMA. Se va largo cuando el precio cruza por encima del SMA más alto de 20 períodos y se va corto cuando el precio cruza por debajo del SMA más bajo de 20 períodos.

Estrategia lógica

Esta estrategia utiliza el SMA de 20 períodos del precio más alto y el precio más bajo para determinar la dirección para la negociación. Cuando el precio cruza por encima del SMA más alto, se considera una tendencia alcista, por lo que se va largo. Cuando el precio cruza por debajo del SMA más bajo, se considera una tendencia bajista, por lo que se va corto.

Específicamente, la estrategia primero calcula la SMA de 20 períodos de los precios más altos y más bajos, y traza las líneas del indicador.

Entrada larga: el precio de cierre se cruza por encima de la SMA más alta
Salida larga: el precio de cierre se cruza por debajo de 0,99 * SMA más alta

Entrada corta: el precio de cierre se cruza por debajo de la SMA más baja
Salida corta: el precio de cierre se cruza por encima de 1,01 * SMA más baja

Así que se construye una tendencia siguiendo la estrategia de doble empuje.

Análisis de ventajas

Esta estrategia tiene las siguientes ventajas:

  1. El uso de SMA para determinar la dirección de la tendencia es simple y práctico
  2. La SMA más alta y la SMA más baja actúan como líneas de soporte/resistencia
  3. Diseño razonable de stop loss para maximizar la protección contra pérdidas enormes
  4. Buena adaptabilidad, puede utilizarse en diferentes productos y plazos

Análisis de riesgos

También hay algunos riesgos con esta estrategia:

  1. La SMA tiene un efecto de retraso, puede perder los puntos de inflexión de la tendencia
  2. No hay protección frente a acontecimientos repentinos del mercado
  3. Impacto del coste de negociación no considerado

Estos riesgos pueden controlarse y reducirse mediante la combinación de otros indicadores, la configuración de stop loss, el ajuste de parámetros, etc.

Direcciones de mejora

Esta estrategia también puede mejorarse en los siguientes aspectos:

  1. Combinar otros indicadores como MACD, KDJ para determinar la tendencia
  2. Añadir protección para eventos repentinos como suspensión, limitación de precios, etc.
  3. Optimizar los períodos de SMA, encontrar la mejor combinación de parámetros
  4. Encontrar los mejores parámetros para diferentes productos y plazos
  5. Estimar el impacto de los costes de negociación, establecer el stop loss y el take profit óptimos

Conclusión

La lógica general de esta estrategia es clara y fácil de implementar. Mediante el uso de SMA para determinar la dirección de la tendencia y establecer reglas de entrada / salida razonables, se pueden lograr buenos resultados.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 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/
// © AlanAntony

//@version=4


strategy("ma 20 high-low",overlay=true)

//compute the indicators

smaH = sma(high, 20)
smaL = sma(low, 20)


//plot the indicators
plot(smaH,title="smaHigh", color=color.green, linewidth=2)


plot(smaL,title="smaLow", color=color.red, linewidth=2)


//trading logic
enterlong = crossover(close,smaH) //positive ema crossover
exitlong = crossunder(close,0.99*smaH)  //exiting long


entershort = crossunder(close,smaL) //negative EMA Crossover
exitshort = crossover(close,1.01*smaH) //exiting shorts


notintrade = strategy.position_size<=0
bgcolor(notintrade ? color.red:color.green)

//execution logic

start = timestamp(2015,6,1,0,0)
//end = timestamp(2022,6,1,0,0)

if time >= start
    strategy.entry( "long", strategy.long,1, when = enterlong)
    strategy.entry( "short", strategy.short,1, when = entershort) 
    
    strategy.close("long", when = exitlong)
    strategy.close("short", when = exitshort)

//if time >= end
   // strategy.close_all()

Más.