
Esta estrategia se llamaLas estrategias de cruce de medias móviles cuantitativas ponderadas(Weighted Quantitative Moving Average Crossover Strategy), la idea básica es combinar varios indicadores como el precio, el volumen de transacciones, diseñar líneas rápidas y lentas, y enviar señales de compra y venta cuando ocurren horquillas doradas y horquillas muertas.
El indicador central de esta estrategia es el promedio móvil cuantitativo. El QMA mide la dirección de la tendencia mediante el cálculo de un promedio ponderado de precios durante un período de tiempo. Se diferencia del promedio móvil ordinario en que el peso de los precios es igual al peso del precio.*El volumen de transacciones (volumen de transacciones) disminuye con el tiempo. De esta manera, los precios más recientes tienen más peso y se puede responder más rápidamente a los cambios en el mercado.
En concreto, esta estrategia construye una línea de QMA rápida y una línea de QMA lenta. El parámetro de la línea rápida está establecido en 25 días y el parámetro de la línea lenta en 29 días. Se genera una señal de compra cuando la línea rápida atraviesa la línea lenta desde abajo; se genera una señal de venta cuando la línea rápida atraviesa la línea lenta desde arriba.
La estrategia tiene las siguientes ventajas en comparación con la media móvil normal:
La estrategia también tiene sus riesgos:
El riesgo puede mitigarse mediante un ajuste adecuado de la frecuencia de los parámetros, un análisis riguroso de la marcha hacia adelante y la combinación de otros indicadores.
La estrategia aún tiene espacio para ser mejorada:
En general, esta estrategia es una estrategia de negociación a corto plazo que tiene una mejor estabilidad. En comparación con el promedio de un solo precio, sus indicadores reflejan mejor la relación entre la oferta y la demanda en el mercado. Mediante el ajuste de los parámetros y la introducción de medios de control de riesgo, esta estrategia puede operar de manera estable y obtener buenos rendimientos a largo plazo.
/*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