
A estratégia de acompanhamento de tendências do oscilador de turbilhões é uma estratégia de acompanhamento de tendências baseada em indicadores de turbilhões. Ela utiliza médias móveis de vários períodos diferentes para construir indicadores de turbilhões, identificar tendências potenciais de preços e combinar médias móveis de períodos mais curtos como julgamento auxiliar para realizar operações de acompanhamento de tendências de baixo risco.
O indicador central da estratégia é o indicador de vórtice. O indicador de vórtice é composto por médias móveis de curto, médio e longo prazo de vários períodos diferentes. Concretamente, a estratégia usa médias móveis de quatro períodos de 6, 27, 72 e 234 dias. A média móvel de curto prazo reflete as tendências mais recentes dos preços e a média móvel de longo prazo reflete a tendência de longo prazo dos preços.
O indicador de turbilhão tem vantagens significativas em ser preciso na determinação de tendências e filtrar efetivamente o ruído do mercado. Mas sua reação não é sensível o suficiente para capturar os pontos de inflexão em tempo hábil. Portanto, a estratégia adicionou uma média móvel de 6 dias mais sensível para construir um indicador de julgamento auxiliar.
A maior vantagem da estratégia é a precisão do julgamento e a sensibilidade à operação. A combinação de indicadores de turbilhão e indicadores auxiliares permite a unificação orgânica do julgamento de tendências e da identificação de pontos de venda e venda específicos, além de evitar a interferência entre as funções das partes. O mecanismo de confirmação múltipla pode filtrar efetivamente o ruído do mercado e evitar operações erradas.
Em comparação com a estratégia de um único indicador, a estratégia utiliza a combinação de vários indicadores e é mais capaz de identificar e responder às mudanças no mercado. A estratégia pode obter lucros estáveis quando a tendência principal não muda; Quando a tendência principal muda, a estratégia também pode responder rapidamente e reduzir os prejuízos.
O principal risco desta estratégia é o efeito de um parâmetro de indicador mal configurado e de um evento inesperado. A configuração de um parâmetro de média móvel requer um equilíbrio entre sensibilidade e capacidade de resistir à interferência de ruído, o que pode levar a um comportamento anormal da estratégia. Além disso, um evento inesperado importante pode causar uma forte flutuação dos preços, invalidação do indicador e, consequentemente, negociações erradas.
Para reduzir esses riscos, é recomendável otimizar a combinação de parâmetros e fazer um retrospecto para que o desempenho do indicador seja mais estável. Além disso, é necessário prestar atenção ao impacto do mercado causado por eventos importantes, suspender a estratégia, se necessário, e evitar erros de operação em períodos de flutuação anormal.
A estratégia pode ser melhorada em vários aspectos:
Otimizar os parâmetros de média móvel, aumentar a resistência ao interferência e a sensibilidade de operação dos indicadores. Pode experimentar combinações de diferentes parâmetros de comprimento, escolhendo indicadores suaves e sensíveis.
Aumentar o mecanismo de parada de perda. Quando o preço ultrapassa o suporte crítico na direção negativa, configure um ponto de parada para evitar mais perdas.
Em combinação com outros indicadores de julgamento, aumenta a estabilidade da estratégia. Por exemplo, a adição de indicadores de volume de transação, que só produzem sinais de negociação em caso de aumento do volume de transação.
Diferentes combinações de parâmetros são usados em diferentes fases do mercado. Por exemplo, um parâmetro mais positivo é usado em um mercado de alta e um parâmetro mais estável é usado em um mercado de baixa.
A estratégia de rastreamento de tendências do turbilhão de turbilhão, através da utilização de indicadores de turbilhão para determinar a direção e a intensidade da tendência de preços, e auxiliada por médias móveis de curto prazo mais sensíveis para determinar o momento específico de compra e venda. A estratégia combina com sucesso os dois níveis de julgamento de tendências e execução de negociações, garantindo a estabilidade da operação e aumentando a flexibilidade da estratégia.
/*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")