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

VWAP e Super Trend Buy/Sell Strategy

Autora:ChaoZhang, Data: 2024-06-03 10:45:14
Tags:VWAPATR

img

Resumo

Esta estratégia combina os indicadores VWAP (Volume Weighted Average Price) e Supertrend. Determina os sinais de compra e venda comparando a posição do preço em relação ao VWAP e a direção do indicador Supertrend. Um sinal de compra é gerado quando o preço cruza acima do VWAP e a Supertrend é positiva, enquanto um sinal de venda é gerado quando o preço cruza abaixo do VWAP e a Supertrend é negativa. A estratégia também evita gerar sinais duplicados registrando o estado do sinal anterior até que um sinal oposto apareça.

Princípio da estratégia

  1. Calcular o indicador VWAP utilizando a função ta.vwap, com comprimento VWAP personalizável.
  2. Calcular o indicador Supertrend utilizando a função ta.supertrend, com período ATR e multiplicador personalizáveis.
  3. Determine a condição de compra: o preço atual cruza acima do VWAP e a direção da Supertrend é positiva.
  4. Determine a condição de venda: o preço atual cruza abaixo do VWAP e a direção da Supertrend é negativa.
  5. Registre o estado do sinal anterior para evitar sinais consecutivos na mesma direção.

Vantagens da estratégia

  1. Combina os indicadores VWAP e Supertrend para uma avaliação mais abrangente das tendências do mercado e dos potenciais pontos de virada.
  2. O indicador VWAP considera o volume, refletindo melhor o verdadeiro movimento do mercado.
  3. O indicador Supertrend possui características de acompanhamento de tendências e de filtragem de oscilações, ajudando a capturar as principais tendências.
  4. O mecanismo para evitar a duplicação de sinais reduz a frequência de negociação e os custos de transação.

Riscos estratégicos

  1. Durante períodos de elevada volatilidade do mercado ou tendências pouco claras, a estratégia pode gerar mais sinais falsos.
  2. O desempenho da estratégia depende da escolha dos parâmetros VWAP e Supertrend; configurações diferentes podem dar origem a resultados diferentes.
  3. A estratégia não inclui a gestão do risco e o dimensionamento das posições, que devem ser combinados com outras medidas de controlo do risco em aplicações práticas.

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

  1. Introduzir um mecanismo de confirmação da tendência, como a utilização de médias móveis ou outros indicadores de tendência, para filtrar ainda mais os sinais.
  2. Otimizar a seleção de parâmetros através do backtesting dos dados históricos para encontrar a melhor combinação de comprimento VWAP, período ATR e multiplicador.
  3. Implementar medidas de gestão de riscos, tais como stop-loss e take-profit, para controlar o risco comercial individual.
  4. Considerar a incorporação de estratégias de gestão de fundos, tais como fração fixa ou critério Kelly, para otimizar o dimensionamento das posições.

Resumo

A estratégia VWAP e Supertrend Buy/Sell tem como objetivo capturar de forma abrangente as tendências do mercado e os pontos de virada potenciais, combinando dois tipos diferentes de indicadores. A lógica da estratégia é clara e fácil de implementar e otimizar. No entanto, o desempenho da estratégia depende da seleção de parâmetros e carece de medidas de gerenciamento de risco.


/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="VWAP and Super Trend Buy/Sell Strategy", shorttitle="VWAPST", overlay=true)


//===== VWAP =====
showVWAP = input.bool(title="Show VWAP", defval=true, group="VWAP")
VWAPSource = input.source(title="VWAP Source", defval=hl2, group="VWAP")
VWAPrice = ta.vwap(VWAPSource)
plot(showVWAP ? VWAPrice : na, color=color.teal, title="VWAP", linewidth=2)


//===== Super Trend =====
showST = input.bool(true, "Show SuperTrend Indicator", group="Super Trend")
Period = input.int(title="ATR Period", defval=10, group="Super Trend")
Multiplier = input.float(title="ATR Multiplier", defval=2.0, group="Super Trend")


// Super Trend ATR
Up = hl2 - (Multiplier * ta.atr(Period))
Dn = hl2 + (Multiplier * ta.atr(Period))
var float TUp = na
var float TDown = na
TUp := na(TUp[1]) ? Up : close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := na(TDown[1]) ? Dn : close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
var int Trend = na
Trend := na(Trend[1]) ? 1 : close > TDown[1] ? 1 : close < TUp[1] ? -1 : Trend[1]


Tsl = Trend == 1 ? TUp : TDown
linecolor = Trend == 1 ? color.green : color.red
plot(showST ? Tsl : na, color=linecolor, style=plot.style_line, linewidth=2, title="SuperTrend")


// Buy/Sell Conditions
var bool previousBuysignal = false
var bool previousSellsignal = false


buysignal = not previousBuysignal and Trend == 1 and close > VWAPrice
sellsignal = not previousSellsignal and Trend == -1 and close < VWAPrice


// Ensure the signals are not repetitive
if (buysignal)
    previousBuysignal := true
    previousSellsignal := false
else if (sellsignal)
    previousBuysignal := false
    previousSellsignal := true


// Execute buy and sell orders
if (buysignal)
    strategy.entry("Buy", strategy.long)
if (sellsignal)
    strategy.entry("Sell", strategy.short)


// Plot Buy/Sell Labels
//plotshape(buysignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.normal)
//plotshape(sellsignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.normal)


Relacionados

Mais.