Exponential moving average java
Eu tenho essencialmente uma matriz de valores como this. A matriz acima é simplificada demais, estou coletando 1 valor por milissegundo no meu código real e eu preciso processar a saída em um algoritmo que eu escrevi para encontrar o pico mais próximo antes de um ponto no tempo Meu A lógica falha porque no meu exemplo acima, 0 36 é o pico real, mas meu algoritmo olharia 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 é tomar esses valores E aplicar um algoritmo para eles que irá suavizar-los um pouco para que eu tenha mais linear valores ou seja, eu d como meus resultados para ser curvy, não jaggedy. I foi dito para aplicar um filtro exponencial de média móvel para os meus valores Como posso Fazer isso É muito difícil para mim ler equações matemáticas, eu lidar muito melhor com o código. Como posso processar valores em minha matriz, aplicando um cálculo de média móvel exponencial para até mesmo out. asked Feb 8 12 at 20 27.To computa Uma média móvel exponencial que você precisa para manter algum estado ao redor e Você precisa de um parâmetro de ajuste Isso chama para uma pequena classe supondo que você está usando o Java 5 ou posterior. Instantiar com o parâmetro de decadência que você quer pode ter ajuste deve estar entre 0 e 1 e, em seguida, use a média para filter. When ler uma página em alguns mathmatical Recorrência, tudo o que você realmente precisa saber quando transformá-lo em código é que os matemáticos gostam de escrever índices em matrizes e seqüências com subscritos Eles ve algumas outras notações, bem como, o que doesn t ajudar No entanto, o EMA é bastante simples, como você só precisa Para lembrar um valor antigo sem arrays de estado complicado required. answered Feb 8 12 at 20 42. TKKocheran Muito bonito Isn t it nice quando as coisas podem ser simples Se começar com uma nova seqüência, obter um novo averager Note que os primeiros termos no A seqüência média saltará em torno de um bit devido a efeitos de limite, 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 de média móvel para o averager e experimentar sem perturbar t Ele resto de seu programa muito Donal Fellows Feb 9 12 em 0 06.Eu estou tendo um tempo difícil entender suas perguntas, mas vou tentar responder anyway.1 Se o algoritmo encontrado 0 25 em vez de 0 36, então é errado É errado porque ele assume um aumento ou diminuição monotônico que está sempre subindo ou sempre indo para baixo A menos que você média TODOS os seus dados, seus pontos de dados --- como você apresentá-los --- são não-lineares Se você realmente deseja encontrar o máximo Valor 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 isto 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 segundos e primeiros números a segunda nova lista É a média de 1 4 e 1 5 terceira e segunda lista antiga a terceira lista nova a média de 1 5 e 1 4 quarto e terceiro, e assim por diante eu poderia Ter feito período de três ou quatro, ou n Observe como os dados são muito mais suave Uma boa maneira de ver as médias móveis no trabalho é ir para o Google Finance, selecione um estoque tentar Tesla Motors bastante volátil TSLA e clique em technicals na parte inferior da O gráfico Selecionar Média Móvel com um determinado período, e média móvel exponencial para comparar suas diferenças. A média móvel exponencial é apenas mais uma elaboração disto, mas pondera os dados mais antigos menos do que os novos dados esta é uma forma de polarizar o alisamento em direção à parte traseira Por favor, leia a entrada da Wikipedia. Então, isso é mais um comentário do que uma resposta, mas a pequena caixa de comentário foi apenas a pequena boa sorte. Se você está tendo problemas com a matemática, você poderia ir com uma simples média móvel em vez de exponencial Então A saída que você obtém seria o último x termos dividido por x pseudocódigo não testado. Note que você vai precisar para lidar com o início e fim partes dos dados uma vez que claramente você não pode média t os últimos 5 termos quando você está em seu ponto de dados 2 , a São formas mais eficientes de calcular essa soma média móvel - a mais antiga, mas isso é para obter o conceito do que está acontecendo em toda a gente. 8 de 12 em 20 41. Seu interior está iterando toda a matriz de modo que é por isso que você Sempre obter a mesma média de um para toda a matriz, você deve iterar de 0 para o número atual do exterior para instead. Your média móvel está sendo atualizado com base em j de seu interior para que significa que irá substituir valores anteriores cada novo loop , Este deve ser dentro do exterior para em vez do interno usando i como o índice. Você está dividindo a soma j para calcular médias, cada novo laço interno j você dividirá por 0 a primeira soma que eu acredito que você significou usar j 1 em vez disso, Index não é o mesmo que o comprimento atual. Dicas para solucionar problemas. Evite usar variáveis para arrays loop, você deve usar instead. For uma questão de reproduzir o problema que você poderia dar-nos o problema isolado, em vez de seu código atual ie. Imagine se o erro Está em suas entradas, como poderíamos Você realmente usou them. You está looping sobre todos os dados toda vez que você deve ter para int ji médiaLength i-averageLength 2 0 ji averageLength 2 j numDataPoints j ou algo semelhante para o innermost average. Also, movingAverage i sum j deve ser modificado Para lidar com o caso em que j é 0 Em particular, provavelmente deve ser movingAverage i sum averageLength e deve ser aplicado para o movingAverage i slot fora do loop de média. resposta Oct 4 13 at 20 42.Próximo tempo, tome os comentários sobre o Atribuição fora da questão antes de publicá-lo Mas desde que você parece muito novo nisso, pense sobre como você iria passar os dados, e fazê-lo fazer isso Você deve tentar certificar-se de cada loop está parando no ponto correto, e lembre-se Que se você parar quando não há mais números, como quando você está fazendo o loop interno e você só pode obter mais 3 números em vez de 4 o programa precisa parar também Certifique-se de que seu código está verificando this. answered Oct 4 13 At 20 56.Wit Em qualquer ponto A i na matriz de entrada A de comprimento N com 0 i N, que s simplesmente a média das entradas K anteriores da matriz, até e incluindo A i Se não houver K tais valores, então a média dos valores i 1 de A 0 até A i inclusive. Um pouco de pensamento irá mostrar-lhe que você don t necessidade de somar todos os valores de K cada vez Basta manter a soma e, quando Movendo para o próximo ponto esta é uma média móvel, subtrair o valor que está sendo substituído e adicionar o novo valor que irá substituí-lo. Durante os primeiros pontos K-1, você simplesmente adicionar o novo valor para a soma e aumentar o seu contador por 1.At qualquer ponto neste processo, a média móvel é a soma corrente dividida pelo valor de contagem atual. Respondido Oct 4 13 em 21 05. Em uma média móvel, você precisa ter algum tipo de tamanho de janela. Seu tamanho de janela é AverageLength, então ele será algo parecido com isto. O loop for começa nos dados atuais e volta a média Comprimento dados pontos e adiciona-los Você só terá uma média móvel quando você tem você tem quando você tem pontos de dados suficientes ea média será a soma dividida pelo comprimento médio. Nota não testado apenas sudo código, mas esta é a idéia. As EMAs de 12 e 26 dias são as médias de curto prazo mais populares, e as EMA de 12 e 26 dias são as médias de curto prazo mais populares. Eles são usados para criar indicadores como a divergência de média móvel convergência MACD eo oscilador PPO de preço em geral Em geral, os EMAs de 50 e 200 dias são usados como sinais de tendências de longo prazo. Traders que empregam análise técnica encontrar médias móveis muito úteis E perspicaz quando aplicado corretamente mas criam o havoc quando usados impropriamente ou são mal interpretados Todas as médias móveis usadas geralmente na análise técnica são, por sua própria natureza, indicadores retardados Conseqüentemente, as conclusões extraídas da aplicação de um avera movente Muitas vezes, no momento em que uma linha de indicadores de média móvel fez uma alteração para refletir uma mudança significativa no mercado, o ponto ótimo de entrada no mercado já foi Passado Um EMA serve para aliviar este dilema, em certa medida Porque o cálculo EMA coloca mais peso sobre os dados mais recentes, abraça a ação de 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 de negociação. Interpretando a 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 de indicador EMA também mostrará uma tendência de alta e vice-versa para uma tendência de baixo Um comerciante vigilante vai 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 nivelar e rever Se, a taxa de mudança da EMA de uma barra para a próxima vai começar a diminuir até que o tempo que a linha de indicador aplana ea taxa de mudança é zero. Por causa do efeito retardado, por este ponto, ou mesmo algumas barras antes , A ação do preço deveria já ter invertido. Portanto, segue-se que a observação de uma diminuição consistente da taxa de variação da EMA poderia ser usada como um indicador que pudesse contrariar o dilema causado pelo efeito retardado da mudança das médias dos usos da EMA. EMAs são comumente usados em conjunto com outros indicadores para confirmar movimentos significativos do mercado e para avaliar a sua validade Para os comerciantes que o comércio intraday e mercados em rápido movimento, a EMA é mais aplicável Muitas vezes os comerciantes usam EMAs para determinar um preconceito de negociação Por exemplo, EMA em um gráfico diário mostra uma forte tendência ascendente, estratégia de um comerciante intraday pode ser o comércio apenas a partir do lado longo em um gráfico intraday.
Comments
Post a Comment