Thursday 28 September 2017

Exponencial Moving Average Dsp


Média móvel exponencial - EMA BREAKING DOWN Média móvel exponencial - EMA As EMAs de 12 e 26 dias são as médias de curto prazo mais populares e são usadas 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 intradiários pode ser trocar apenas pelo lado longo em um gráfico intradía. A média móvel exponencial é um tipo de filtro IIR que é fácil de implementar em C e usa recursos mínimos. Ao contrário de uma média móvel simples, não requer uma memória RAM para armazenar amostras anteriores. Apenas tem que armazenar um valor (a média anterior). Uma média móvel exponencial é expressa como a seguinte equação: avgn (em alfa) avgn-1 (1-alfa). Implementar esta equação usando matemática de ponto flutuante é direto, mas usar variáveis ​​de ponto fixo é um pouco complicado. O trecho de código aqui usa inteiros assinados de 32 bits para a média e os valores de entrada. Os valores intermediários precisam usar matemática de 64 bits para evitar erros de transbordamento. Os valores alfa próximos a zero representam uma média pesada, enquanto um valor alfa de um não possui uma média. Na linha em que o temp0 é calculado, acredito que o fim da linha deve ser lido (65535 - alfa) Caso contrário, um alfa de 1 incluiria incorretamente a média anterior e o novo valor. Infelizmente, o código mostrado tem dois principais erros, devido à forma como a média é armazenada como um número inteiro. Para ver isso, escolha o alfa para ser 1024. Começamos com o adcvalor 0 e, em seguida, dspemai32 retornará 0 conforme o esperado. Em seguida, aumente o adcvalue para 1. tmp0 em dspemai32 será: tmp0 (int64t) 1 (1024) (int64t) 0 (65536 - 1024) 1024 0 64512 1024, então o valor retornado é: (int32t) ((tmp0 32768) 65536) ( 1024 32768) 65536 33792 65536 0 Então dspemai32 continuará retornando 0, enquanto deveria (após um tempo de filtragem suficiente) no final do retorno 1. O código efetivamente implementa um filtro com uma zona morta, não mudando até que a entrada seja diferente da Média por 32768alfa ou mais, ou difere por - (32768alfa) ou menos. Seguindo o exemplo acima, aumente o valor de adc em 31 (que é inferior a 32768alpha). Tmp0 em dspemai32 será: tmp0 (int64t) 31 (1024) (int64t) 0 (65536 - 1024) 31744 0 64512 31744 então o valor retornado é: (int32t) ((tmp0 32768) 65536) (31744 32768) 65536 64512 65536 0 Então dspemai32 continuará retornando 0. Ao aumentar o valor do adc em 32, o tmp0 no dspemai32 será: tmp0 (int64t) 32 (1024) (int64t) 0 (65536 - 1024) 32768 0 64512 32768 então o valor retornado é: ( Int32t) ((tmp0 32768) 65536) (32768 32768) 65536 65536 65536 1 Então, pelo menos, a média está se movendo em direção ao valor de entrada em 1. Isso é bom. Mas então: tmp0 (int64t) 32 (1024) (int64t) 1 (65536 - 1024) 32768 1 64512 97280 então o valor retornado é: (int32t) ((tmp0 97280) 65536) (97280 32768) 65536 130048 65536 1 Então dspemai32 Continuará retornando 1, nunca atingindo o valor de entrada de 32. Não é bom. O segundo erro é a divisão inteira (tmp0 32768) 65536. Em C C, a divisão inteira irá rodar em direção a 0, então, nessa situação, a zona morta é ainda maior. Muito melhor (e muito mais simples) é o algoritmo mostrado por david. prentice em avrfreaks. netcomment824765comment-824765: total longo 0 int médio 0 int N 0 número de trabalho de amostras. ADCW total adicionar ao total de execução se (N gt MAXSAMPLES) amostras suficientes total - média remover outra N N total médio N inteiroPrédio DSP para programadores: Etapa de resposta da média A semana passada, examinamos diferentes tipos de média. E usou-os para analisar os preços históricos do gás. Olhar para um sinal complexo como os preços do gás nos dá uma boa comparação dos comportamentos dos vários métodos de média, mas isso só nos dá uma idéia do que a média faz para um sinal específico. E se queremos entender o que os diferentes métodos de média fazem de maneira mais geral. Uma maneira de analisar os diferentes métodos é aplicando-os aos sinais fundamentais. A saída resultante da aplicação de uma função de média a um dos sinais fundamentais é chamada de resposta da função. Se o sinal for o sinal DC, é chamado de resposta DC. Se o sinal é a função passo, é chamado de resposta passo, e assim por diante. Bem, olhe a resposta do passo com mais detalhes, mas primeiro, vamos discutir brevemente as respostas das diferentes funções de média para cada um dos sinais fundamentais. Respondendo aos sinais Cobrimos cinco maneiras diferentes de calcular a média na última publicação (filtro completo, bloqueio, movente, exponencial e FIR) e quatro tipos diferentes de sinais fundamentais da primeira publicação (DC, impulso, passo e seno). Se fizéssemos uma comparação cruzada de todos esses sinais e métodos de média, terminamos com vinte gráficos, mas a maioria deles não seria muito útil ou interessante, então os reduziria um pouco. Primeiro, vamos considerar a média total. Como a média completa simplesmente calcula a média sobre todo o sinal, sua resposta de sinal não é extremamente interessante. É um valor único. A média do bloco não é muito mais interessante, já que ele simplesmente divide o sinal em partes de tamanho igual antes de tomar a média. O resultado será uma versão dizmada do sinal original. Bem, ignore esses dois tipos de média para esta exploração. Podemos também descartar o sinal DC do lado do sinal da matriz, uma vez que nenhum tipo de média alterará um valor DC. (Pelo menos não deveria. Se assim for, você deve certificar-se de que sua função de média é estável e faz o que você acha que faz.) A resposta DC é mais interessante ao analisar os filtros complexos de Resposta ao Impacto Infinito (IIR) porque esses podem ser potencialmente instáveis Com um sinal de CC, mas nenhuma dessas funções de média é instável. Isso deixa os sinais de impulso, passo e seno e as médias de filtro móvel, exponencial e FIR como potenciais candidatos para comparação. A resposta dos sinais seno vão depender da frequência da onda senoidal, e esse tipo de análise normalmente é feito com um DFT para encontrar a resposta de frequência média em uma gama de freqüências. Não estávamos preparados para esse tipo de análise, ainda assim, observamos bem isso em uma postagem posterior. A resposta de impulso de uma média realmente tem um comportamento interessante. Executar um impulso através de uma função de média reproduzirá a função de média como uma série de torneiras para um filtro FIR. Como a função de impulso é zero em todos os lugares, exceto para uma única amostra, quando você aplica uma função de média para ela, o resultado em cada ponto é o valor que você precisaria usar para que toque no filtro equivalente. A função de impulso aplicada a uma média móvel resultará em um bloco de amostras com cada amostra com um valor do inverso do tamanho do bloco. Se você usou esses valores como torneiras em um filtro, multiplicando cada amostra de um sinal pelo inverso do tamanho do bloco e somando-os juntos, você obteria o mesmo resultado que a média móvel. Isso porque as seguintes equações são equivalentes: os termos 1n na soma no lado direito são as torneiras de um filtro. Por causa desta propriedade, o filtro FIR simplesmente reproduzirá suas torneiras em resposta à função de impulso. A média exponencial produzirá uma decomposição exponencial, e nunca termina porque a decomposição exponencial aproxima-se de zero, mas nunca a atinge. Portanto, a média exponencial é um exemplo de um simples filtro IIR. Mudança de resposta na etapa média que deixa a resposta gradual para analisar com mais detalhes. Para encontrar a resposta gradual de uma média, tudo o que temos a fazer é substituir o sinal de preço do gás que estávamos olhando antes com uma função de etapa e executar a função de média sobre ele. Para a média móvel, lembre-se de que a operação é Onde j é a j th amostra e k é o tamanho do bloco. Esta operação parece o seguinte gráfico: clique no gráfico para executar a média móvel. O tamanho do bloco foi expandido para mostrar melhor a resposta. Observe como a resposta é uma linha que liga o nível inferior no ponto onde a etapa ocorre ao nível mais alto no ponto em que o número de amostras equivalentes ao tamanho do bloco foi coberto. Em cada passo da média móvel, outra amostra de maior valor é adicionada à média, então o sinal médio passa em um caminho linear do valor antigo para o novo valor com um atraso igual ao tamanho do bloco. Esta resposta passo mostra como a média móvel remove o conteúdo de alta freqüência do sinal. A função de passo original tem conteúdo de freqüência infinita na etapa. A resposta ainda possui algum conteúdo de freqüência mais alta nos dois cantos, mas é menor do que antes e a região linear tem conteúdo de baixa frequência. Também podemos ver os começos de uma onda triangular nesta resposta. Se a função de etapa fosse realmente uma onda quadrada com um período duas vezes maior que o tamanho do bloco da média móvel, a média móvel produziria uma onda triangular perfeita. Talvez não seja a maneira mais eficiente de gerar um, mas é uma visão útil do comportamento da média móvel. Resposta Exponencial da Etapa Média Lembre-se, a função média exponencial funciona assim: meani w183si (1-w) 183meani-1 Onde w é a ponderação da amostra atual e é um valor entre 0 e 1. Para uma ponderação próxima a 0, a A resposta de etapa parece assim: este gráfico mostra claramente porque é chamado de uma média exponencial porque a média se aproxima do novo valor da função de passo ao longo de uma curva exponencial. Também podemos ver que a média exponencial reage mais rapidamente às novas entradas porque a resposta muda muito mais rapidamente perto da etapa inicial. Então, ele se aproxima do novo valor mais lentamente ao longo do tempo. É por isso que a média exponencial retém mais os solavancos e as pontas no sinal do preço do gás, e remove um pouco menos do conteúdo de alta frequência do que a média móvel. As ponderações devem ser muito próximas de zero antes que a média exponencial não tenha uma resposta nítida a novos valores e, em seguida, a média se aproxima de novos valores extremamente lentos. Teoricamente, a média exponencial nunca atinge o novo valor e, portanto, tem uma resposta infinita, e é por isso que é um filtro IIR. Praticamente, essa média exponencial quase atingiu o novo valor dentro de 5 ou 6 unidades de tempo, conforme representado no gráfico acima. Nunca alcançará verdadeiramente o novo valor, mas será arbitrariamente fechado. FIR Filter Step Response Para ter uma resposta de freqüência mais consistente do que a média móvel ou média exponencial, temos que ir para o filtro FIR. Lembre-se de que o filtro FIR possui um conjunto de torneiras que se multiplicam com os valores do sinal e o cálculo é representado como Onde yj é o resultado do filtro para a amostra j, k é o número de torneiras e oi é o i Th tap. O filtro FIR que analisamos usou uma função sinc para as torneiras, e esse filtro tem a seguinte resposta de etapa: Observe como o filtro não responde forte imediatamente, em vez disso, mexendo de um lado para o outro algumas vezes antes de saltar e ultrapassar o novo valor Quando o passo está a meio do filtro. Em seguida, move-se em torno do novo valor um pouco antes de se estabelecer nela. Este comportamento pode parecer familiar. Se estendemos a função de passo em uma onda quadrada com o período certo, a resposta do filtro pareceria a aproximação da série de Fourier de uma onda quadrada que exploramos ao cobrir as transformações. O filtro realmente gerará a mesma forma de onda que a Série de Fourier, mas com um atraso que é metade do número de toques no filtro. As torneiras geradas a partir da função sinc permitem certas freqüências na resposta, por isso é por isso que ele possui esse comportamento com a função de etapa. O número de movimentos e a inclinação da transição no centro do filtro dependerão do número de torneiras e da freqüência utilizada na função sinc para gerar as torneiras. Uma parte importante do design do filtro é controlar esses parâmetros para produzir a freqüência de corte desejada para o filtro. Com isso, nós cobrimos praticamente a resposta gradual das diferentes funções de média utilizadas. Analisar a resposta passo a passo de um novo filtro ou outra operação DSP é uma boa prática para entender o comportamento do algoritmo que você está desenvolvendo. Pode dar-lhe uma nova visão ou confirmar que o seu algoritmo está fazendo o que é suposto fazer. É uma boa ferramenta para manter sua caixa de ferramentas DSP. Na próxima semana, preencha as técnicas estatísticas do DSP, observando algumas maneiras de calcular o quanto um sinal está mudando com variância do sinal.

No comments:

Post a Comment