Monday 24 July 2017

Exponencial Moving Average Code Example


Média de Mudança Exponencial A Média de Movimento Exponencial A Média de Movimento Exponencial difere de uma Média de Movimento Simples, tanto pelo método de cálculo quanto pela forma como os preços são ponderados. A média móvel exponencial (encurtada para as EMA iniciais) é efetivamente uma média móvel ponderada. Com a EMA, a ponderação é tal que os preços dos dias recentes recebem mais peso do que os preços mais antigos. A teoria por trás disso é que os preços mais recentes são considerados mais importantes do que os preços mais antigos, particularmente porque uma média simples de longo prazo (por exemplo, 200 dias) coloca igual peso em dados de preços com mais de 6 meses de idade e poderia ser pensado De um pouco fora de data. O Cálculo da EMA é um pouco mais complexo do que a Média de Movimento Simples, mas tem a vantagem de que não seja necessário manter um grande registro de dados que cobrem cada preço de fechamento nos últimos 200 dias (ou, no entanto, muitos dias estão sendo considerados). . Tudo o que você precisa é o EMA para o dia anterior e o preço de fechamento de hoje para calcular a nova Média de Movimento Exponencial. Calculando o Exponente Inicialmente, para o EMA, um expoente precisa ser calculado. Para começar, pegue o número de dias EMA que você deseja calcular e adicione um para o número de dias que você está considerando (por exemplo, para uma média móvel de 200 dias, adicione um para obter 201 como parte do cálculo). Bem, ligue para estes Days1. Então, para obter o Exponente, basta pegar o número 2 e dividi-lo por Days1. Por exemplo, o Exponente para uma média móvel de 200 dias seria: 2 201. O que equivale a 0,01 Cálculo Completo se a Média de Movimento Exponencial Uma vez que obtivemos o expoente, tudo o que precisamos agora são mais dois bits de informação que nos permitem realizar o cálculo completo . O primeiro é a média móvel exponente. Bem suponha que já conheçamos isso, pois teríamos calculado ontem. No entanto, se você já está ciente de ontem EMA, você pode começar calculando a média móvel simples para ontem e usando isso no lugar da EMA para o primeiro cálculo (ou seja, o cálculo de hoje) da EMA. Então, amanhã você pode usar o EMA que você calculou hoje, e assim por diante. A segunda informação que precisamos é o preço de fechamento de hoje. Vamos supor que queremos calcular a Média de Mudança Exponencial de 200 dias de hoje para uma ação ou estoque que tenha EMA anterior de 120 centavos (ou centavos) e um dia atual de fechamento de preço de 136 centavos. O cálculo completo é sempre o seguinte: Média de Mudança Exponencial de Hoje (preço atual de encerramento do dia x Exponente) (dias anteriores EMA x (1- Exponente)). Assim, usando nossos exemplos de números acima, o EMA de 200 dias de hoje seria: (136 x 0,01 ) (120 x (1- 0,01)) O que equivale a um EMA para hoje de 120.16.I essencialmente tem uma matriz de valores como este: a matriz acima é simplificada demais, estou coletando 1 valor por milissegundo no meu código real e preciso processar A saída em um algoritmo que escrevi para encontrar o pico mais próximo antes de um ponto no tempo. Minha lógica falha porque no meu exemplo acima, 0.36 é o pico real, mas meu algoritmo olhava para trás e veria o último número 0.25 como o pico, pois há uma diminuição para 0,24 antes dele. O objetivo é levar esses valores e aplicar um algoritmo para eles, que os suavizará um pouco para que eu tenha mais valores lineares. (Ie: Id como os meus resultados serem curvy, não jaggedy) Eu fui dito para aplicar um filtro exponencial de média móvel aos meus valores. Como posso fazer isso. É muito difícil para mim ler equações matemáticas, eu ligo muito melhor com o código. Como faço para processar valores na minha matriz, aplicando um cálculo exponencial da média móvel para os fazer sair 8 de fevereiro 12 às 20:27 Para calcular uma média móvel exponencial. Você precisa manter algum estado ao redor e você precisa de um parâmetro de ajuste. Isso exige uma pequena classe (supondo que você esteja usando o Java 5 ou posterior): Instantiate com o parâmetro de decaimento que você deseja (pode ter uma afinação deve estar entre 0 e 1) e depois use a média () para filtrar. Ao ler uma página sobre alguma recorrência matemática, tudo o que você realmente precisa saber ao transformá-lo em código é que os matemáticos gostam de escrever índices em matrizes e seqüências com subíndices. (Contudo, algumas outras notações, o que não ajuda.) No entanto, o EMA é bastante simples, pois você só precisa se lembrar de um valor antigo, não é necessário nenhum arrays de estados complicados. Respondeu 8 de fevereiro às 20:42 TKKocheran: praticamente. Não é bom quando as coisas podem ser simples (Se começar com uma nova seqüência, obtenha uma nova média). Observe que os primeiros termos na seqüência média saltarão em torno de um bit devido a efeitos de limites, mas você obtém aqueles com outras médias móveis também. No entanto, uma boa vantagem é que você pode envolver a lógica média móvel na média e experimentar sem perturbar demais o seu programa. Ndash Donal Fellows 9 de fevereiro às 0:06 Estou tendo dificuldade em entender suas perguntas, mas vou tentar responder de qualquer maneira. 1) Se o seu algoritmo encontrou 0,25 em vez de 0,36, então está errado. É errado porque assume um aumento ou diminuição monotônico (que sempre está subindo ou sempre está descendo). A menos que você tenha TODOS OS seus dados, seus pontos de dados --- como você os apresenta --- são não-lineares. Se você realmente quer encontrar o valor máximo entre dois pontos no tempo, então corte sua matriz de tmin para tmax e encontre o máximo desse subarray. 2) Agora, o conceito de médias móveis é muito simples: imagine que eu tenho a seguinte lista: 1.4, 1.5, 1.4, 1.5, 1.5. Eu posso suavizá-lo tomando a média de dois números: 1.45, 1.45, 1.45, 1.5. Observe que o primeiro número é a média de 1,5 e 1,4 (segundo e primeiro número), a segunda (nova lista) é a média de 1,4 e 1,5 (terceira e segunda lista antiga) a terceira (nova lista) a média de 1,5 e 1,4 (Quarto e terceiro), e assim por diante. Eu poderia ter feito período três ou quatro, ou n. Observe como os dados são muito mais suaves. Uma boa maneira de ver as médias móveis no trabalho é ir para o Google Finance, selecionar um estoque (tente Tesla Motors bastante volátil (TSLA)) e clique em técnicas na parte inferior do gráfico. Selecione a média móvel com um período determinado e uma média móvel exponencial para comparar suas diferenças. A média móvel exponencial é apenas uma outra elaboração deste, mas considera os dados anteriores menos do que os novos dados, é uma maneira de polarizar o alisamento na parte de trás. Leia a entrada da Wikipedia. Então, isso é mais um comentário do que uma resposta, mas a pequena caixa de comentários foi apenas pequena. Boa sorte. Se você estiver tendo problemas com a matemática, você poderia ir com uma média móvel simples em vez de exponencial. Então, a saída que você obtém seria os últimos x termos divididos por x. Pseudocódigo não testado: note que você precisará lidar com as partes de início e fim dos dados, pois claramente você não pode usar os 5 últimos termos quando estiver no seu segundo ponto de dados. Além disso, existem formas mais eficientes de calcular essa média móvel (soma sumária - a mais nova), mas é para obter o conceito do que está acontecendo. Respondeu 8 de fevereiro às 20:41 Sua resposta 2016 Stack Exchange, Inc

No comments:

Post a Comment