четверг, 28 июня 2018 г.

Desvio de média móvel e padrão


Desvio padrão Desvio padrão da medição da volatilidade do mercado. Este indicador descreve a variação das flutuações de preços em relação à média móvel. Portanto, se o valor desse indicador for alto, o mercado é volátil e os preços das barras são bastante difundidos em relação à média móvel. Se o valor do indicador for baixo, o mercado pode descrever-se como tendo uma baixa volatilidade, e os preços dos bares são bastante próximos da média móvel. Normalmente, esse indicador é usado como constituinte de outros indicadores. Assim, ao calcular Bollinger Bandsreg, é necessário adicionar o valor do desvio padrão do símbolo à sua média móvel. O comportamento do mercado representa o intercâmbio de alta atividade comercial e mercado lânguido. Assim, o indicador pode ser interpretado facilmente: se seu valor é muito baixo, ou seja, o mercado é absolutamente inativo, faz sentido esperar um pico, caso contrário, se for extremamente alto, provavelmente significa que a atividade declinará em breve. Cálculo StdDev (i) SQRT (AMOUNT (ji - N, i) / N) AMOUNT (ji - N, i) SUM ((ApPRICE (j) - MA (Apagar. N, i)) 2) StdDev (i) Padrão Desvio da barra atual SQRT raiz quadrada AMOUNT (ji - N, i) soma de quadrados de ji - N para i N período de suavização ApPRICE (j) preço aplicado da barra j MA (Apagar. N, i) valor médio móvel com O período N na barra atual ApPRICE (i) preço aplicado da barra atual. Perceba que você pode ver meu método C para calcular Bandas Bollinger para cada ponto (média móvel, banda ascendente, banda descendente). Como você pode ver, esse método usa 2 para loops para calcular o desvio padrão móvel usando a média móvel. Ele costumava conter um loop adicional para calcular a média móvel nos últimos n períodos. Este eu poderia remover adicionando o novo valor de ponto a totalaverage no início do loop e removendo o valor do ponto i-n no final do loop. Minha pergunta agora é basicamente: Posso remover o loop interno restante de uma maneira similar que eu consegui com a média móvel perguntada em 31 de janeiro de 13 às 21:45 A resposta é sim, você pode. Em meados dos anos 80, desenvolvi apenas um algoritmo desse tipo (provavelmente não original) no FORTRAN para uma aplicação de monitoramento e controle de processo. Infelizmente, isso aconteceu há mais de 25 anos e não me lembro das fórmulas exatas, mas a técnica foi uma extensão da média móvel, com cálculos de segunda ordem em vez de apenas linear. Depois de olhar para o seu código, penso que posso descobrir como eu fiz isso naquela época. Observe como seu loop interno está fazendo uma Soma de Quadrados: da mesma forma que sua média deve ter originalmente uma Soma de Valores. As únicas duas diferenças são a ordem (seu poder 2 em vez de 1) e que você está subtraindo a média Cada valor antes de você marcar. Agora, isso pode parecer inseparável, mas na verdade eles podem ser separados: agora o primeiro termo é apenas uma Soma de Quadrados, você lida com a mesma maneira que você faz a soma de Valores para a média. O último termo (k2n) é apenas a média ao quadrado do período. Como você divide o resultado pelo período de qualquer maneira, você pode simplesmente adicionar o novo quadrado médio sem o loop extra. Finalmente, no segundo termo (SUM (-2vi) k), desde SUM (vi) total kn, você pode alterá-lo para este: ou apenas -2k2n. Que é -2 vezes o quadrado médio, uma vez que o período (n) é dividido novamente. Então, a fórmula combinada final é: (certifique-se de verificar a validade disso, já que eu estou derrubando o topo da minha cabeça) E incorporar seu código deve ser algo assim: Obrigado por isso. Eu usei isso como base de uma implementação em C para o CLR. Descobri que, na prática, você pode atualizar de forma que newVar seja um número negativo muito pequeno, e o sqrt falhar. Introduzi um if para limitar o valor a zero para este caso. Não é idéia, mas estável. Isso ocorreu quando cada valor na minha janela tinha o mesmo valor (usei um tamanho de janela de 20 e o valor em questão era 0,5, caso alguém pretendesse tentar reproduzir isso). Ndash Drew Noakes 26 de julho 13 às 15:25 Ive Usou common-math (e contribuiu para essa biblioteca) para algo muito parecido com isso. Sua fonte aberta, portar para C deve ser fácil como torta comprada na loja (você tentou fazer uma torta do zero). Confira: commons. apache. org/math/api-3.1.1/index. html. Eles têm uma classe StandardDeviation. Vá para a cidade respondeu Jan 31 13 às 21:48 Você já esqueci Desculpe, eu não tinha a resposta que você estava procurando. Eu definitivamente não queria sugerir portar toda a biblioteca. Apenas o código mínimo necessário, que deveria ser algumas centenas de linhas ou assim. Note-se que não tenho ideia do que as restrições legais / de direitos autorais apache têm nesse código, então você deve verificar isso. No caso de você persegui-lo, aqui está o link. De modo que o Variance FastMath ndash Jason Jan 31 13 às 22:36 A informação mais importante já foi dada acima --- mas talvez isso ainda seja de interesse geral. Uma pequena biblioteca Java para calcular média móvel e desvio padrão está disponível aqui: github / tools4j / meanvar A implementação é baseada em uma variante do método Welfords mencionado acima. Métodos para remover e substituir valores foram derivados que podem ser usados ​​para mover o Windows de valores.

Комментариев нет:

Отправить комментарий