Tendência de seguir uma estratégia baseada em médias móveis

Autora:ChaoZhang, Data: 2023-11-27 15:57:15
Tags:

img

Resumo

Esta é uma estratégia de seguimento de tendências baseada em médias móveis. Utiliza o indicador Ichimoku Cloud para determinar a direção da tendência combinada com a média móvel de 200 dias para filtrar sinais, acompanhando assim a tendência.

Princípio da estratégia

A estratégia usa principalmente a linha de conversão e a linha de base da Ichimoku Cloud para julgar a direção da tendência. A linha de conversão é a média de preço mediana de 9 dias e a linha de base é a média de preço mediana de 26 dias. Um sinal de compra é gerado quando a linha de conversão cruza acima da linha de base e um sinal de venda quando cruza abaixo.

A estratégia também emprega a média móvel de 200 dias para filtrar sinais. Somente quando o preço de fechamento estiver acima da linha de 200 dias, um sinal de compra será acionado. Isso filtra a maioria dos sinais falsos.

No lado da saída, a estratégia usa simplesmente a linha de conversão que cruza abaixo da linha de base como sinal de encerramento.

Análise das vantagens

A estratégia combina o indicador de julgamento de tendências Ichimoku Cloud e o indicador de filtragem de tendências de longo prazo linha de 200 dias, que pode efetivamente rastrear tendências e filtrar a maioria dos sinais falsos.

Em comparação com o uso exclusivo de médias móveis, esta estratégia pode capturar melhor os pontos de virada da tendência e ajustar as posições em tempo hábil.

Análise de riscos

A estratégia depende principalmente da Nuvem Ichimoku para determinar a direção da tendência, que também pode gerar sinais falsos.

Além disso, configurações incorretas de parâmetros também podem levar a um desempenho estratégico ruim. Se o parâmetro da linha de conversão for muito curto, sinais falsos são facilmente formados; se o parâmetro da linha de base for muito longo, o efeito de rastreamento se deteriora.

Orientações de otimização

Considere incorporar outros indicadores para melhorar a qualidade do sinal, como o indicador KDJ para filtrar sinais em áreas de sobrecompra/supervenda.

No lado do parâmetro, teste mais combinações, como ajustar o parâmetro da linha de conversão para 5 ou 7 dias para sinais de negociação mais sensíveis.

Além disso, considere desativar a estratégia em determinados ambientes voláteis para evitar o impacto de oscilações selvagens.

Conclusão

A estratégia integra as vantagens do julgamento de tendências e dos indicadores de filtragem de longo prazo, que podem rastrear efetivamente as tendências de médio e longo prazo. Enquanto isso, as configurações de parâmetros e as medidas de controle de risco também precisam de otimização contínua para reduzir sinais falsos e os impactos das flutuações.


/*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)





Mais.