Estrategia de intercambio de scalping con doble media móvil

El autor:¿ Qué pasa?, Fecha: 2023-10-30 11:19:48
Las etiquetas:

img

Resumen general

El cruce de la media móvil doble es una estrategia de scalping simple y efectiva que utiliza señales de cruce entre el precio y las medias móviles como señales de entrada y salida para capturar los movimientos de tendencia a corto plazo.

Estrategia lógica

La estrategia emplea dos promedios móviles de diferentes períodos: una línea de MA a corto plazo y una línea de MA a largo plazo. Genera señales de compra cuando el MA de período más corto cruza por encima del MA de período más largo desde abajo. Las señales de venta se generan cuando el MA más corto cruza por debajo del MA más largo desde arriba.

La estrategia primero define la variable length para especificar el período de la línea MA más larga como 50. Luego define price como el precio de cierre y calcula el valor MA de longitud 50 y lo almacena en la variable ma. Define además bcond para verificar si el precio está por encima del valor ma. Si es así, bcount se incrementa en 1, de lo contrario se restablece a 0.

Para filtrar algunas señales no válidas, se agregan filtros adicionales como clc, clc0 y clc1 que verifican la relación de precios entre las barras actuales y anteriores.

Por último, las posiciones existentes se cierran cuando el precio cruza las líneas MA a la inversa.

Ventajas

  • Lógica sencilla, fácil de entender e implementar.
  • Captura las tendencias a corto plazo con eficacia utilizando el sistema de MA.
  • Los filtros añadidos reducen las interferencias de las señales no válidas.
  • El mecanismo de stop loss fijo controla las pérdidas en operaciones únicas.

Los riesgos

  • Suelen sufrir fracasos en los diferentes mercados, lo que lleva a costos adicionales.
  • Los parámetros fijos como los períodos de admisión pueden no adaptarse a todas las condiciones del mercado.
  • La pérdida de parada fija puede salir temprano en movimientos de tendencia fuertes más allá del nivel de parada.

Los riesgos pueden mitigarse mediante el uso de períodos de MA dinámicos basados en la volatilidad, los trailing stops o los percentage stops, etc.

Mejoras

La estrategia puede mejorarse de varias maneras:

  1. Optimizar dinámicamente los parámetros de MA en función de la volatilidad.

  2. Añadir filtros adicionales como picos de volumen para mejorar la calidad de la señal.

  3. Utilice paradas flotantes o en porcentaje para reducir las paradas prematuras.

  4. Combinar con otros indicadores como MACD, RSI para la validación de múltiples condiciones.

  5. Añadir la gestión automática de riesgos como el tamaño dinámico de la posición para controlar la pérdida por operación.

  6. Utilice el aprendizaje automático para un modelo de generación de señales más preciso.

Conclusión

La estrategia de cruce de doble MA es un sistema efectivo para el comercio a corto plazo. Los parámetros de ajuste fino, la gestión de riesgos y la combinación con otras herramientas pueden mejorar aún más su rentabilidad. En general, es simple de entender e implementar para el scalping de movimientos intradiarios más pequeños.


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

//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close

ma = sma(price, length)

bcond = price > ma

bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0

clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]

if clc and clc0 and clc1 and (bcount == confirmBars)
    strategy.entry("buy", strategy.long)


scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0

csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]

if csc and csc0 and csc1 and (scount == confirmBars)
    strategy.entry("sell", strategy.short)

strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
    
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Más.