Thursday, 24 November 2016

Moving Average Net

Eu quero desenvolver o cálculo para a média móvel do 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 média móvel por 5 dias o que é a maneira effient em vez de ir para a frente e para trás na matriz de data e preço novamente sugerir o que é 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 de 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ços 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 classe instância 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. Tem cerca de 50 indicadores eu acho. 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 de 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ços 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 classe instância 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 SMA, é óbvio que você só precisa 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 quotlimitquot seu algo para usar apenas uma pequena quantidade de passado n valor, você não obterá o mesmo resultado como 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-o 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 infinito (IIR), você será mais seguro para calcular todos os dados que você tem disponí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 AM frase correta em inglês sexta-feira, 15 de agosto de 2008 4:20 AMMy objetivo é obter uma média ponderada de uma tabela, com base em outras tabelas chave primária. Eu preciso obter uma média ponderada com base no comprimento de um segmento e eu preciso ignorar os valores de -1. Eu sei como fazer isso em SQL, mas meu objetivo é fazer isso no LINQ. Parece algo como isso no SQL: Eu ainda sou muito novo para o LINQ, e ter um tempo difícil descobrir como eu iria traduzir isso. A média ponderada do resultado deve chegar a cerca de 55,3. Obrigado. Perguntou Apr 26 10 at 15:23 Eu faço isso o suficiente para que eu criei um método de extensão para LINQ. Depois de obter o seu subconjunto de dados a chamada se parece com isso. Isso se tornou extremamente útil porque eu posso obter uma média ponderada de qualquer grupo de dados com base em outro campo dentro do mesmo registro. Eu agora verificar para dividir por zero e lançar uma exceção mais detalhada em vez de retornar 0. Permite ao usuário pegar a exceção e lidar conforme necessário. Se você está certo de que para cada chave estrangeira na Tabela 2 há um registro correspondente na Tabela1, então você pode evitar a junção apenas fazendo um grupo por. Nesse caso, a consulta LINQ é assim: É assim que você pode obter o wheightedAverage para uma chave estrangeira específica. O método ToList chamado ao buscar os registros é evitar a execução da consulta duas vezes enquanto agrega os registros nas duas operações de Soma separadas. O que é a média móvel do casco DIG A média móvel do DIG Hull faz com que sua média móvel responda aos preços atuais enquanto Permanecendo liso e não agitado. A beleza do HMA é que ele consegue eliminar lag quase completamente enquanto se mantém perfeitamente liso. Isto é o que você está procurando em uma média móvel que significa que você pode obter seus sinais mais rápido e fazer menos erros. Como a comparação de HMA com outras médias móveis Vamos começar comparando o HMA com uma média móvel simples (SMA) do mesmo comprimento. Apenas um lembrete rápido: O cálculo de SMA faz exame dos últimos preços de fechamento de n e calcula sua média geralmente é negociado tomando um SMA curto e longo e quando os dois cruzam um sinal ocorre. O SMA está associado a duas questões problemáticas: Comprimento mais longo - Lag torna-se significativamente maior. Comprimento de ordenação - O MA torna-se muito agitado S038P500 Futuros Diário Gráfico: No gráfico você pode ver o padrão SMA (comprimento 34) em ciano / azul claro, e nosso DIGHullMovingAverage (comprimento 34) em amarelo. O lado esquerdo do gráfico mostra que, enquanto o SMA ainda está indo contra o mercado, o HMA está pegando ambos os pivôs e mudar de direção, mantendo-se suave. Você também pode ver o quão grande o atraso / lag realmente é olhando as duas linhas verticais à direita o SMA muda sua direção cerca de 15 bares mais tarde do que o nosso HMA isso significa que você teria entrado no comércio mais cedo e apreciado que nice bearish mover. Agora vamos adicionar a média móvel exponencial padrão (EMA). A idéia principal atrás do EMA é fornecer mais significado aos dados mais novos lá para eliminar o lag que você observará que o HMA é realmente mesmo melhor do que o EMA porque reagirá mais rapidamente mas remanescerá liso. S038P500 Futuros Diário Gráfico: SMA (comprimento 34) em azul ciano / azul claro. EMA (comprimento 34) em roxo. DIGHullMovingAverage (comprimento 34) em amarelo. Você pode ver que o EMA está entre o HMA eo SMA. É mais responsivo do que o SMA, mas uma milha atrás do HMA. Você também pode ver que a linha EMA não é tão suave quanto a linha HMA. Para resumir, o EMA é uma melhoria do SMA, e nosso DIG Hull Moving Average leva isso ainda mais, proporcionando uma média móvel mais suave e mais precisa do que você já viu antes. MA Tendência Recurso: Temos adicionado outra característica que torna este indicador ainda melhor. Usando um interruptor simples, você pode dizer nosso indicador do DIG HMA para colorir-se de acordo com sua direção. Vamos vê-lo em ação: AAPL 30 Min Chart: O DIG HMA é codificado por cores de acordo com sua direção, tornando muito mais fácil obter sinais rapidamente. Colocamos dois indicadores DIG HMA, um com o comprimento de 34 e um com o comprimento de 80 você pode ver três grandes sinais cruzados. Low lag - Entre antes de outros comerciantes. Supper smooth moving average - Eliminar entradas falsas. Novo recurso Cor codificada de acordo com a tendência. Fácil de usar e suporta qualquer gráfico e qualquer período de tempo. Baixar DIG Hull Moving Average Gratuito


No comments:

Post a Comment