Estratégias de acompanhamento de tendências baseadas em médias móveis


Data de criação: 2023-11-27 15:57:15 última modificação: 2023-11-27 15:57:15
cópia: 0 Cliques: 565
1
focar em
1617
Seguidores

Estratégias de acompanhamento de tendências baseadas em médias móveis

Visão geral

A estratégia é uma estratégia de rastreamento de tendências baseada na linha de equilíbrio. Ela usa o indicador de gráfico da nuvem de Ichimoku para determinar a direção da tendência, combinando o sinal de filtragem da média móvel de 200 dias para realizar o rastreamento de tendências.

Princípio da estratégia

A estratégia usa principalmente a linha de conversão e a linha de base de um gráfico de nuvem para determinar a direção da tendência. A linha de conversão é a média do preço médio dos últimos 9 dias, e a linha de base é a média do preço médio dos últimos 26 dias. Quando a linha de conversão atravessa a linha de base, é um sinal de compra, e a passagem abaixo é um sinal de venda.

A estratégia também usa a média móvel de 200 dias para filtrar os sinais. O sinal de compra só é produzido quando o preço de fechamento está acima da linha de 200 dias. Isso pode filtrar a maioria dos sinais falsos.

Na saída, a estratégia é simples: use a linha de base abaixo da linha de base como sinal de equilíbrio.

Análise de vantagens

Esta estratégia combina o indicador de tendência do indicador de uma nuvem e o indicador de filtragem de tendência de longo prazo da linha de 200 dias, para rastrear a tendência com eficácia e filtrar a maioria dos falsos sinais. O uso de parâmetros como a média média pode reduzir o impacto na linha média devido à flutuação anormal dos preços.

Em comparação com o uso de indicadores como as médias móveis, a estratégia pode capturar melhor os pontos de mudança de tendência e, assim, ajustar a posição em tempo hábil. Esta é a sua maior vantagem.

Análise de Riscos

A estratégia depende principalmente do indicador de um gráfico de nuvens para determinar a direção da tendência, enquanto o próprio gráfico de nuvens também produz um sinal de erro. Se o julgamento for distorcido, a estratégia poderá causar prejuízos.

Além disso, a configuração inadequada dos parâmetros também pode levar a um mau desempenho da estratégia. Se os parâmetros da linha de conversão forem muito curtos, é fácil formar um falso sinal; Se os parâmetros da linha de base forem muito longos, o efeito de rastreamento será ruim.

Direção de otimização

Pode-se considerar a combinação de outros indicadores para melhorar a qualidade do sinal, como o indicador KDJ para determinar a região de sobrevenda para filtrar o sinal de sobrevenda. Ou usar o indicador ATR para definir o ponto de parada.

Pode-se testar mais combinações de parâmetros, como ajustar o parâmetro da linha de conversão em 5 ou 7 dias, para obter um sinal de negociação mais sensível. Também pode-se testar a modificação do parâmetro da linha de base em cerca de 20 dias, para equilibrar o efeito de rastreamento.

Além disso, pode-se considerar o fechamento de uma estratégia em um ambiente de volatilidade específica para evitar o impacto de um cenário de alta.

Resumir

A estratégia integra os benefícios do discernimento de tendências e dos indicadores de filtragem a longo prazo, permitindo um acompanhamento eficaz de tendências a médio e longo prazo. Ao mesmo tempo, a configuração de parâmetros e as medidas de controle de vento também precisam de otimização contínua para reduzir os efeitos de sinais errados e oscilações.

Código-fonte da estratégia
/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="TK Cross > EMA200 Strat",  overlay=true)

ema200 = ema(close, 200)
conversionPeriods = input(9, minval=1, title="Conversion Line Periods"),
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"),
displacement = input(26, minval=1, title="Displacement")

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

plot(conversionLine, color=#0496ff, title="Conversion Line", linewidth=3)
plot(baseLine, color=#991515, title="Base Line", linewidth=3)
plot(close, offset = -displacement, color=#459915, title="Lagging Span")

p1 = plot(leadLine1, offset = displacement, color=green,
 title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red, 
 title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)

plot(ema200, color=purple, linewidth=4,title='ema200')
strategy.initial_capital = 50000

strategy.entry('tkcross', strategy.long, strategy.initial_capital / close, when=conversionLine>baseLine and close > ema200)
strategy.close('tkcross', when=conversionLine<baseLine)


start = input(2, minval=0, maxval=10, title="Start - Default = 2 - Multiplied by .01")
increment = input(2, minval=0, maxval=10, title="Step Setting (Sensitivity) - Default = 2 - Multiplied by .01" )
maximum = input(2, minval=1, maxval=10, title="Maximum Step (Sensitivity) - Default = 2 - Multiplied by .10")
sus = input(true, "Show Up Trending Parabolic Sar")
sds = input(true, "Show Down Trending Parabolic Sar")
disc = input(false, title="Start and Step settings are *.01 so 2 = .02 etc, Maximum Step is *.10 so 2 = .2")
//"------Step Setting Definition------"
//"A higher step moves SAR closer to the price action, which makes a reversal more likely."
//"The indicator will reverse too often if the step is set too high."

//"------Maximum Step Definition-----")
//"The sensitivity of the indicator can also be adjusted using the Maximum Step."
//"While the Maximum Step can influence sensitivity, the Step carries more weight"
//"because it sets the incremental rate-of-increase as the trend develops"

startCalc = start * .01
incrementCalc = increment * .01
maximumCalc = maximum * .10

sarUp = sar(startCalc, incrementCalc, maximumCalc)
sarDown = sar(startCalc, incrementCalc, maximumCalc)

colUp = close >= sarDown ? lime : na
colDown = close <= sarUp ? red : na

plot(sus and sarUp ? sarUp : na, title="Up Trending SAR", style=circles, linewidth=3,color=colUp)
plot(sds and sarDown ? sarDown : na, title="Up Trending SAR", style=circles, linewidth=3,color=colDown)