Friday 17 November 2017

Atualização Média Móvel Exponencial


Eu essencialmente tenho uma série de valores como este: a matriz acima é simplificada, 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 para 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 lido 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, solicitado 8 de fevereiro à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): instanciar com o parâmetro de decaimento desejado (pode ser necessário que a sintonização esteja entre 0 e 1) e depois use a média () para filtrar. Ao ler uma página sobre uma 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 arrays e seqüências com subscritos. (Eles também têm 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 da 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 incomodar 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 é errado. É errado porque assume um aumento ou diminuição monotônico (que sempre está subindo ou sempre está indo para baixo). A menos que você tenha média de 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 suavizar, levando 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 a 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 mais antigos inferiores aos novos dados, esta é uma maneira de polarizar o alisamento para 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 término dos dados, pois claramente você não pode significar os últimos 5 termos quando estiver no seu segundo ponto de dados. Além disso, existem maneiras mais eficientes de calcular essa média móvel (soma sumária - a mais nova), mas é para obter o conceito de o que está acontecendo. Respondeu 8 de fevereiro às 20:41 Sua resposta 2017 Stack Exchange, Inc A média móvel expressiva em T-SQL As médias móveis exponentes são semelhantes às médias móveis ponderadas, na medida em que atribuem menos peso às mudanças há muito tempo e mais peso às mudanças recentes. As médias móveis ponderadas são lineares, mas as médias móveis exponenciais são exponenciais. Ou seja, o peso pode ser expresso como uma curva: existe uma ótima maneira de calcular as médias móveis exponenciais no T-SQL usando um recurso indocumentado sobre variáveis ​​e totais em execução no SQL Server. Nesta publicação no blog, vou mostrar como usar esse método para calcular a média móvel exponencial em T-SQL, mas também apresentarei um método que esteja usando recursos padrão no SQL Server. Infelizmente, isso significa usar um loop. Nos exemplos, calculo uma média móvel exponencial de 9 dias. Os exemplos utilizam o banco de dados TAdb. Um script para criar o TAdb pode ser encontrado aqui. Média móvel exponencial (EMA): Método de execução de totais A teoria por trás das funcionalidades totais em execução em atualizações é descrita em detalhes por Jeff Moden em seu artigo, Resolvendo os Problemas de Ordem Total e Ordinal. Outros recursos que descrevem o uso desse método para calcular EMA são as postagens do blog Calculando as médias móveis com o T-SQL por Gabriel Priester e o fórum Exponential Moving Average Challenge. Ambos no SQL Server Central. Basicamente, no T-SQL você pode atualizar variáveis, bem como colunas em uma declaração de atualização. As atualizações são feitas linha a linha internamente pelo SQL Server. Esse comportamento de linha a linha é o que torna o cálculo de um total executável possível. Este exemplo mostra como funciona: Observe que 8220ColumnRunningTotal8221 é um total executado de 8220ColumnToSum8221. Usando este método, podemos calcular EMA9 com este T-SQL: o cálculo de EMA é bastante simples. Usamos a linha atual e a anterior, mas com mais peso para a linha atual. O peso é calculado pela fórmula 2 (19), onde 822098221 é o parâmetro para o comprimento da EMA. Para calcular EMA9 para a linha 10 acima, o cálculo é: neste caso, a linha atual obtém 20 do peso (2 (19) 0,2) e a linha anterior recebe 80 do peso (1-2 (19) 0,8). Você encontra este cálculo na declaração acima na instrução CASE: Média de Movimento Exponencial (EMA): Método de Looping Tanto quanto eu sei, exceto o método de execução de totais descrito acima, não há como calcular EMA usando uma instrução SQL baseada em conjunto . Portanto, o T-SQL abaixo está usando um loop while para calcular EMA9: os resultados são os mesmos que no exemplo de totais em execução acima. Desempenho Como esperado, a versão de totais em execução baseada em conjunto é muito mais rápida do que a versão do loop. Na minha máquina, a solução baseada em conjunto era de cerca de 300 ms, em comparação com cerca de 1200 com a versão do loop. A versão de loop está mais em conformidade com os padrões SQL, no entanto. Portanto, a escolha entre os métodos depende do que seja o mais importante para você, desempenho ou padrões. A média móvel exponencial pode ser usada na análise de tendências, como ocorre com os outros tipos de médias móveis, média movente simples (SMA) e média móvel ponderada (WMA). Existem também outros cálculos em análises técnicas que utilizam o EMA, MACD, por exemplo. Esta publicação no blog faz parte de uma série sobre análise técnica, TA, no SQL Server. Veja as outras publicações aqui. Publicado por Tomas Lind Tomas Lind - Serviços de consultoria como SQL Server DBA e Desenvolvedor de banco de dados em High Coast Database Solutions AB. Média móvel expressiva - EMA BREAKING DOWN Média móvel exponencial - EMA Os EMA de 12 e 26 dias são os mais populares a curto prazo Médias, e eles são usados ​​para criar indicadores como a divergência de convergência média móvel (MACD) eo oscilador de preço percentual (PPO). Em geral, as EMA de 50 e 200 dias são usadas como sinais de tendências a longo prazo. Os comerciantes que empregam análises técnicas consideram que as médias móveis são muito úteis e perspicaz quando aplicadas corretamente, mas criam estragos quando usadas incorretamente ou são mal interpretadas. Todas as médias móveis comumente usadas na análise técnica são, por sua própria natureza, indicadores de atraso. Conseqüentemente, as conclusões extraídas da aplicação de uma média móvel a um gráfico de mercado específico devem ser para confirmar um movimento de mercado ou para indicar sua força. Muitas vezes, no momento em que uma linha de indicador de média móvel fez uma mudança para refletir um movimento significativo no mercado, o ponto ótimo de entrada no mercado já passou. Um EMA serve para aliviar esse dilema até certo ponto. Como o cálculo EMA coloca mais peso sobre os dados mais recentes, ele abraça a ação do preço um pouco mais apertado e, portanto, reage mais rápido. Isso é desejável quando um EMA é usado para derivar um sinal de entrada comercial. Interpretando o EMA Como todos os indicadores de média móvel, eles são muito mais adequados para mercados de tendências. Quando o mercado está em uma tendência de alta forte e sustentada. A linha indicadora EMA também mostrará uma tendência de alta e vice-versa para uma tendência descendente. Um comerciante vigilante não só prestará atenção à direção da linha EMA, mas também a relação da taxa de mudança de uma barra para a próxima. Por exemplo, como a ação de preço de uma forte tendência de alta começa a achatar e reverter, a taxa de troca de EMAs de uma barra para a próxima começará a diminuir até que a linha do indicador aplique e a taxa de mudança seja zero. Devido ao efeito de atraso, até este ponto, ou mesmo algumas barras anteriores, a ação de preço já deveria ter sido revertida. Portanto, segue que a observação de uma diminuição consistente na taxa de mudança da EMA poderia ser usada como um indicador que poderia contrariar ainda mais o dilema causado pelo efeito de atraso das médias móveis. Os usos comuns das EMA EMAs são comumente usados ​​em conjunto com outros indicadores para confirmar movimentos significativos no mercado e avaliar sua validade. Para os comerciantes que comercializam mercados intradía e de rápido movimento, o EMA é mais aplicável. Muitas vezes, os comerciantes usam EMAs para determinar um viés de negociação. Por exemplo, se um EMA em um gráfico diário mostra uma forte tendência ascendente, uma estratégia de comerciantes intradía pode ser trocar apenas do lado longo em um gráfico intradía.

No comments:

Post a Comment