Estrategia de negociación cuantitativa basada en el cruce de la media móvil doble

El autor:¿ Qué pasa?, Fecha: 2024-02-21 14:28:28
Las etiquetas:

img

Resumen general

Esta estrategia se llama Quantitative Trading Strategy Based on Double Moving Average Crossover. La idea principal de esta estrategia es utilizar las señales cruzadas entre las líneas de promedio móvil rápido y lento para determinar las tendencias de precios y tomar decisiones de compra y venta en consecuencia.

Principio de la estrategia

Los indicadores centrales de esta estrategia son las líneas de promedio móvil rápido y lento. La estrategia utiliza la relación cruzada entre las líneas de promedio móvil rápido y lento para determinar las tendencias de precios y tomar decisiones comerciales basadas en esto.

Específicamente, el parámetro de la línea media móvil rápida se establece en 24 períodos, y el parámetro de la línea media móvil lenta se establece en 100 períodos. Cuando la línea media móvil rápida cruza por encima de la línea media móvil lenta desde abajo, indica que los precios están entrando en una tendencia al alza, y la estrategia emitirá una señal de compra en este momento. Cuando la línea media móvil rápida cruza por debajo de la línea media móvil lenta desde arriba, indica que los precios están entrando en una tendencia a la baja, y la estrategia emitirá una señal de venta en este momento.

Al juzgar la dirección de cruce de las líneas de promedio móvil rápido y lento, los cambios en la tendencia de los precios se pueden capturar eficazmente para ayudar a tomar decisiones de compra y venta.

Ventajas de la estrategia

Esta estrategia tiene las siguientes ventajas:

  1. El principio es sencillo y fácil de entender, fácil de aplicar.

  2. Los parámetros de las medias móviles rápidas y lentas pueden ajustarse según las condiciones reales, lo que hace que la estrategia sea más flexible.

  3. La capacidad de capturar los cambios de tendencia es fuerte.

  4. Las medias móviles dobles pueden utilizarse para identificar los rangos de consolidación y evitar la apertura repetida de posiciones durante las consolidaciones.

Riesgos de la estrategia

También hay algunos riesgos con esta estrategia:

  1. Como indicadores de seguimiento de tendencias, las señales de cruce de medias móviles dobles a menudo se retrasan un cierto período, lo que puede conducir a un cierto grado de costo de oportunidad.

  2. Es fácil producir señales falsas en los mercados oscilantes. Las medias móviles dobles funcionan mejor cuando los precios muestran una tendencia clara. Pero en los mercados oscilantes, tienden a producir señales falsas frecuentes.

  3. Si los parámetros de los promedios móviles rápidos y lentos se establecen incorrectamente, afectará la sensibilidad para capturar los cruces de tendencia.

Soluciones correspondientes:

  1. Acortar adecuadamente el período de la media móvil para aumentar la sensibilidad de las señales cruzadas.

  2. Añadir indicadores de volatilidad o volumen para filtrar para reducir las operaciones no válidas en mercados oscilantes.

  3. Optimización de parámetros para encontrar las mejores combinaciones de parámetros. Añadir aprendizaje automático y otros métodos para optimizar automáticamente.

Direcciones para la optimización de la estrategia

La estrategia se puede optimizar en los siguientes aspectos:

  1. Utilice indicadores técnicos de media móvil más avanzados como la media móvil ponderada lineal para reemplazar la media móvil simple para mejorar la capacidad de seguimiento y predicción de los indicadores.

  2. Añadir más indicadores auxiliares como indicadores de volumen y volatilidad para el filtrado conjunto para reducir las señales no válidas.

  3. Optimizar los parámetros de media móvil rápida y lenta para mejorar la adaptabilidad de los parámetros.

  4. Después de que la estrategia ingresa al mercado, los puntos de stop loss y los trailing stop loss pueden diseñarse para controlar pérdidas individuales.

  5. Las nuevas tecnologías, como el aprendizaje profundo, pueden utilizarse para identificar patrones de precios más complejos para ayudar a los cruces medios móviles a tomar decisiones de compra y venta, con el fin de obtener mejores resultados.

Resumen de las actividades

En general, esta estrategia es relativamente clásica y simple. Determina las tendencias de precios basadas en indicadores de media móvil doble para descubrir oportunidades cuando los precios se mueven de la consolidación a la tendencia. Las ventajas son la lógica clara y la simplicidad, adecuadas para el seguimiento de los mercados de tendencia. Pero también hay algunos defectos como el retraso de la señal que deben mejorarse a través de la sintonización de parámetros y la optimización para aumentar la estabilidad y la eficiencia de la estrategia. En general, como una estrategia básica, esto es bastante adecuado, pero necesita optimización continua para adaptarse a entornos de mercado más complejos.


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

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=100000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)

//OBV
src = close
obv = ta.cum(math.sign(ta.change(src)) * volume)
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 20, minval = 1, maxval = 100, group="Smoothing")
Limit = input.float(title = "Limit", defval = 1, minval = 0.1, maxval = 10, group="Smoothing")
smoothingLine_ma = ma(obv,smoothingLength, typeMA)
obv_diff = (obv-smoothingLine_ma)*100/obv

//PVT
var cumVolp = 0.
cumVolp += nz(volume)
if barstate.islast and cumVolp == 0
    runtime.error("No volume is provided by the data vendor.")
srcp = close
vt = ta.cum(ta.change(srcp)/srcp[1]*volume)
smoothingLine_map = ma(vt,smoothingLength, typeMA)
pvt_diff = (vt-smoothingLine_map)*100/vt

// plot(obv_diff+close+100 ,title="OBV_DIFF", color = color.rgb(255, 118, 54))
// plot(pvt_diff+close+80 ,title="PVT_DIFF", color = color.rgb(223, 61, 255))

indicator = (pvt_diff+obv_diff)/2
goLongCondition1 = ta.crossover(indicator,Limit)
timePeriod = time >= timestamp(syminfo.timezone, 2023,1, 1, 0, 0)  // Backtesting Time
notInTrade = strategy.position_size <= 0
if goLongCondition1 and timePeriod and notInTrade
    stopLoss = low * 0.99 // -2%
    takeProfit = high * 1.05 // +5%
    strategy.entry('long', strategy.long )
    strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)






// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 100)
// goLongCondition1 = ta.crossover(fastEMA, slowEMA)
// timePeriod = time >= timestamp(syminfo.timezone, 2018, 12, 15, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low * 0.97
//     takeProfit = high * 1.12
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
// plot(fastEMA, color=color.new(color.blue, 0))
// plot(slowEMA, color=color.new(color.yellow, 0))

Más.