Estrategia de cruce de dos medias móviles

El autor:¿ Qué pasa?, Fecha: 2023-09-17 22:35:07
Las etiquetas:

Esta estrategia genera señales de negociación basadas en el cruce de dos promedios móviles con períodos diferentes.

Estrategia lógica

La estrategia permite a los usuarios elegir el tipo y la duración de las medias móviles. Los tipos incluyen SMA, EMA, VWMA, etc. La longitud determina el período de las medias móviles.

Se calculan dos promedios móviles basados en la selección del usuario. Si la línea más rápida cruza por encima de la línea más lenta, se forma una cruz dorada y se genera una señal de compra. Si la línea más rápida cruza por debajo de la línea más lenta, se forma una cruz de muerte y se genera una señal de venta.

Cuando el precio promedio a corto plazo está por encima del precio promedio a largo plazo, se considera una tendencia alcista y se deben tomar posiciones largas.

Análisis de ventajas

  • La lógica de la estrategia es simple y clara, fácil de entender e implementar.
  • Las medias móviles pueden filtrar eficazmente el ruido del mercado e identificar tendencias.
  • El tipo de autorización y los parámetros pueden elegirse de forma flexible para adaptarse a diferentes productos y plazos.
  • Fácil de optimizar combinando varios indicadores.

Análisis de riesgos

  • Puede generar múltiples señales falsas cuando el mercado está en un rango.
  • La selección inadecuada de parámetros puede conducir a un mal desempeño de la estrategia.
  • Las señales están retrasadas, incapaces de capturar los puntos de inflexión a tiempo.
  • Expuesto a choques repentinos de precios.

Los riesgos se pueden gestionar optimizando los parámetros, combinando otros indicadores para la generación de señales, implementando stop loss / take profit, etc.

Direcciones de optimización

  • Prueba de diferentes tipos y longitud de las MAs para encontrar parámetros óptimos.
  • Añadir otros indicadores para el filtrado de señales, por ejemplo, volumen, indicadores de volatilidad.
  • Añadir una lógica de stop loss/take profit para reducir la reducción.
  • Incorporar una evaluación de tendencias para evitar condiciones de mercado inadecuadas.
  • Optimizar la gestión del dinero, como el tamaño de las posiciones, el presupuesto de riesgos.

Conclusión

La estrategia tiene una lógica simple y clara de generación de señales con cruce de dos MAs. Permite ajustes flexibles de parámetros y combinaciones con otras estrategias para la optimización, pero los riesgos de los mercados variados deben monitorearse y la gestión de dinero es crucial.


/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)


len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short)
    
    
    
    

Más.