O recurso está a ser carregado... Carregamento...

VWAP-MACD-RSI Estratégia quantitativa de negociação multifator

Autora:ChaoZhang, Data: 2024-11-27 16:11:00
Tags:VWAPMACDRSITPSL

img

Resumo

Esta é uma estratégia quantitativa de negociação baseada em três indicadores técnicos: VWAP, MACD e RSI. A estratégia identifica oportunidades de negociação combinando sinais do Volume Weighted Average Price (VWAP), Moving Average Convergence Divergence (MACD) e Relative Strength Index (RSI).

Princípios de estratégia

A lógica central baseia-se na análise abrangente de três indicadores principais:

  1. O VWAP serve como linha de referência de tendência primária, com cruzamento de preços indicando potenciais alterações de tendência
  2. O histograma MACD confirma a força e a direcção da tendência, com valores positivos indicando tendências ascendentes e valores negativos indicando tendências descendentes
  3. O RSI identifica condições de mercado sobrecompradas ou sobrevendidas para evitar a entrada em níveis extremos

As condições de compra exigem:

  • Cruzamento dos preços acima do VWAP
  • Histograma MACD positivo
  • RSI abaixo do nível de sobrecompra

As condições de venda exigem:

  • Preços abaixo do VWAP
  • Histograma MACD negativo
  • RSI acima do nível de sobrevenda

Vantagens da estratégia

  1. A validação cruzada de múltiplos indicadores técnicos melhora a fiabilidade do sinal
  2. O VWAP incorpora um fator de volume para uma análise aprofundada do mercado
  3. O RSI filtra condições de mercado extremas, reduzindo os riscos de falha de ruptura
  4. A taxa de lucro baseada em percentagem e a taxa de stop-loss adaptam-se a diferentes intervalos de preços
  5. O dimensionamento das posições com base no capital próprio da conta permite uma gestão dinâmica das posições
  6. Lógica estratégica clara, fácil de compreender e manter

Riscos estratégicos

  1. Os mercados agitados podem gerar trocas frequentes, aumentando os custos de transação
  2. Indicadores múltiplos podem levar a sinais atrasados, afetando o tempo de entrada
  3. A taxa fixa de take-profit e stop-loss pode não corresponder a todas as condições de mercado
  4. A falta de consideração da volatilidade pode aumentar o risco durante períodos de alta volatilidade
  5. A ausência de filtragem da força da tendência pode gerar sinais excessivos em tendências fracas

Orientações para a otimização da estratégia

  1. Introduzir o ATR para ajustamento dinâmico dos níveis de take-profit e stop-loss
  2. Adicionar filtros de força de tendência para reduzir falsos sinais em mercados agitados
  3. Otimizar as configurações do período VWAP, considerar combinações de vários períodos VWAP
  4. Implementar um mecanismo de confirmação de volume para melhorar a fiabilidade do sinal de ruptura
  5. Considerar a adição de filtros de tempo para evitar a negociação durante períodos de baixa liquidez
  6. Implementar um mecanismo dinâmico de dimensionamento das posições com base nas condições de mercado

Resumo

Esta estratégia constrói um sistema de negociação relativamente completo, combinando três indicadores técnicos clássicos: VWAP, MACD e RSI. O projeto enfatiza a confiabilidade do sinal e a gestão de risco através de validação cruzada de múltiplos indicadores para melhorar a qualidade da negociação.


/*backtest
start: 2024-10-27 00:00:00
end: 2024-11-26 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("pbs", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input for take-profit and stop-loss
takeProfitPercent = input.float(0.5, title="Take Profit (%)", step=0.1) / 100
stopLossPercent = input.float(0.25, title="Stop Loss (%)", step=0.1) / 100


macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalLength = input.int(9, title="MACD Signal Length")


rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought Level", step=1)
rsiOversold = input.int(30, title="RSI Oversold Level", step=1)


vwap = ta.vwap(close)


[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
macdHistogram = macdLine - signalLine

rsi = ta.rsi(close, rsiLength)


plot(vwap, color=color.purple, linewidth=2, title="VWAP")
hline(rsiOverbought, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(rsiOversold, "Oversold", color=color.green, linestyle=hline.style_dotted)
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")

// Buy Condition
longCondition = ta.crossover(close, vwap) and macdHistogram > 0 and rsi < rsiOverbought

// Sell Condition
shortCondition = ta.crossunder(close, vwap) and macdHistogram < 0 and rsi > rsiOversold

// Execute trades based on conditions
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=close * (1 + takeProfitPercent), stop=close * (1 - stopLossPercent))

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Short", limit=close * (1 - takeProfitPercent), stop=close * (1 + stopLossPercent))

// Plot Buy/Sell Signals
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")

Relacionados

Mais.