Saturday 23 December 2017

Python de média em movimento ponderado exponencialmente


Estou no processo de criação de um algoritmo de negociação forex e queria experimentar meu tiro no cálculo de EMA (Exponential Moving Medias). Meus resultados parecem estar corretos (em comparação com os cálculos que fiz à mão), então eu acredito que o método seguinte funciona, mas queria apenas obter um conjunto extra de olhos para garantir que eu não perca nada. Observe que isso apenas retorna o EMA para o preço mais recente, ele não retorna uma série de EMAs, pois isso não é o que eu preciso para minha aplicação. A recursão é uma boa ferramenta para o trabalho certo, mas aqui é usado para realizar o loop simples. Como tal, o código. É mais difícil de ler e raciocinar. É mais lento porque grande parte do código em ema só precisa ser executado uma vez. Falhará com o valor de janela grande o suficiente devido à pilha de chamadas Pythons transbordante. Documentar pelo menos os parâmetros de cada função, por exemplo. Essa janela é o comprimento da janela, e essa posição conta para trás a partir do final dos dados. (Na verdade, as coisas seriam mais claras se a posição fosse um índice direto normal em dados) Aumentar uma exceção quando você encontrar um parâmetro tem um valor inválido. O retorno de Nenhum, em vez disso, só causará uma exceção mais confusa mais tarde. Na verdade, se eu tentar Indicators (). Ema (closeprices, 600) recebo uma recursão infinita porque sma retorna None. O que faz ema chamada sma uma e outra vez. O ponto anterior também revela que se len (dados) a janela 2 não é a verificação de validade correta. O 1 na janela de dados2 1: a janela 1 não parece correta para mim. Suponho que você queira data-window2: - window A declaração retorna previousema está em um lugar estranho porque nesse ponto você calculou um novo currentema. Este é o caso base da recursão, e é costume lidar com o caso base primeiro. Minha proposta para ema: respondeu 26 de novembro às 18:56 Avaliação bastante rasa: você não precisa escrever uma aula pelo que está fazendo (e sugiro que dê uma olhada neste vídeo). Sua classe não encapsula nenhum dado e você apenas usa para ter suas funções na mesma entidade. Eu acho que as coisas seriam mais fáceis de entender se você fosse definir o método da classe para deixar óbvio que você realmente não confia em nenhum caso. No entanto, uma opção ainda melhor seria simplesmente definir funções em um módulo indicador. Respondeu 24 de novembro às 18h04 Obrigado pelas sugestões que eu realmente fizesse como métodos de classe e debatia indo e voltando entre mesmo usando uma classe ou apenas definindo funções em um módulo de indicadores (o que agora vou fazer). Ndash ChrisC 25 de novembro 14 às 19:12 Apenas assistiu o vídeo, ótimo material. Ndash ChrisC 25 de novembro 14 às 19:43 Sua resposta 2017 Stack Exchange, Inc O algoritmo da média móvel ponderada exponencial (EWMA) é o filtro passa-baixa de tempo discreto mais simples. Ele gera uma saída ii na i-iteração que corresponde a uma versão dimensionada da entrada atual xi e da saída anterior y. O fator de suavização, alfa em 0,1, indica o peso normalizado da nova entrada na saída. Por exemplo, um alpha0.03 implica que cada entrada nova contribuirá com um 3 para a saída, enquanto a saída anterior contribuirá com um 97. Os valores de limite para o fator de suavização são 0 e 1, o que implica yiy e yi xi, respectivamente. Nos seguintes pontos, analisamos o algoritmo de diferentes pontos de vista. O EWMA pode ser considerado como um filtro ARMA (Auto Regressive Moving Average) porque depende do histórico de valores tanto da entrada como da saída. No entanto, se a equação EWMA for desenvolvida, é possível representar a saída atual com base apenas nas contribuições de entradas passadas, ou seja, o filtro de média móvel (MA). Yi alphacdot xi alfa (1-alfa) cdot x alfa (1-alfa) 2 cdot x. Soma alfa (1-alpha) cdot xj sum w cdot xj Na i-iteração, a saída é uma soma ponderada de cada valor de entrada anterior xj com j in, onde a escala corresponde a um coeficiente ponderado exponencial w alpha cdot (1 - alfa). A resposta de impulso h (t) de seu equivalente de sistema de Invariante de Tempo Linear (LTI) tem uma duração infinita, o que implica que a função de transferência H (z) terá duração finita. Se o símbolo representa o operando de convolução e u (n) corresponde à função de passo, pode ser indicado: y (n) x (n) h (n) com h (n) e cdot u (n) alfa (1- Alpha) n cdot u (n) O algoritmo EWMA corresponde ao filtro de tempo discreto Infinite Impulse Response (IIR) mais simples. A principal vantagem que os sistemas IIR têm sobre os FIR é a sua eficiência de implementação. Por outro lado, os sistemas IIR são mais difíceis de analisar. Para simplificar a análise, é imposta que o sistema tenha zero condições iniciais. Assim, o filtro IIR de 2ª ordem corresponde a: Na Fig. 1. é apresentado o Formulário Directo 1 (DF1) simplificado e completo do filtro. No caso do EWMA, os coeficientes têm valores fixos em termos do fator de suavização que correspondem a: a01, a11-alfa, b0alfa, b10. Aplicando essas restrições, a função de transferência torna-se: indicadores técnicos 0.0.15 Este módulo fornece alguns indicadores técnicos para análise de ações. Este módulo fornece alguns indicadores técnicos para analisar estoques. Quando eu puder, vou adicionar mais. Se alguém quiser contribuir com novos códigos ou sugestões de correções, sinta-se livre. Índice de Força Relativa (RSI), ROC, Envelopes MA Média de Movimento Simples (SMA), Média de Movimento Ponderada (WMA), Bandas de Bollinger da Média Mover Exponencial (EMA) (BB), Largura de Banda de Bollinger, B requer numpy. Este módulo foi feito e testado no Windows com o Python 2.7.3 e numpy 1.6.1.

No comments:

Post a Comment