
Esta estratégia chama-seA estratégia de cruzamento de médias móveis quantitativas ponderadas(Weighted Quantitative Moving Average Crossover Strategy), cuja ideia básica é combinar vários indicadores, como preço, volume de transação, para projetar linhas rápidas e lentas, e enviar sinais de compra e venda quando ocorrem golden forks e dead forks.
O indicador central desta estratégia é a média móvel quantitativa (MMA). A MMA mede a direção da tendência calculando a média ponderada dos preços ao longo de um período de tempo. A diferença entre ela e a média móvel comum é que a média ponderada dos preços é a média ponderada dos preços.*O volume de transações (ou volume de transações) diminui com o tempo. Assim, os preços mais recentes têm mais peso e podem responder mais rapidamente às mudanças no mercado.
Especificamente, esta estratégia constrói uma linha de QMA rápida e uma linha de QMA lenta. O parâmetro da linha rápida é definido como 25 dias e o parâmetro da linha lenta como 29 dias. Um sinal de compra é gerado quando a linha rápida atravessa a linha lenta de baixo para cima e um sinal de venda quando a linha rápida atravessa a linha lenta de cima para baixo.
Em comparação com a média móvel normal, esta estratégia tem as seguintes vantagens:
A estratégia também apresenta alguns riscos:
Os riscos acima mencionados podem ser mitigados por meio de ajustes adequados na frequência dos parâmetros, análise rigorosa do walk forward e combinação com outros indicadores.
A estratégia ainda tem espaço para ser melhorada:
Esta estratégia é, em geral, uma estratégia de negociação de curto prazo com melhor estabilidade. Em comparação com uma única média de preços, seus indicadores refletem melhor a relação de oferta e demanda do mercado. Com a introdução de ajustes de parâmetros e meios de controle de risco, esta estratégia pode operar com estabilidade a longo prazo e obter bons retornos.
/*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