Thursday 15 November 2018

Movendo média exemplo em c


Eu sei que isso é possível com o impulso como por: Mas eu realmente gostaria de evitar usar o impulso. Eu tenho googled e não encontrei qualquer exemplos adequados ou legível. Basicamente, eu quero acompanhar a média móvel de um fluxo contínuo de um fluxo de números de ponto flutuante usando os números de 1000 mais recentes como uma amostra de dados. Qual é a maneira mais fácil de conseguir isso que eu experimentei com o uso de uma matriz circular, média móvel exponencial e uma média móvel mais simples e descobriu que os resultados da matriz circular adequado às minhas necessidades. Se suas necessidades são simples, você pode apenas tentar usar uma média móvel exponencial. Simplificando, você faz uma variável de acumulador, e como seu código olha para cada amostra, o código atualiza o acumulador com o novo valor. Você escolhe um alfa constante que está entre 0 e 1 e calcula isso: Você só precisa encontrar um valor de alfa onde o efeito de uma determinada amostra dura apenas cerca de 1000 amostras. Hmm, Im realmente não tenho certeza que isso é adequado para você, agora que Ive colocá-lo aqui. O problema é que 1000 é uma janela muito longa para uma média móvel exponencial Não tenho certeza se há um alfa que iria espalhar a média nos últimos 1000 números, sem subfluxo no cálculo do ponto flutuante. Mas se você quisesse uma média menor, como 30 números ou assim, esta é uma maneira muito fácil e rápida de fazê-lo. Respondeu 12 de junho 12 em 4:44 1 em seu borne. A média móvel exponencial pode permitir que o alfa seja variável. Portanto, isto permite que ele seja usado para calcular médias de base de tempo (por exemplo, bytes por segundo). Se o tempo desde a última actualização do acumulador for superior a 1 segundo, deixe alfa ser 1.0. Caso contrário, você pode deixar alfa ser (usecs desde a última atualização1000000). Ndash jxh 12 de junho de 12 às 6:21 Basicamente eu quero acompanhar a média móvel de um fluxo em curso de um fluxo de números de ponto flutuante usando os mais recentes números de 1000 como uma amostra de dados. Observe que o abaixo atualiza o total como elementos como addedreplaced, evitando costal O (N) traversal para calcular a soma - necessária para a média - on demand. Total é feito um parâmetro diferente de T para suporte, e. Usando um longo longo quando totalizando 1000 s longos, um int para char s, ou um dobro ao total float s. Este é um pouco falho em que numsamples poderia ir passado INTMAX - se você se importa que você poderia usar um unsigned longa. Ou usar um membro de dados bool extra para gravar quando o recipiente é preenchido pela primeira vez enquanto ciclismo numsamples ao redor da matriz (melhor então renomeado algo inócuo como pos). Respondida em 12 de junho de 12 às 5:19, assume-se que o operador de quotvoid (amostra T) é realmente operador quotvoid (T amostra) quot. Ndash oPless Jun 8 14 at 11:52 oPless ahhh. Bem manchado. Na verdade, eu quis dizer para ser vazio operador () (T amostra), mas é claro que você poderia usar qualquer nota que você gostava. Will fix, obrigado. Ndash Tony D Jun 8 14 em 14: 27É possível implementar uma média móvel em C sem a necessidade de uma janela de amostras Ive descobri que eu posso otimizar um pouco, escolhendo um tamanho de janela thats um poder de dois para permitir bit - shifting em vez de dividir, mas não precisando de um buffer seria bom. Existe uma maneira de expressar um novo resultado da média móvel apenas como uma função do antigo resultado e da nova amostra Definir um exemplo de média móvel, através de uma janela de 4 amostras para ser: Adicionar nova amostra e: Uma média móvel pode ser implementada recursivamente , Mas para um cálculo exato da média móvel você deve se lembrar da amostra de entrada mais antiga na soma (ou seja, o a no seu exemplo). Para um comprimento N média móvel você calcula: onde yn é o sinal de saída e xn é o sinal de entrada. Eq. (1) pode ser escrito recursivamente como Então você sempre precisa lembrar a amostra xn-N para calcular (2). Como indicado por Conrad Turner, você pode usar uma janela exponencial (infinitamente longa), que permite calcular a saída somente da saída anterior e da entrada atual: mas esta não é uma média móvel padrão (não ponderada), mas uma média exponencial Ponderada média móvel, onde as amostras mais no passado obter um menor peso, mas (pelo menos em teoria) você nunca se esqueça nada (os pesos apenas ficar menor e menor para amostras no passado). Eu implementei uma média móvel sem memória de item individual para um programa de rastreamento GPS que eu escrevi. Eu começo com 1 amostra e dividir por 1 para obter o avg atual. Eu adiciono então uma outra amostra e divido por 2 à corrente avg. Isso continua até que eu chegar ao comprimento da média. Cada vez depois, eu adiciono na nova amostra, obter a média e remover essa média do total. Eu não sou um matemático, mas isso parecia ser uma boa maneira de fazê-lo. Eu imaginei que iria transformar o estômago de um cara de matemática real, mas, verifica-se que é uma das formas aceitas de fazê-lo. E funciona bem. Basta lembrar que quanto maior o seu comprimento, mais lento é seguir o que você deseja seguir. Isso pode não importar a maior parte do tempo, mas quando os satélites seguintes, se você é lento, a trilha poderia estar longe da posição real e vai ficar mal. Você poderia ter uma lacuna entre o sat e os pontos de arrasto. Eu escolhi um comprimento de 15 atualizado 6 vezes por minuto para obter alisamento adequado e não ficar muito longe da posição real sentado com os pontos de trilha suavizada. Respondida Nov 16 16 at 23:03 initialize total 0, count0 (cada vez vendo um novo valor Então uma entrada (scanf), um add totalnewValue, um incremento (count), uma divide average (totalcount) Todas as entradas Para calcular a média apenas nas últimas 4 entradas, seria necessário 4 variáveis ​​de entrada, talvez copiando cada entrada para uma variável de entrada mais antiga, calculando a nova média móvel como a soma das 4 variáveis ​​de entrada, dividida por 4 Bom se todos os insumos foram positivos para fazer o cálculo médio respondido Feb 3 15 at 4:06 Isso vai realmente calcular a média total e não a média móvel. Como a contagem fica maior o impacto de qualquer nova amostra de entrada torna-se ndash nitidamente pequeno Hilmar fevereiro 3 15 at 13:53 Sua resposta 2017 Stack Exchange, IncMoving Médias - Simples e exponenciais Médias móveis - Simples e exponencial Introdução As médias móveis alisam os dados de preços para formar um indicador de tendência seguinte. Arroz, mas sim definir a direção atual com um atraso. As médias móveis são retardadas porque são baseadas em preços passados. Apesar deste atraso, as médias móveis ajudam a suavizar a ação dos preços e filtrar o ruído. Eles também formam os blocos de construção para muitos outros indicadores técnicos e sobreposições, como Bandas Bollinger. MACD eo Oscilador de McClellan. Os dois tipos mais populares de médias móveis são a Média Móvel Simples (SMA) e a Média Móvel Exponencial (EMA). Essas médias móveis podem ser usadas para identificar a direção da tendência ou definir níveis potenciais de suporte e resistência. Here039s um gráfico com um SMA e um EMA sobre ele: Simples Moving Average Cálculo Uma simples média móvel é formada por calcular o preço médio de um título sobre um determinado número de períodos. A maioria das médias móveis são baseadas em preços de fechamento. Uma média móvel simples de 5 dias é a soma de cinco dias dos preços de fechamento dividida por cinco. Como seu nome indica, uma média móvel é uma média que se move. Os dados antigos são eliminados à medida que novos dados são disponibilizados. Isso faz com que a média se mova ao longo da escala de tempo. Abaixo está um exemplo de uma média móvel de 5 dias evoluindo ao longo de três dias. O primeiro dia da média móvel cobre simplesmente os últimos cinco dias. O segundo dia da média móvel cai o primeiro ponto de dados (11) e adiciona o novo ponto de dados (16). O terceiro dia da média móvel continua caindo o primeiro ponto de dados (12) e adicionando o novo ponto de dados (17). No exemplo acima, os preços aumentam gradualmente de 11 para 17 ao longo de um total de sete dias. Observe que a média móvel também aumenta de 13 para 15 ao longo de um período de cálculo de três dias. Observe também que cada valor da média móvel está logo abaixo do último preço. Por exemplo, a média móvel para o dia um é igual a 13 eo último preço é 15. Os preços dos quatro dias anteriores eram mais baixos e isso faz com que a média móvel fique atrasada. Cálculo da média móvel exponencial As médias móveis exponenciais reduzem o desfasamento aplicando mais peso aos preços recentes. A ponderação aplicada ao preço mais recente depende do número de períodos na média móvel. Há três etapas para calcular uma média móvel exponencial. Primeiro, calcule a média móvel simples. Uma média móvel exponencial (EMA) tem que começar em algum lugar assim uma média móvel simples é usada como EMA do período anterior039s no primeiro cálculo. Em segundo lugar, calcular o multiplicador de ponderação. Em terceiro lugar, calcule a média móvel exponencial. A fórmula abaixo é para uma EMA de 10 dias. Uma média móvel exponencial de 10 períodos aplica uma ponderação de 18,18 ao preço mais recente. Um EMA de 10 períodos também pode ser chamado de EMA 18.18. Um EMA de 20 períodos aplica uma ponderação de 9,52 ao preço mais recente (2 (201) .0952). Observe que a ponderação para o período de tempo mais curto é mais do que a ponderação para o período de tempo mais longo. De fato, a ponderação cai pela metade cada vez que o período de média móvel dobra. Se você deseja uma porcentagem específica para uma EMA, use esta fórmula para convertê-la em períodos de tempo e insira esse valor como o parâmetro EMA039s: Abaixo está um exemplo de planilha de uma média móvel simples de 10 dias e um valor 10- Dia média móvel exponencial para a Intel. As médias móveis simples são diretas e exigem pouca explicação. A média de 10 dias simplesmente se move conforme novos preços se tornam disponíveis e os preços antigos caem. A média móvel exponencial começa com o valor da média móvel simples (22,22) no primeiro cálculo. Após o primeiro cálculo, a fórmula normal assume o controle. Como um EMA começa com uma média móvel simples, seu valor verdadeiro não será realizado até 20 ou mais períodos mais tarde. Em outras palavras, o valor na planilha do Excel pode diferir do valor do gráfico por causa do curto período de retorno. Esta planilha só remonta 30 períodos, o que significa que o efeito da média móvel simples teve 20 períodos para dissipar. StockCharts volta pelo menos 250 períodos (geralmente muito mais) para os seus cálculos para os efeitos da média móvel simples no primeiro cálculo totalmente dissipada. O fator de Lag Quanto maior a média móvel, mais o lag. Uma média móvel exponencial de 10 dias abraçará os preços muito de perto e virará logo após os preços virarem. Curtas médias móveis são como barcos de velocidade - ágeis e rápidos para mudar. Em contraste, uma média móvel de 100 dias contém muitos dados passados ​​que o desaceleram. Médias móveis mais longas são como petroleiros oceânicos - letárgicos e lentos para mudar. É preciso um movimento de preços maior e mais longo para uma média móvel de 100 dias para mudar de rumo. O gráfico acima mostra o SampP 500 ETF com uma EMA de 10 dias seguindo de perto os preços e uma moagem SMA de 100 dias mais alta. Mesmo com o declínio de janeiro-fevereiro, o SMA de 100 dias manteve o curso e não recusou. A SMA de 50 dias se encaixa entre as médias móveis de 10 e 100 dias quando se trata do fator de latência. Simples vs médias exponenciais Moving Embora existam diferenças claras entre médias móveis simples e médias móveis exponenciais, um não é necessariamente melhor do que o outro. As médias móveis exponenciais têm menos atraso e, portanto, são mais sensíveis aos preços recentes - e as recentes mudanças nos preços. As médias móveis exponenciais virarão antes de médias móveis simples. As médias móveis simples, por outro lado, representam uma verdadeira média de preços para todo o período de tempo. Como tal, as médias móveis simples podem ser mais adequadas para identificar níveis de suporte ou resistência. Preferência média móvel depende de objetivos, estilo analítico e horizonte de tempo. Chartists deve experimentar com ambos os tipos de médias móveis, bem como diferentes prazos para encontrar o melhor ajuste. O gráfico abaixo mostra a IBM com a SMA de 50 dias em vermelho ea EMA de 50 dias em verde. Ambos atingiram o pico no final de janeiro, mas o declínio no EMA foi mais nítida do que o declínio no SMA. A EMA apareceu em meados de fevereiro, mas a SMA continuou baixa até o final de março. Observe que a SMA apareceu mais de um mês após a EMA. Comprimentos e prazos A duração da média móvel depende dos objetivos analíticos. Curtas médias móveis (5-20 períodos) são mais adequados para as tendências de curto prazo e de negociação. Os cartistas interessados ​​em tendências de médio prazo optariam por médias móveis mais longas que poderiam estender 20-60 períodos. Investidores de longo prazo preferem médias móveis com 100 ou mais períodos. Alguns comprimentos de média móvel são mais populares do que outros. A média móvel de 200 dias é talvez a mais popular. Devido ao seu comprimento, esta é claramente uma média móvel a longo prazo. Em seguida, a média móvel de 50 dias é bastante popular para a tendência de médio prazo. Muitos chartists usam as médias móveis de 50 dias e de 200 dias junto. Curto prazo, uma média móvel de 10 dias foi bastante popular no passado porque era fácil de calcular. Um simplesmente adicionou os números e moveu o ponto decimal. Identificação de tendências Os mesmos sinais podem ser gerados usando médias móveis simples ou exponenciais. Como mencionado acima, a preferência depende de cada indivíduo. Esses exemplos abaixo usarão médias móveis simples e exponenciais. O termo média móvel se aplica a médias móveis simples e exponenciais. A direção da média móvel transmite informações importantes sobre os preços. Uma média móvel em ascensão mostra que os preços estão aumentando. Uma média móvel em queda indica que os preços, em média, estão caindo. A subida da média móvel a longo prazo reflecte uma tendência de alta a longo prazo. A queda da média móvel a longo prazo reflecte uma tendência de baixa a longo prazo. O gráfico acima mostra 3M (MMM) com uma média móvel exponencial de 150 dias. Este exemplo mostra quão bem as médias móveis funcionam quando a tendência é forte. A EMA de 150 dias recusou-se em novembro de 2007 e novamente em janeiro de 2008. Observe que foi necessário um declínio de 15 para reverter a direção dessa média móvel. Estes indicadores de atraso identificam inversões de tendência à medida que ocorrem (na melhor das hipóteses) ou depois de ocorrerem (na pior das hipóteses). MMM continuou menor em março de 2009 e, em seguida, subiu 40-50. Observe que a EMA de 150 dias não apareceu até depois desse aumento. Uma vez que o fez, no entanto, MMM continuou maior nos próximos 12 meses. As médias móveis trabalham brilhantemente em tendências fortes. Crossovers dobro Duas médias móveis podem ser usadas junto para gerar sinais do cruzamento. Na Análise Técnica dos Mercados Financeiros. John Murphy chama isso de método de cruzamento duplo. Os cruzamentos duplos envolvem uma média móvel relativamente curta e uma média móvel relativamente longa. Como com todas as médias móveis, o comprimento geral da média móvel define o tempo para o sistema. Um sistema usando um EMA de 5 dias e um EMA de 35 dias seria considerado de curto prazo. Um sistema usando uma SMA de 50 dias e uma SMA de 200 dias seria considerado de médio prazo, talvez até de longo prazo. Um crossover de alta ocorre quando a média móvel mais curta cruza acima da média móvel mais longa. Isso também é conhecido como uma cruz de ouro. Um crossover de baixa ocorre quando a média móvel mais curta cruza abaixo da média móvel mais longa. Isso é conhecido como uma cruz morta. Os crossovers médios móveis produzem sinais relativamente tardios. Afinal, o sistema emprega dois indicadores de atraso. Quanto mais longos os períodos de média móvel, maior o atraso nos sinais. Esses sinais funcionam muito bem quando uma boa tendência se apodera. No entanto, um sistema de crossover média móvel vai produzir lotes de whipsaws na ausência de uma forte tendência. Há também um método de cruzamento triplo que envolve três médias móveis. Novamente, um sinal é gerado quando a média móvel mais curta atravessa as duas médias móveis mais longas. Um simples sistema de crossover triplo pode envolver médias móveis de 5 dias, 10 dias e 20 dias. O gráfico acima mostra Home Depot (HD) com um EMA de 10 dias (linha pontilhada verde) e EMA de 50 dias (linha vermelha). A linha preta é o fechamento diário. Usando um crossover média móvel teria resultado em três whipsaws antes de pegar um bom comércio. O EMA de 10 dias quebrou abaixo do EMA de 50 dias em outubro atrasado (1), mas este não durou por muito tempo enquanto os 10 dias se moveram para trás acima em meados de novembro (2). Este cruzamento durou mais, mas o próximo cruzamento de baixa em janeiro (3) ocorreu perto dos níveis de preços de novembro, resultando em outro whipsaw. Esta cruz bearish não durou por muito tempo porque o EMA de 10 dias moveu para trás acima dos 50 dias alguns dias mais tarde (4). Depois de três sinais ruins, o quarto sinal prefigurou um forte movimento como o estoque avançou mais de 20. Existem dois takeaways aqui. Primeiramente, os crossovers são prone ao whipsaw. Um filtro de preço ou tempo pode ser aplicado para ajudar a evitar whipsaws. Os comerciantes podem exigir que o crossover durar 3 dias antes de agir ou exigir a EMA de 10 dias para mover acima abaixo da EMA de 50 dias por um determinado montante antes de agir. Em segundo lugar, MACD pode ser usado para identificar e quantificar esses cruzamentos. MACD (10,50,1) mostrará uma linha representando a diferença entre as duas médias móveis exponenciais. MACD torna-se positivo durante uma cruz dourada e negativo durante uma cruz morta. O Oscilador de Preço Percentual (PPO) pode ser usado da mesma forma para mostrar diferenças percentuais. Observe que o MACD eo PPO são baseados em médias móveis exponenciais e não se igualam a médias móveis simples. Este gráfico mostra Oracle (ORCL) com a EMA de 50 dias, EMA de 200 dias e MACD (50,200,1). Houve quatro cruzamentos de média móvel em um período de 2 12 anos. Os três primeiros resultaram em whipsaws ou maus negócios. Uma tendência sustentada começou com o quarto crossover como ORCL avançado para os 20s meados. Mais uma vez, os crossovers de média móvel funcionam muito bem quando a tendência é forte, mas produzem perdas na ausência de uma tendência. Crossovers de preço As médias móveis também podem ser usadas para gerar sinais com cruzamentos de preços simples. Um sinal de alta é gerado quando os preços se movem acima da média móvel. Um sinal de baixa é gerado quando os preços se movem abaixo da média móvel. Os crossovers do preço podem ser combinados para negociar dentro da tendência mais grande. A média móvel mais longa define o tom para a tendência maior e a média móvel mais curta é usada para gerar os sinais. Um olharia para cruzes de preço de alta somente quando os preços já estão acima da média móvel mais longa. Isso seria negociar em harmonia com a maior tendência. Por exemplo, se o preço estiver acima da média móvel de 200 dias, os chartistas só se concentrarão nos sinais quando o preço se mover acima da média móvel de 50 dias. Obviamente, um movimento abaixo da média móvel de 50 dias precederia tal sinal, mas tais cruzamentos de baixa seriam ignorados porque a maior tendência é para cima. Uma cruz bearish sugeriria simplesmente um pullback dentro de um uptrend mais grande. Um cruzamento acima da média móvel de 50 dias indicaria uma subida dos preços e continuação da maior tendência de alta. O gráfico a seguir mostra Emerson Electric (EMR) com a EMA de 50 dias e EMA de 200 dias. A ação moveu-se acima e manteve-se acima da média móvel de 200 dias em agosto. Houve mergulhos abaixo dos 50 dias EMA no início de novembro e novamente no início de fevereiro. Os preços recuaram rapidamente acima dos 50 dias EMA para fornecer sinais de alta (setas verdes) em harmonia com a maior tendência de alta. MACD (1,50,1) é mostrado na janela do indicador para confirmar cruzamentos de preços acima ou abaixo da EMA de 50 dias. O EMA de 1 dia é igual ao preço de fechamento. MACD (1,50,1) é positivo quando o fechamento está acima do EMA de 50 dias e negativo quando o fechamento está abaixo do EMA de 50 dias. Suporte e Resistência As médias móveis também podem atuar como suporte em uma tendência de alta e resistência em uma tendência de baixa. Uma tendência de alta de curto prazo pode encontrar apoio perto da média móvel simples de 20 dias, que também é usada em Bandas de Bollinger. Uma tendência de alta de longo prazo pode encontrar suporte perto da média móvel simples de 200 dias, que é a média móvel mais popular a longo prazo. Se fato, a média móvel de 200 dias pode oferecer suporte ou resistência simplesmente porque é tão amplamente utilizado. É quase como uma profecia auto-realizável. O gráfico acima mostra o NY Composite com a média móvel simples de 200 dias de meados de 2004 até o final de 2008. Os 200 dias de suporte fornecido várias vezes durante o avanço. Uma vez que a tendência revertida com uma ruptura de apoio superior dupla, a média móvel de 200 dias agiu como resistência em torno de 9500. Não espere suporte exato e níveis de resistência de médias móveis, especialmente as médias móveis mais longas. Os mercados são impulsionados pela emoção, o que os torna propensos a superações. Em vez de níveis exatos, as médias móveis podem ser usadas para identificar zonas de suporte ou de resistência. Conclusões As vantagens de usar médias móveis precisam ser ponderadas contra as desvantagens. As médias móveis são a tendência que segue, ou retardar, os indicadores que serão sempre um passo atrás. Isso não é necessariamente uma coisa ruim embora. Afinal, a tendência é o seu amigo e é melhor para o comércio na direção da tendência. As médias móveis asseguram que um comerciante está em linha com a tendência atual. Mesmo que a tendência é seu amigo, os títulos gastam uma grande quantidade de tempo em intervalos de negociação, o que torna as médias móveis ineficazes. Uma vez em uma tendência, as médias móveis mantê-lo-ão dentro, mas igualmente dar sinais atrasados. Don039t esperam vender no topo e comprar na parte inferior usando médias móveis. Tal como acontece com a maioria das ferramentas de análise técnica, as médias móveis não devem ser utilizadas por conta própria, mas em conjunto com outras ferramentas complementares. Os cartistas podem usar médias móveis para definir a tendência geral e, em seguida, usar o RSI para definir os níveis de sobrecompra ou sobrevenda. Adicionando médias móveis para gráficos StockCharts As médias móveis estão disponíveis como um recurso de sobreposição de preço na bancada do SharpCharts. Usando o menu suspenso Sobreposições, os usuários podem escolher uma média móvel simples ou uma média móvel exponencial. O primeiro parâmetro é usado para definir o número de períodos de tempo. Um parâmetro opcional pode ser adicionado para especificar qual campo de preço deve ser usado nos cálculos - O para o aberto, H para o alto, L para o baixo e C para o fechamento. Uma vírgula é usada para separar parâmetros. Outro parâmetro opcional pode ser adicionado para deslocar as médias móveis para a esquerda (passado) ou para a direita (futuro). Um número negativo (-10) deslocaria a média móvel para a esquerda 10 períodos. Um número positivo (10) deslocaria a média móvel para o direito 10 períodos. Múltiplas médias móveis podem ser superadas o preço parcela simplesmente adicionando outra linha de superposição para a bancada. Os membros do StockCharts podem alterar as cores eo estilo para diferenciar entre várias médias móveis. Depois de selecionar um indicador, abra Opções Avançadas clicando no pequeno triângulo verde. As Opções Avançadas também podem ser usadas para adicionar uma sobreposição média móvel a outros indicadores técnicos como RSI, CCI e Volume. Clique aqui para um gráfico ao vivo com várias médias móveis diferentes. Usando Médias Móveis com Varreduras StockCharts Aqui estão alguns exemplos de varreduras que os membros do StockCharts podem usar para varrer para várias situações de média móvel: Bullish Moving Average Cross: Esta varredura procura ações com uma média móvel em ascensão de 150 dias simples e uma cruz de alta das 5 EMA de dia e EMA de 35 dias. A média móvel de 150 dias está subindo, desde que ela esteja negociando acima de seu nível cinco dias atrás. Um cruzamento de alta ocorre quando o EMA de 5 dias se move acima do EMA de 35 dias em volume acima da média. Bearish Moving Average Cross: Este analisa procura por ações com uma queda de 150 dias de média móvel simples e um cruzamento de baixa da EMA de 5 dias e EMA de 35 dias. A média móvel de 150 dias está caindo, enquanto ela está negociando abaixo do seu nível cinco dias atrás. Uma cruz de baixa ocorre quando a EMA de 5 dias se move abaixo da EMA de 35 dias acima do volume médio. Estudo adicional O livro de John Murphy tem um capítulo dedicado a médias móveis e seus vários usos. Murphy abrange os prós e os contras de médias móveis. Além disso, Murphy mostra como as médias móveis funcionam com Bollinger Bands e sistemas de negociação baseados em canais. Análise Técnica dos Mercados Financeiros John MurphyI quer desenvolver cálculo para a média móvel de preço das ações. Mas muitos cálculos complexos foram planejados mais tarde. Meu primeiro passo para saber como calcular a média móvel de forma eficiente. Eu preciso saber como tomar a entrada e retorno de saída de forma eficiente. Considerado data e preço de entrada. Data, Preço e Média Móvel. Se eu tiver 500 registros e eu quero calcular Moving média de 5 dias o que é a maneira effient em vez de ir para trás e para a matriz e Data de Preço novamente sugerir qual é a melhor maneira de receber entrada (ArrayList, Table, array Etc) e retorno de saída. Nota: MA de hoje de 5 dias será média dos últimos 5 dias, incluindo preço de hoje. Ontem MA será média dos últimos 5 dias de ontem. Eu quero manter os dias para ser flexível em vez de 5 ele poderia ser 9, 14, 20 etc Se você precisa de cálculo simples sem o seu esforço do que você pode usar TA-Lib. Mas se você quiser que seu cálculo seja mais eficiente do que o TA-Lib, então você pode criar seu próprio indicador técnico. TA-Lib é grande, mas o problema é que esta biblioteca tem apenas métodos estáticos. Isso significa que quando você precisa calcular os valores da matriz SMA com base em barras de preço 500, então você enviará toda a matriz de barras e ele retornará matriz de valores SMA. Mas se você receber novo valor 501-st, então você deve enviar novamente toda a matriz e TA-Lib novamente calculará e retornará SMA matriz de valores. Agora imagine que você precisa desse indicador no feed de preços reais, e para cada mudança de preço você precisa de um novo valor indicador. Se você tem um indicador não é um grande problema, mas se você tiver centenas de indicadores de trabalho, que poderia ser um problema de desempenho. Eu estava em tal situação e começar a desenvolver indicadores em tempo real que são eficientes e fazer cálculos adicionais para a nova barra de preço ou para a barra de preço alterado apenas. Unfortunatelly Eu nunca precisei SMA indicador para os meus sistemas de negociação, mas eu tenho tal para EMA, WMA, AD, e outros. Um desses indicadores AD é publicado no meu blog e você pode ver a partir daí o que é a estrutura básica da minha classe indicador em tempo real. Espero que você vai precisar de pequenas mudanças para implementar SMA indicador, porque é um dos mais simples. A lógica é simples. Para calcular SMA tudo que você precisa é n últimos preços. Assim instância de classe terá coleta de preços, que irá armazenar manter apenas último n número de preços como SMA é definido (no seu caso 5). Então, quando você tem um novo bar, você removerá o mais antigo e adicionará um novo e criará um cálculo. Quinta-feira, 10 de abril de 2008 16:04 Todas as respostas Há uma biblioteca chamada TA-Lib que faz tudo isso para você e é de código aberto. Ele tem cerca de 50 indicadores penso. Weve usou-o no ambiente da produção e é muito eficiente e realible. Você pode usá-lo em C, Java, C, etc Se você precisa de um cálculo simples sem o seu esforço do que você pode usar TA-Lib. Mas se você quiser que seu cálculo seja mais eficiente do que o TA-Lib, então você pode criar seu próprio indicador técnico. TA-Lib é grande, mas o problema é que esta biblioteca tem apenas métodos estáticos. Isso significa que quando você precisa calcular os valores da matriz SMA com base em barras de preço 500, então você enviará toda a matriz de barras e ele retornará matriz de valores SMA. Mas se você receber novo valor 501-st, então você deve enviar novamente toda a matriz e TA-Lib novamente calculará e retornará SMA matriz de valores. Agora imagine que você precisa desse indicador no feed de preços reais, e para cada mudança de preço você precisa de um novo valor indicador. Se você tem um indicador não é um grande problema, mas se você tiver centenas de indicadores de trabalho, que poderia ser um problema de desempenho. Eu estava em tal situação e começar a desenvolver indicadores em tempo real que são eficientes e fazer cálculos adicionais para a nova barra de preço ou para a barra de preço alterado apenas. Unfortunatelly Eu nunca precisei SMA indicador para os meus sistemas de negociação, mas eu tenho tal para EMA, WMA, AD, e outros. Um desses indicadores AD é publicado no meu blog e você pode ver a partir daí o que é a estrutura básica da minha classe indicador em tempo real. Espero que você vai precisar de pequenas mudanças para implementar SMA indicador, porque é um dos mais simples. A lógica é simples. Para calcular SMA tudo que você precisa é n últimos preços. Assim instância de classe terá coleta de preços, que irá armazenar manter apenas último n número de preços como SMA é definido (no seu caso 5). Então, quando você tem um novo bar, você removerá o mais antigo e adicionará um novo e criará um cálculo. Quinta-feira, 10 de abril de 2008 16:04 Eu calcularia a média móvel no banco de dados por meio de um procedimento armazenado ou em um cubo. Você já olhou no Analysis Services, ele tem a capacidade de calcular médias móveis. Quinta-feira, 10 de abril de 2008 16:05 Sim. TA-LIB é bom, mas pode não ser adequado para mim. Quando eu adicionar novo valor ou valor atualizado para o histórico de registros vou fazer o cálculo em uma função separada apenas para essa nova cotação e armazená-lo no banco de dados. Estou planejando atualizar a cotação a cada hora. Eu preciso fazer cerca de 25 a 30 indicadores técnicos para 2200 ações. Quinta-feira, 10 de abril de 2008 17:51 Tempo de execução de uma chamada TA-Lib em uma matriz de 10000 elementos leva cerca de 15 milissegundos (em um Intel Core Duo 2.13 Ghz). Esta é a média de todas as funções. Entre os mais rápidos, SMA leva menos de 2,5 milissegundos. O mais lento, HTTRENDMODE, leva 450 milissegundos. Com menos elementos é mais rápido. SMA leva cerca de 0,22 milissegundos para 1000 elementos de entrada. O ganho de velocidade é quase linear (a sobrecarga de realização da chamada de função é desprezível). No contexto de sua aplicação, TA-Lib é muito improvável que seja seu gargalo para desempenho de velocidade. Também eu geralmente não recomendo essa solução nquot quotlast. Leia abaixo para mais detalhes. Primeiro, uma correção para Boban. s declaração Todas as funções em TA-Lib também pode calcular um único último valor usando um mínimo de quotlast nquot elementos. Você pode ter uma matriz de tamanho 10000, ter dados inicializar apenas para os primeiros 500 elementos, adicionar um elemento e chamar TA-Lib para calcular o SMA somente para o novo elemento. TA-Lib vai olhar para trás não mais do que o necessário (se SMA de 5, em seguida, TA-Lib irá calcular um único SMA usando os últimos 5 valores). Isso é possível com o parâmetro startIdx e endIdx. Você pode especificar um intervalo a ser calculado ou um único valor. Neste cenário, você faria startIdx endIdx 500 para calcular o elemento 501st. Por que essa solução quotlast nquot é potencialmente perigosa para alguns Independentemente da escolha da solução Boban. s ou TA-Lib consideram que usar um pequeno número finito de dados passados ​​não funcionará bem com a maioria das funções TA. Com o SMA, é óbvio que você precisa apenas de elemento n para calcular uma média sobre o elemento n. Não é tão simples com EMA (e muitas outras funções TA). O algo geralmente depende do valor anterior para calcular o novo valor. A função é recursiva. Isso significa que todos os valores passados ​​influenciam os valores futuros. Se você decidir limpar o seu algo para usar apenas uma pequena quantidade de valor n passado, você não obterá o mesmo resultado que alguém que calcula sobre um grande número de valores passados. A solução é um compromisso entre velocidade e precisão. Muitas vezes discuti isso no contexto de TA-Lib (chamo-lhe o período quotunstable na documentação e fórum). Para mantê-lo simples, minha recomendação geral é se você não pode fazer a diferença entre um algo com uma resposta de impulso finito (FIR) de um algo com uma resposta de impulso infinita (IIR), você será mais seguro para calcular todos os dados que você tem acessível. TA-Lib especifica no código qual das suas funções tem um período instável (IIR). Editado por mfortier sexta-feira, 15 de agosto de 2008 4:25 Correto inglês frase sexta-feira, 15 de agosto de 2008 4:20

No comments:

Post a Comment