Matlab Em Média Móvel


Médicas móveis exponenciais duplas explicadas Os comerciantes confiaram em médias móveis para ajudar a identificar pontos de entrada de negociação de alta probabilidade e saídas lucrativas por muitos anos. Um problema bem conhecido com as médias móveis, no entanto, é o atraso grave que está presente na maioria dos tipos de médias móveis. A média móvel exponencial dupla (DEMA) fornece uma solução calculando uma metodologia de média mais rápida. História do Double Exponential Moving Average Na análise técnica. O termo médio móvel refere-se a uma média de preço para um instrumento comercial específico ao longo de um período de tempo especificado. Por exemplo, uma média móvel de 10 dias calcula o preço médio de um instrumento específico nos últimos dez dias, uma média móvel de 200 dias calcula o preço médio dos últimos 200 dias. Cada dia, o período de look-back avança para basear cálculos no último X número de dias. Uma média móvel aparece como uma linha suave e curva que fornece uma representação visual da tendência de longo prazo de um instrumento. As médias móveis mais rápidas, com períodos de retrocesso mais curtos, são médias móveis mais lisas e mais rápidas, com períodos mais longos, são mais suaves. Porque uma média móvel é um indicador retroativo, está atrasado. A média móvel exponencial dupla (DEMA), mostrada na Figura 1, foi desenvolvida por Patrick Mulloy na tentativa de reduzir o tempo de latência encontrado nas médias móveis tradicionais. Foi introduzido pela primeira vez na Revista Técnica de Análise Técnica de Stocks de fevereiro de 1994, no artigo da Mulloys, Suavizando dados com médias móveis mais rápidas. (Figura 1: Este gráfico de um minuto do contrato de futuros e-mini Russell 2000 mostra duas médias móveis exponenciais diferentes e um período de 55 vezes aparece em azul, Um período de 21 em rosa. Calculando uma DEMA como Mulloy explica em seu artigo original, o DEMA não é apenas uma EMA dupla com o dobro do tempo de atraso de uma única EMA, mas é uma implementação composta de EMAs simples e duplas que produzem outra EMA com menos atraso do que qualquer um dos originais dois. Em outras palavras, o DEMA não é simplesmente dois EMAs combinados, ou uma média móvel de uma média móvel, mas é um cálculo de EMAs simples e duplas. Quase todas as plataformas de análise de negociação possuem o DEMA incluído como um indicador que pode ser adicionado aos gráficos. Portanto, os comerciantes podem usar o DEMA sem conhecer a matemática por trás dos cálculos e sem ter que escrever ou inserir qualquer código. Comparando o DEMA com as médias móveis tradicionais, as médias móveis são um dos métodos mais populares de análise técnica. Muitos comerciantes usam-nos para detectar reversões de tendência. Especialmente em um crossover de média móvel, onde duas médias móveis de diferentes comprimentos são colocadas em um gráfico. Pontos onde as médias móveis cruzam podem significar oportunidades de compra ou venda. O DEMA pode ajudar os comerciantes a reverter mais cedo porque é mais rápido responder às mudanças na atividade do mercado. A Figura 2 mostra um exemplo do contrato de futuros e-mini Russell 2000. Este gráfico de um minuto tem quatro médias móveis aplicadas: 21-período DEMA (rosa) 55-período DEMA (azul escuro) 21-período MA (azul claro) 55-período MA (luz verde) Figura 2: Este gráfico de um minuto de O contrato de futuros e-mini Russell 2000 ilustra o tempo de resposta mais rápido do DEMA quando usado em um crossover. Observe como o crossover DEMA em ambos os casos aparece significativamente mais cedo do que os cruzamentos do MA. O primeiro cronômetro DEMA aparece às 12:29 e o próximo bar abre a um preço de 663,20. O cruzamento de MA, por outro lado, se forma às 12:34 e o próximo preço de abertura de barras é de 660,50. No próximo conjunto de crossovers, o cronômetro DEMA aparece às 1:33 e a próxima barra abre em 658. O MA, em contraste, forma às 1:43, com a próxima barra abrindo em 662.90. Em cada caso, o cronômetro DEMA fornece uma vantagem em entrar na tendência anterior ao cruzamento do MA. (Para mais informações, leia o Tutorial de Moedas em Movimento.) Negociação com um DEMA Os exemplos de cruzamento de média móvel acima ilustram a eficácia de usar a média móvel exponencial mais rápida e rápida. Além de usar o DEMA como um indicador autônomo ou em uma configuração crossover, o DEMA pode ser usado em uma variedade de indicadores, onde a lógica é baseada em uma média móvel. Ferramentas de análise técnica, como Bollinger Bands. A movimentação média média convergente (MACD) e a média móvel exponencial tripla (TRIX) são baseadas em tipos de média móvel e podem ser modificadas para incorporar uma DEMA em lugar de outros tipos mais tradicionais de médias móveis. Substituir o DEMA pode ajudar os comerciantes a detectar diferentes oportunidades de compra e venda que estão à frente daqueles fornecidos pelas MAs ou EMAs tradicionalmente utilizados nesses indicadores. Obviamente, entrar em uma tendência mais cedo e não mais tarde geralmente leva a maiores lucros. A Figura 2 ilustra esse princípio - se usássemos os crossovers como sinais de compra e venda. Nós inserimos os negócios significativamente mais cedo quando usamos o crossover DEMA em oposição ao cruzamento de MA. Bottom Line Traders e investidores usaram há muito tempo médias móveis em suas análises de mercado. As médias móveis são uma ferramenta de análise técnica amplamente utilizada que fornece um meio de visualizar e interpretar rapidamente a tendência a longo prazo de um determinado instrumento de negociação. Como as médias móveis pela própria natureza são indicadores de atraso. É útil ajustar a média móvel para calcular um indicador mais rápido e mais responsivo. A média móvel exponencial dupla fornece aos comerciantes e investidores uma visão da tendência a longo prazo, com a vantagem de ser uma média móvel mais rápida com menos tempo de atraso. (Para leitura relacionada, dê uma olhada em Combo MACD de média móvel e Velocidades móveis simples exponentes.) Descrição do filtro médio de deslocamento duplo O DoubleMovingAverageFilter implementa um filtro de baixa velocidade de passagem baixa. O DoubleMovingAverageFilter faz parte dos módulos de pré-processamento. Um exemplo de sinal (ruído aleatório de onda sinusoidal) filtrada usando um filtro médio móvel. O sinal vermelho é o ruído de sinal original, o sinal verde é o sinal filtrado usando um filtro médio móvel com um tamanho de janela de 5 e o sinal azul é o sinal filtrado usando um filtro médio móvel com um tamanho de janela de 20. DoubleMovingAverageFilterExampleImage1. Jpg Vantagens O DoubleMovingAverageFilter é bom para remover uma pequena quantidade de ruído de alta freqüência de um sinal N dimensional. Desvantagens A principal desvantagem do DoubleMovingAverageFilter é que, para filtrar alto ruído de alta freqüência, o tamanho da janela do filtro precisa ser grande. O problema de ter uma janela de filtro grande é que isso induzirá uma latência grande em qualquer sinal que passe pelo filtro, o que pode não ser vantajoso para aplicações em tempo real. Se você achar que você precisa de uma janela de filtro grande para filtrar o ruído de alta freqüência e a latência induzida por esse tamanho de janela não é adequada para seu aplicativo em tempo real, então você pode tentar um filtro de passagem baixa. Exemplo de código GRT DoubleMovingAverageFilter Exemplo Este exemplo demonstra como criar e usar o módulo de pré-processamento GRT DoubleMovingAverageFilter. O DoubleMovingAverageFilter implementa um filtro de baixa velocidade de passagem baixa. Neste exemplo, criamos uma instância de um DoubleMovingAverageFilter e usamos isso para filtrar alguns dados falsos, gerados a partir de um ruído aleatório de onda senoidal. O sinal de teste e os sinais filtrados são salvos em um arquivo (para que você possa traçar os resultados em Matlab, Excel, etc., se necessário). Este exemplo mostra como: - Criar uma nova instância DoubleMovingAverageFilter com um tamanho de janela específico para um sinal de 1 dimensão - Filtrar alguns dados usando o DoubleMovingAverageFilter - Salve as configurações DoubleMovingAverageFilter em um arquivo - Carregar as configurações DoubleMovingAverageFilter de um arquivo incluem quotGRT. hquot Usando namespace GRT int main 40 int argc. Const char argv 91 93 41 123 Crie uma nova instância de um filtro de média dupla com um tamanho de janela de 5 para um sinal de 1 dimensional DoubleMovingAverageFilter filter 40 5. 1 41 Crie e abra um arquivo para salvar o arquivo de arquivo fstream de dados. Abra 40 quotDoubleMovingAverageFilterData. txtquot. Fstream. 41 Gerar alguns dados (ruído das ondas sinusoidais) e filtrá-lo duplo x 0 const UINT M 1000 Random aleatório para 40 UINT i 0 i lt M i 41 123 duplo sinal sin 40 x 41 aleatório. GetRandomNumberUniform 40 - 0.2. 0,2 41 filtro de filtro duplo filtrado. Filtro 40 sinal 41 arquivo ltlt sinal ltlt quot tt ltlt filterValue ltlt endl x TWOPI duplo 40 M 41 10 125 Feche o arquivo de arquivo. Fechar 40 41 Salve as configurações do filtro em um filtro de arquivo. SaveSettingsToFile 40 quotDoubleMovingAverageFilterSettings. txtquot 41 Podemos então carregar as configurações mais tarde, se necessário, o filtro. LoadSettingsFromFile 40 quotDoubleMovingAverageFilterSettings. txtquot 41 return EXITSUCCESS 125 O DoubleMovingAverageFilter também funciona com qualquer sinal N dimensional: Crie uma nova instância do DoubleMovingAverageFilter com um tamanho de janela de 10 para um sinal tridimensional DoubleMovingAverageFilter filter 40 10. 3 41 O valor que deseja filtrar Vetor lt dados gt duplo 40 3 41 dados 91 0 93 0. Obtenha valor dos dados do sensor 91 1 93 0. Obtenha valor dos dados do sensor 91 2 93 0. Obter valor do sensor Filtrar o vetor de sinal lt filtro gt filterValue duplo. Filtro 40 dados 41 Download movAv. m (veja também movAv2 - uma versão atualizada que permite a ponderação) Descrição O Matlab inclui funções denominadas movavg e tsmovavg (time-series moving average) no Financial Toolbox, movAv foi projetado para replicar a funcionalidade básica destes. O código aqui fornece um bom exemplo de gerenciar índices dentro de loops, o que pode ser confuso para começar. Eu deliberadamente mantive o código curto e simples para manter esse processo claro. MovAv executa uma média móvel simples que pode ser usada para recuperar dados ruidosos em algumas situações. Ele funciona tomando uma média da entrada (y) em uma janela de tempo deslizante, cujo tamanho é especificado por n. Quanto maior for n, maior a quantidade de suavização do efeito de n é relativa ao comprimento do vetor de entrada y. E efetivamente (bem, tipo de) cria um filtro de freqüência de passagem baixa - veja a seção de exemplos e considerações. Como a quantidade de suavização fornecida por cada valor de n é relativa ao comprimento do vetor de entrada, vale a pena testar valores diferentes para ver o que é apropriado. Lembre-se também de que n pontos são perdidos em cada média se n for 100, os primeiros 99 pontos do vetor de entrada não contêm dados suficientes para uma média de 100pt. Isso pode ser evitado um pouco por meio de empilhamento de médias, por exemplo, o código e o gráfico abaixo comparam uma série de médias de largura de comprimento diferentes. Observe o quão suave 1010pt é comparado a uma única média de 20pt. Em ambos os casos, 20 pontos de dados são perdidos no total. Criar xaxis x1: 0.01: 5 Gerar ruído ruído Reps 4 repag ruido (randn (1, ceil (numel (x) noiseReps)), noiseReps, 1) ruim remodelar (ruído, 1, comprimento (ruído) noiseReps) Gerar ydata noise yexp ( X) 10noise (1: comprimento (x)) médias de Perfrom: y2 movAv (y, 10) 10 pt y3 movAv (y2, 10) 1010 pt y4 movAv (y, 20) 20 pt y5 movAv (y, 40) 40 pt Y6 movAv (y, 100) 100 pt Plot figura trama (x, y, y2, y3, y4, y5, y6) lenda (dados brutos, 10pt média móvel, 1010pt, 20pt, 40pt, 100pt) xlabel (x) ylabel ( Y) título (Comparação de médias móveis) movAv. m código execução função saída movAv (y, n) A primeira linha define o nome das funções, entradas e saídas. A entrada x deve ser um vetor de dados para executar a média em, n deve ser o número de pontos para executar a média sobre a saída conterá a média de dados retornada pela função. Prealocar output outputNaN (1, numel (y)) Encontrar ponto médio de n round do midPoint (n2) O trabalho principal da função é feito no loop for, mas antes de iniciar duas coisas são preparadas. Em primeiro lugar, a saída é pré-alocada como NaNs, isso serviu para duas finalidades. Em primeiro lugar, a pré-alocação é geralmente uma boa prática, pois reduz a manipulação de memória que a Matlab tem que fazer, em segundo lugar, torna muito fácil colocar os dados médios em uma saída do mesmo tamanho que o vetor de entrada. Isso significa que o mesmo xaxis pode ser usado mais tarde para ambos, o que é conveniente para plotar, alternativamente o NaNs pode ser removido mais tarde em uma linha de código (saída de saída (O midPoint variável será usado para alinhar os dados no vetor de saída. N 10, 10 pontos serão perdidos porque, para os primeiros 9 pontos do vetor de entrada, não há dados suficientes para ter uma média de 10 pontos. Como a saída será menor que a entrada, ele precisa estar alinhado corretamente. O MidPoint irá Ser usado para que uma quantidade igual de dados seja perdida no início e no final e a entrada é mantida alinhada com a saída dos buffers NaN criados ao pré-alocar a saída. Para um comprimento de 1: comprimento (y) - n Alcance do índice para levar a média Sobre (a: b) proibição Calcule o significado médio (amidPoint) mean (y (a: b)) end No loop for em si, uma média é tomada em cada segmento consecutivo da entrada. O loop será executado para a. Which is Definido como 1 até o comprimento da entrada (y), menos os dados que serão perdidos (n). Se a entrada for 100 pontos, Ng e n é 10, o loop será executado de (a) 1 a 90. Isso significa que a fornece o primeiro índice do segmento a ser calculado como média. O segundo índice (b) é simplesmente um-1. Então, na primeira iteração, a1. N10. Então b 11-1 10. A primeira média é tomada sobre y (a: b). Ou x (1:10). A média deste segmento, que é um valor único, é armazenada na saída no índice amidPoint. Ou 156. Na segunda iteração, a2. B 210-1 11. Então a média é tomada em x (2:11) e armazenada na saída (7). Na última iteração do loop para uma entrada de comprimento 100, a91. B 9010-1 100 para que a média seja tomada sobre x (91: 100) e armazenada na saída (95). Isso deixa a saída com um total de n (10) valores de NaN no índice (1: 5) e (96: 100). Exemplos e considerações As médias móveis são úteis em algumas situações, mas elas nem sempre são a melhor escolha. Aqui estão dois exemplos em que eles não são necessariamente ótimos. Calibração do microfone Este conjunto de dados representa os níveis de cada freqüência produzida por um alto-falante e registrado por um microfone com uma resposta linear conhecida. A saída do alto-falante varia com a freqüência, mas podemos corrigir esta variação com os dados de calibração - a saída pode ser ajustada em nível para explicar as flutuações na calibração. Observe que os dados brutos são ruidosos - isso significa que uma pequena alteração na freqüência parece exigir uma grande, errática, mudança no nível a ser considerada. Isso é realista Ou isso é um produto do ambiente de gravação. É razoável, neste caso, aplicar uma média móvel que suaviza a curva de freqüência de nível para fornecer uma curva de calibração ligeiramente menos errática. Mas por que isso não é ótimo neste exemplo Mais dados seriam melhores - as calibrações múltiplas correm em média, destruirão o ruído no sistema (desde que sejam aleatórias) e proporcionem uma curva com menos detalhes sutis perdidos. A média móvel só pode se aproximar disso e pode remover alguns mergulhos e picos de freqüência mais altos da curva que realmente existem. Ondas sinusoidais A utilização de uma média móvel em ondas senoticas destaca dois pontos: a questão geral de escolher um número razoável de pontos para realizar a média em excesso. É simples, mas existem métodos de análise de sinal mais eficazes do que os sinais oscilantes em média no domínio do tempo. Neste gráfico, a onda senoidal original é plotada em azul. O ruído é adicionado e plotado como a curva laranja. Uma média móvel é realizada em diferentes números de pontos para ver se a onda original pode ser recuperada. 5 e 10 pontos fornecem resultados razoáveis, mas não eliminem completamente o ruído, onde, à medida que um número maior de pontos começa a perder detalhes de amplitude, à medida que a média se estende por diferentes fases (lembre-se que a onda oscila em torno de zero e significa (-1 1) 0) . Um enfoque alternativo seria construir um filtro de passagem baixa que possa ser aplicado ao sinal no domínio da frequência. Não vou entrar em detalhes, pois vai além do escopo deste artigo, mas como o ruído é uma freqüência consideravelmente maior do que a freqüência fundamental das ondas, seria bastante fácil, neste caso, construir um filtro de passagem baixa do que remover a alta freqüência barulho.

Comments