Wednesday, 3 May 2017

Moving Average Haskell


Estou trabalhando na aprendizagem de Haskell, então eu tentei implementar uma função de média móvel Aqui está o meu código. Quando o usuário chama mAverage com um comprimento para cada média ea lista de valores, por exemplo, mAverage 4 1,2 100.No entanto, quando eu executar O código na entrada mAverage 4 1,2 100000 Eu recebo que leva 3 6 segundos em ghci usando set s e usa um gigabyte de memória Isso parece muito ineficiente para mim, como a função equivalente leva uma fração de segundo em Python Is Há alguma maneira que eu poderia fazer o meu código mais eficiente. asked dezembro 27 16 em 19 59.One maneira de fazer a janela deslizante é passar na primeira soma como um passe Float na lista original para ser usado para subtrair a corrente Soma ea lista original com k entradas caiu para ser usado para adicionar à soma atual Então a próxima soma é a soma passada menos o primeiro elemento da lista de subtração mais o primeiro elemento da lista de adição Chai T Rex 27 de dezembro 16 at 20 33.Se você quiser aprender algo novo você pode dar uma olhada nesta solução agradável f Ou Moving Average É escrito por um dos meus alunos, então eu não vou reivindicar a autoria Eu realmente gosto porque é muito curto O único problema aqui é a função média Essas funções são conhecidas por serem ruins Em vez disso, você pode usar Dobras bonitas por Gabriel Gonzalez E sim, esta função leva O k tempo onde k é o tamanho da janela para calcular a média da janela Eu acho que é melhor porque você pode enfrentar erros de ponto flutuante se você tentar adicionar apenas novo elemento para a janela e subtrair última Oh, ele também usa o estado Monad. UPD depois de alguma revisão de código eu notei que não é necessário usar dobras aqui para calcular a média Você sabe que o comprimento será sempre n para que você possa apenas colocar a função média em onde clause. answered 27 de dezembro às 23 26.Here sa A idéia é digitalizar duas listas, uma onde a janela de média começa e outra onde termina. Obtendo uma extremidade da cauda de uma lista custa tanto quanto a digitalização da parte que estamos pulando, e não estamos copiando nada. Tamanho das janelas era Bastante grande, poderíamos calcular o restante de dados juntamente com a contagem de inicialização de uma só vez. Geramos uma lista de somas parciais como descrito no meu comentário, dividindo-as pela largura das janelas para obter médias. Enquanto slidingAverage calcula as médias para a janela de posição tendenciosa Largura para a direita, centeredSlidingAverage calcula médias centradas, usando metade da largura da janela para a esquerda e para a direita. Quando eu tento comprimento slidingAverage 10 1 1000000 leva menos de um segundo no meu MBP Devido à preguiça centeredSlidingAverage leva mais ou menos o mesmo tempo. Respondeu Dec 27 16 at 22 25.Sua Resposta.2017 Stack Exchange, Inc. Moving Average Indicator. Shorter comprimento médias móveis são mais sensíveis e identificar novas tendências anteriores, mas também dar mais falsos alarmes mais longas médias móveis são mais confiáveis, mas menos responsivo, Apenas pegar as grandes tendências. Use uma média móvel que é metade do comprimento do ciclo que você está seguindo Se o comprimento do ciclo pico-a-pico é de aproximadamente 30 dias, então Uma média móvel de 15 dias é apropriada Se 20 dias, então uma média móvel de 10 dias é apropriada Alguns comerciantes, entretanto, usarão médias móveis de 14 e 9 dias para os ciclos acima, na esperança de gerar sinais ligeiramente à frente do mercado. Números de Fibonacci de 5, 8, 13 e 21.100 a 200 dias 20 a 40 semanas são populares para ciclos mais longos.20 a 65 Dia 4 a 13 semanas de média móvel são úteis para ciclos intermediários e.5 a 20 dias para ciclos curtos. O sistema de média móvel mais simples gera sinais quando o preço cruza a média móvel. Por muito tempo quando o preço cruza acima da média movente de abaixo. Curto quando o preço cruza abaixo da média movente de acima. O sistema é prone aos whipsaws em mercados de variação, Com o cruzamento de preços em toda a média móvel, gerando um grande número de sinais falsos. Por essa razão, os sistemas de média móvel normalmente empregam filtros para reduzir os whipsaws. Mais sistemas sofisticados usam mais de um movimento ave Rage. Two Moving Averages utiliza uma média móvel mais rápida como um substituto para o preço de fechamento. Três médias móveis emprega uma terceira média móvel para identificar quando o preço está variando. Multiple Moving Averages usar uma série de seis médias de movimento rápido e seis médias lentas para Se mutuamente. As médias móveis deslocadas são úteis para fins de tendência seguinte, reduzindo o número de whipsaws. Keltner Canais usam bandas plotadas em um múltiplo do intervalo verdadeiro médio para filtrar cruzamentos de média móvel. O popular MACD Moving Average Convergence Divergence indicador é uma variação Do sistema de média móvel dois, traçado como um oscilador que subtrai a média lenta de mover a média rápida. A revisão semanal de Twiggs Colin dos mercados globais irá ajudá-lo a identificar o risco de mercado melhorar o seu timing. Given que estamos em uma linguagem sem arrays, Eu suponho que você é um iniciante de língua De qualquer maneira, informações adicionais devem ser editadas na própria pergunta, assim outros usuários fazem Nt tem que escavar informações dos comentários que eu não tenho tempo para dar uma resposta completa, mas isso deve ser viável com caudas zipWith e um pouco de limite de violino Zeta Nov 6 16 em 10 43.Moving média pode ser calculada com um mealy Máquina, onde o estado interno é valores anteriores. Eu vou mostrar uma média móvel sobre três argumentos exemplo, você pode violino-se para, por exemplo, torná-lo parametrisable em tamanho. Mealy máquina é essencialmente um estado inicial, e estado de entrada para o novo estado saída função. Vamos supor que o estado inicial é todos os zeros e escrever uma função para a média móvel em 3.Now temos todas as peças, vamos executar a máquina na entrada. Você pode cair primeiro produziu valores, como o estado interno da máquina está se aquecendo. Para a média arbitrária máquina de média móvel, você poderia usar como é muito melhor estrutura de dados quando você empurra para uma extremidade, enquanto pop de outra lista, então único ligado. Por que eu estou falando sobre Mealy máquina Porque em algum momento você ll muito provável Correr em si Tuation onde você precisa usar alguma biblioteca de streaming em tubos Haskell conduta ou máquinas Então Mealy máquina abordagem será a única solução razoável. Além disso, você pode fazer modelos autorregressivos também.

No comments:

Post a Comment