Estrategia cuantitativa de cruce de la media móvil de impulso

El autor:¿ Qué pasa?, fecha: 2024-01-26 11:39:26
Las etiquetas:

img

Resumen general

Esta estrategia combina los indicadores de promedio móvil y volumen de operaciones para diseñar las reglas de entrada y salida largas y cortas, formando una estrategia comercial cuantitativa completa.

Principio de la estrategia

Indicadores clave

  1. Las medias móviles: medias rápidas (línea azul) y medias lentas (línea roja)
  2. Volumen: Volumen de 24 horas (púrpura) y volumen promedio de 7 días (naranja)

Condiciones de la estrategia

Condiciones de entrada de larga duración:

  1. El MA rápido cruza el MA lento
  2. Volumen de 24 horas inferior al 50% del volumen promedio de 7 días

Condiciones de entrada:

El MA rápido cruza por debajo del MA lento

Entrada y salida

Entrada larga:Ir largo cuando se cumplen las condiciones largas

Entrada corta:Ir corto cuando se cumplen las condiciones cortas

Tome ganancias y detenga pérdidas:Se muestran los niveles de toma de ganancias y parada de pérdidas para las posiciones largas

Análisis de ventajas

  1. Combinando precio y volumen evitar una falsa ruptura
  2. Normas claras de entrada y salida
  3. Obtener ganancias y detener pérdidas para controlar el riesgo

Análisis de riesgos

  1. Negociación frecuente con estrategia de media móvil
  2. Calidad poco fiable de los datos de volumen
  3. Optimización excesiva en el ajuste de parámetros

Mejoras:

  1. Ajuste de los parámetros del MA para reducir la frecuencia de las operaciones
  2. Verificar señales con más fuentes de datos
  3. Pruebas posteriores estrictas para evitar la optimización excesiva

Direcciones de optimización

  1. Añadir otros indicadores a las señales de filtro
  2. Dinámica de toma de ganancias y stop loss
  3. Análisis de marcos de tiempo múltiples para mejorar la estabilidad

Resumen de las actividades

Esta estrategia integra MA e indicadores de volumen para diseñar una estrategia cuantitativa completa con condiciones de entrada claras, tomar ganancias / detener pérdidas, fácil de operar. Necesidad de prevenir problemas comerciales frecuentes, monitorear la calidad de los datos de volumen y la sobreoptimización.


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

//@version=5
strategy("MA and Volume Strategy", overlay=true)

// Input parameters
fastLength = input(9, title="Fast MA Length")
slowLength = input(21, title="Slow MA Length")
volumePercentageThreshold = input(50, title="Volume Percentage Threshold")

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Calculate 24-hour volume and weekly volume average
dailyVolume = request.security(syminfo.tickerid, "D", volume)
weeklyVolumeAvg = ta.sma(request.security(syminfo.tickerid, "W", volume), 7)

// Strategy conditions
longCondition = ta.crossover(fastMA, slowMA) and dailyVolume < (weeklyVolumeAvg * volumePercentageThreshold / 100)
shortCondition = ta.crossunder(fastMA, slowMA)

// Set take profit and stop loss levels
takeProfitLong = close * 1.50
stopLossLong = close * 0.90

// Strategy orders
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Plot moving averages
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")

// Plot 24-hour volume and weekly volume average
plot(dailyVolume, color=color.purple, title="24-Hour Volume", transp=0)
plot(weeklyVolumeAvg, color=color.orange, title="Weekly Volume Average")

// Plot entry signals
plotshape(series=longCondition, title="Buy Signal", color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition, title="Sell Signal", color=color.red, style=shape.triangledown, size=size.small)

// Plot take profit and stop loss levels only when a valid trade is active
plotshape(series=longCondition, title="Take Profit Long", color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=longCondition, title="Stop Loss Long", color=color.red, style=shape.triangledown, size=size.small)


Más.