A tendência do oscilador de vórtice seguindo a estratégia

Autora:ChaoZhang, Data: 2023-12-07 16:48:45
Tags:

img

Resumo

A estratégia de seguimento de tendências do Oscilador de Vórtice é uma estratégia de rastreamento de tendências baseada no Indicador de Vórtice.

Princípio da estratégia

O indicador de vórtice consiste em médias móveis de curto, médio e longo prazo de vários prazos. Especificamente, a estratégia usa médias móveis de 6 dias, 27 dias, 72 dias e 234 dias. A média móvel de curto prazo reflete a última tendência dos preços, enquanto a média móvel de longo prazo reflete a tendência de longo prazo. A lógica central do indicador é que quando a média móvel de curto prazo cruza acima da média móvel de longo prazo, indica que o ímpeto de alta está se fortalecendo e é hora de comprar.

A vantagem significativa do indicador de vórtice é que ele julga com precisão as tendências e efetivamente filtra o ruído do mercado. No entanto, sua reação não é sensível o suficiente para capturar pontos de virada em tempo hábil. Portanto, a estratégia incorpora uma média móvel de 6 dias mais sensível para construir um indicador de julgamento auxiliar. Compre quando o indicador de vórtice e o indicador auxiliar cruzam acima da linha zero e venda quando ambos os indicadores cruzam abaixo da linha zero. Isso forma uma lógica de confirmação múltipla em que o indicador de vórtice determina a direção e a força da tendência, enquanto o indicador auxiliar determina pontos de entrada e saída específicos, o que filtra sinais falsos enquanto melhora a sensibilidade das operações.

Análise das vantagens

A maior vantagem desta estratégia é a precisão do julgamento e sensibilidade das operações. A combinação do indicador Vortex e indicadores auxiliares alcança uma unidade orgânica do julgamento da tendência e determinação de pontos de entrada/saída específicos, evitando interferências entre si. O mecanismo de confirmação múltipla pode efetivamente filtrar o ruído do mercado e evitar negócios errados. Ao mesmo tempo, a adição do indicador auxiliar também garante a sensibilidade das operações da estratégia.

Em comparação com as estratégias de indicador único, a vantagem desta estratégia é que combina múltiplos indicadores para alcançar capacidades mais fortes na identificação e resposta às mudanças do mercado. Sob uma tendência principal inalterada, a estratégia pode alcançar lucros constantes. Quando as principais tendências mudam, a estratégia também pode responder rapidamente para reduzir as perdas.

Análise de riscos

Os principais riscos desta estratégia vêm de configurações inadequadas de parâmetros de indicadores e do impacto de eventos extremos. Os parâmetros das médias móveis precisam equilibrar a sensibilidade e a resistência à interferência de ruído.

Para mitigar esses riscos, os parâmetros devem ser otimizados e testados para estabilizar o desempenho do indicador. Também, preste muita atenção aos impactos do mercado de grandes eventos, pare as estratégias quando necessário para evitar erros durante períodos de volatilidade anormal. À medida que os preços tendem a cair, reduzir gradualmente as posições também é uma medida eficaz de preservação do capital.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros da média móvel para melhorar a resistência ao ruído e a sensibilidade do indicador.

  2. Adicionar mecanismos de stop loss: definir pontos de stop loss quando os preços quebram os principais níveis de suporte em direções desfavoráveis para evitar perdas adicionais.

  3. Incorporar outros juízos de indicadores para aumentar a estabilidade da estratégia, por exemplo, apenas tomando sinais quando os volumes de negociação se amplificam.

  4. Use diferentes conjuntos de parâmetros com base em diferentes estágios do mercado, por exemplo, parâmetros mais agressivos durante os mercados de alta e configurações mais estáveis em mercados de baixa.

Conclusão

A estratégia de seguimento de tendência do oscilador de vórtice combina com sucesso o julgamento e a execução da tendência através do indicador de vórtice, determinando a direção/força da tendência do preço, e uma média móvel sensível de curto prazo, identificando o momento específico de entrada/saída.


/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//swap strategy line for study line to enable backtesting
strategy(title="Vortex Ocillator" )
//study(title = "Vortex Oscillator", precision = 6)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2048, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

//vortex histogram
short_input = input(6, minval = 1)
long_input = input(27, minval = 1)
longer_input = input(72, minval = 1)
longest_input = input(234, minval = 1)

short = sma(close, short_input)
long = sma(close, long_input)
longer = sma(close, longer_input)
longest = sma(close, longest_input)

hist = short - long
longhist = short - longer
longesthist = short - longest

hist_fractal = input(3, minval = 0)
longhist_fractal = input(2, minval = 0)
longesthist_fractal = input(4, minval = 0)

vortexhist = avg((hist / hist_fractal), (longhist / longhist_fractal), (longesthist / longesthist_fractal))

crossover_calc = vortexhist > 0 and vortexhist[1] < 0
crossunder_calc = vortexhist < 0 and vortexhist[1] > 0

crossover2 = crossover(vortexhist, 0)
crossunder2 = crossunder(vortexhist, 0)

hist_color = hist > 0? fuchsia : purple
longhist_color = longhist > 0? olive : orange
longesthist_color = longesthist > 0? teal : blue
vortexhist_color = vortexhist >= 0? green : red

plot(longesthist, "Longest Ocillator", style = histogram, color = longesthist_color, transp = 5)
plot(longhist, "Longer Ocillator", style = histogram, color = longhist_color, transp = 30)
plot(hist, "Short Ocillator", style = histogram, color = hist_color, transp = 30)
plot(vortexhist, "Vortex Ocillator", style = columns, color = vortexhist_color, transp = 40)
plotshape(crossover_calc,title = "Crossover",location = location.bottom, style = shape.triangleup, size = size.small, color = green)
plotshape(crossunder_calc,title = "Crossunder",location = location.bottom, style = shape.triangledown, size = size.small, color = red)

//micro
micro_ema_length = input(6,"Micro EMA Length")
micro = ema(vortexhist, micro_ema_length)
plot(micro, title = "micro", linewidth = 1, color = white)
microup = crossover(vortexhist, micro)
microdown = crossunder(vortexhist, micro)

//new micro signals
xmicroup = microup and vortexhist >=0 or crossover_calc
xmicrodown = microdown and vortexhist >=0 or crossunder_calc
plotshape(xmicroup, title = "Micro up", style = shape.circle, color = olive, location = location.bottom, size = size.tiny)
plotshape(xmicrodown, title = "Micro down", style = shape.circle, color = fuchsia, location = location.bottom, size = size.tiny)

//optional strategy options for backtesting, comment out the alertcondition rows and swap the top study row for the strategy row to compile as strategy
if testPeriod()
    strategy.entry("buy", true, 1, when = xmicroup, limit = low)
if testPeriod()
    strategy.close("buy", when = xmicrodown)

   

//if (xmicroup)
    //strategy.entry("My Long Entry Id", strategy.long)
//if (xmicroup)
    //strategy.exit("My Short Exit Id", "My Short Entry Id")
//if (xmicrodown)
    //strategy.exit("My Long Exit Id", "My Long Entry Id")

  




Mais.