En la carga de los recursos... Cargando...

Estrategia de negociación cruzada de media móvil cuantitativa ponderada

El autor:¿ Qué pasa?, Fecha: 2023-12-06 12:05:01
Las etiquetas:

img

Resumen general

Esta estrategia se llamaEstrategia de cruce de medias móviles cuantitativas ponderadasLa idea básica es diseñar líneas rápidas y lentas basadas en el precio, el volumen de negociación y otros indicadores, y generar señales de compra y venta cuando se producen cruz dorada y cruz muerta entre ellos.

Estrategia lógica

El indicador central de esta estrategia es el promedio móvil cuantitativo (QMA). QMA mide la dirección de la tendencia calculando el precio promedio ponderado durante un período de tiempo. A diferencia del promedio móvil regular, los pesos (peso = precio * volumen de negociación) de los precios en QMA disminuirán con el tiempo. Por lo tanto, los últimos precios tienen pesos más grandes que pueden responder al cambio del mercado más rápidamente.

Específicamente, esta estrategia construye una línea QMA rápida con 25 días y una línea QMA lenta con 29 días.

Análisis de ventajas

En comparación con la media móvil regular, esta estrategia tiene las siguientes ventajas:

  1. Responder más rápidamente al mercado, lo que le permite aprovechar las oportunidades a corto plazo.
  2. Combinar múltiples dimensiones, incluidos el precio y el volumen de operaciones, lo que lo hace más estable.
  3. Configuración de parámetros flexibles para adaptarse a los diferentes entornos del mercado.

Análisis de riesgos

Esta estrategia también tiene algunos riesgos:

  1. Frecuencia alta de operaciones a corto plazo, lo que puede dar lugar a un aumento de los costes de transacción y deslizamientos.
  2. Sobreajuste debido a la optimización excesiva de parámetros.
  3. El efecto del indicador puede verse comprometido cuando el volumen de negociación es insuficiente.

Los riesgos mencionados anteriormente podrían mitigarse ajustando adecuadamente la frecuencia, realizando estrictamente un análisis avanzado e incorporando otros indicadores.

Direcciones de mejora

Todavía hay margen para una mayor optimización de esta estrategia:

  1. Ajustar dinámicamente los parámetros de la QMA para que se adapte a la volatilidad del mercado.
  2. Filtrar las oportunidades comerciales con indicadores como la volatilidad y el volumen de operaciones.
  3. Añadir estrategias de stop loss para controlar pérdidas individuales.

Conclusión

En general, esta es una estrategia de negociación estable a corto plazo. En comparación con el promedio de precios único, su indicador puede reflejar mejor la relación oferta-demanda en el mercado. Con el ajuste adecuado de parámetros y la gestión de riesgos, esta estrategia puede operar de manera estable a largo plazo y obtener ganancias sólidas.


/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Brad VWMACD Strategy 2233", overlay=false, max_bars_back=500,default_qty_type=strategy.percent_of_equity,commission_type=strategy.commission.percent, commission_value=0.18, default_qty_value=100)

// === INPUT BACKTEST RANGE === 
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === INPUT SMA === 
//fastMA    = input(defval = 16, type = integer, title = "FastMA", minval = 1 )
//slowMA    = input(defval = 23, type = integer, title = "SlowMA", minval = 1)

fastMA    = input(defval = 25, title = "FastMA", minval = 1 )
slowMA    = input(defval = 29,  title = "SlowMA", minval = 1)

Long_period = slowMA
Short_period = fastMA
Smoothing_period = input(9, minval=1)
xLongMAVolPrice = ema(volume * close, Long_period) 
xLongMAVol = ema(volume, Long_period) 
xResLong = (xLongMAVolPrice * Long_period) / (xLongMAVol * Long_period)
xShortMAVolPrice = ema(volume * close, Short_period) 
xShortMAVol = ema(volume, Short_period) 
xResShort = (xShortMAVolPrice * Short_period) / (xShortMAVol * Short_period)
xVMACD = xResShort - xResLong
xVMACDSignal = ema(xVMACD, Smoothing_period)
nRes = xVMACD - xVMACDSignal
//plot(nRes*20+slowMA, color=blue, style = line )
//plot(3000, color=red, style = line )


// === SERIES SETUP ===

buy  = crossover( xVMACD,xVMACDSignal)     // buy when fastMA crosses over slowMA
sell = crossunder( xVMACD,xVMACDSignal)  // sell when fastMA crosses under slowMA


// === SERIES SETUP === 

//buy  = crossover(vwma(close, fastMA),7+vwma(close, slowMA))     // buy when fastMA crosses over slowMA
//sell = crossunder(vwma(close, fastMA),vwma(close, slowMA)-7)    // sell when fastMA crosses under slowMA

// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy)  // buy long when "within window of time" AND crossover
strategy.close("L", when = window() and sell)                // sell long when "within window of time" AND crossunder         

// === EXECUTION ===
strategy.entry("S", strategy.short, when = window() and sell)  // buy long when "within window of time" AND crossover
strategy.close("S", when = window() and buy)                // sell long when "within window of time" AND crossunder         

plotshape(window() and buy, style=shape.triangleup, color=green, text="up")
plotshape(window() and sell, style=shape.triangledown, color=red, text="down")
plot(xVMACD*100, title = 'FastMA', color = orange, linewidth = 2, style = line)  // plot FastMA
plot(xVMACDSignal*100, title = 'SlowMA', color = aqua, linewidth = 2, style = line)    // plot SlowMA


Más.