Eu essencialmente tenho uma série de valores como este: a matriz acima é simplificada demais, estou coletando 1 valor por milissegundo em 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. Respondido em 8 de fevereiro às 20:41 Sua resposta 2016 Troca de pilha, médias movidas incorridas: o básico Ao longo dos anos, os técnicos encontraram dois problemas com a média móvel simples. O primeiro problema reside no prazo da média móvel (MA). A maioria dos analistas técnicos acredita que a ação de preço. O preço das ações de abertura ou fechamento, não é suficiente para depender para prever corretamente comprar ou vender sinais da ação de cruzamento de MAs. Para resolver este problema, os analistas agora atribuem mais peso aos dados de preços mais recentes usando a média móvel suavemente exponencial (EMA). (Saiba mais em Explorando a Média de Movimento Exponencialmente Pesada). Exemplo Por exemplo, usando um MA de 10 dias, um analista tomaria o preço de fechamento do 10º dia e multiplicaria esse número por 10, o nono dia por nove, o oitavo Dia por oito e assim por diante para o primeiro do MA. Uma vez que o total foi determinado, o analista dividiria o número pela adição dos multiplicadores. Se você adicionar os multiplicadores do exemplo MA de 10 dias, o número é 55. Esse indicador é conhecido como a média móvel ponderada linearmente. (Para leitura relacionada, verifique as Médias móveis simples, faça as tendências se destacarem.) Muitos técnicos são crentes firmes na média móvel suavemente exponencial (EMA). Este indicador foi explicado de muitas maneiras diferentes que confunde estudantes e investidores. Talvez a melhor explicação venha de John J. Murphys Análise Técnica dos Mercados Financeiros (publicado pelo New York Institute of Finance, 1999): a média móvel suavemente exponencial aborda os dois problemas associados à média móvel simples. Primeiro, a média exponencialmente suavizada atribui um peso maior aos dados mais recentes. Portanto, é uma média móvel ponderada. Mas, enquanto atribui menor importância aos dados do preço passado, ele inclui no cálculo de todos os dados da vida útil do instrumento. Além disso, o usuário pode ajustar a ponderação para dar maior ou menor peso ao preço dos dias mais recentes, que é adicionado a uma porcentagem do valor dos dias anteriores. A soma de ambos os valores percentuais é de até 100. Por exemplo, o preço dos últimos dias pode ser atribuído a um peso de 10 (.10), que é adicionado aos dias anteriores com peso de 90 (.90). Isso dá o último dia 10 da ponderação total. Este seria o equivalente a uma média de 20 dias, ao dar ao preço dos últimos dias um valor menor de 5 (0,05). Figura 1: Média de Movimento Suavemente Exagerada O gráfico acima mostra o Índice Composto Nasdaq desde a primeira semana em agosto de 2000 até 1º de junho de 2001. Como você pode ver claramente, o EMA, que neste caso está usando os dados de preço de fechamento ao longo de um Período de nove dias, tem sinais de venda definitivos no 8 de setembro (marcado por uma seta para baixo preta). Este foi o dia em que o índice caiu abaixo do nível de 4.000. A segunda seta preta mostra outra perna para baixo que os técnicos estavam realmente esperando. A Nasdaq não conseguiu gerar volume e interesse suficientes dos investidores de varejo para quebrar a marca de 3.000. Ele então mergulhou de novo para baixo em 1619.58 em 4 de abril. A tendência de alta de 12 de abril é marcada por uma seta. Aqui, o índice fechou em 1.961,46, e os técnicos começaram a ver os gerentes de fundos institucionais começar a retirar algumas pechinchas como a Cisco, a Microsoft e algumas das questões relacionadas à energia. (Leia nossos artigos relacionados: Envelopes médios móveis: refinando uma ferramenta de troca popular e um salto médio em movimento).
No comments:
Post a Comment