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.
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.
En comparación con la media móvil regular, esta estrategia tiene las siguientes ventajas:
Esta estrategia también tiene algunos riesgos:
Los riesgos mencionados anteriormente podrían mitigarse ajustando adecuadamente la frecuencia, realizando estrictamente un análisis avanzado e incorporando otros indicadores.
Todavía hay margen para una mayor optimización de esta estrategia:
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