Thursday 15 June 2017

Calcular A Mover Média De Acesso


Novos dados são adicionados à tabela diariamente de segunda a sexta-feira, com base nas mudanças nos preços de ações para esse dia. O requisito atual é baseado no campo VOLUME, que mostra o volume negociado para uma determinada ação diariamente. REQUISITOS Obter o Volume Médio e o Volume Total dos últimos 10,15 e 30 Dias, respectivamente. MÉTODO USADO ATUALMENTE - Eu criei estas 9 PERGUNTAS SEPARADAS para obter meus resultados desejados Primeiro eu criei estas 3 consultas para tirar as últimas últimas 10,15 e 30 datas da tabela atual. qryLast10DaysStored qryLast15DaysStored qryLast30DaysStored Então eu criei estas 3 perguntas para obter as respectivas médias qrySymbolAvgVolume10Days qrySymbolAvgVolume15Days qrySymbolAvgVolume30Days E então eu criei estas 3 consultas para obter os respectivos totais qrySymbolTotalVolume10Days qrySymbolTotalVolume15Days qrySymbolTotalVolume30Days problema a ser confrontados com método atual - Agora, meu problema é que eu ter terminado Up tendo essas muitas consultas diferentes, enquanto eu queria obter a saída em uma única consulta, como mostrado no instantâneo da folha de Excel. SOLUÇÃO NECESSÁRIA - Existe alguma maneira pela qual eu posso obter esses campos obrigatórios em uma única consulta, para que eu não tenho que olhar em vários lugares para os campos obrigatórios Alguém pode me dizer como obter todas essas consultas separadas em um - A) Quer retirando ou movendo os resultados dessas consultas individuais separadas para um. B) Ou fazendo uma nova consulta que calcula todos esses campos dentro de si, de modo que essas consultas individuais separadas não são mais necessárias. Esta seria uma solução melhor, eu acho. Um Esclarecimento sobre Datas Algum amigo poderia pensar porque eu usei o método de usar Top 10,15 e 30 para obter os últimos 10,15 e 30 valores de data. Por que não eu só usei o PC Data para obter esses valores Ou usei algo como - (VOLUME, tbl-B, TimeStamp ENTRE Date () - 10 E Data ()) A resposta é que eu preciso da minha consulta para Ler a data a partir do TIMESTAMP campo e, em seguida, executar seus cálculos em conformidade para ÚLTIMA MAIS RECENTE 10 dias, 15 dias, 30 dias PARA QUE OS DADOS ESTÁ DISPONÍVEL NA TABELA, SEM BOTHERING QUAL A DATA ACTUAL É. Não deve depender da data atual de qualquer maneira. Se houver qualquer método melhor ou forma mais eficiente para criar essas consultas, então por favor ilumine. PS. Tenho anexado um banco de dados SAMPLE que tem os dados de 6 meses, a partir de 1 de novembro de 2011 a 30 de abril de 2012 e também tem as consultas acima mencionadas nele. Exemplo de banco de dados com QUERIES Você tem consultas separadas para calcular 10DayTotalVolume e 10DayAvgVolume. Eu suspeito que você pode calcular tanto em uma consulta, qry10DayVolumes. No entanto, isso me faz pensar se 10DayAvgVolume pode ser alguma coisa diferente de 10DayTotalVolume 10 Considerações semelhantes se aplicam aos valores de 15 e 30 dias. Em última análise, eu acho que você quer algo baseado em um ponto de partida como este: Que pressupõe que você criou qry15DayVolumes e qry30DayVolumes seguindo a abordagem que eu sugeri para qry10DayVolumes. Se você quiser reduzir o número de consultas, você pode usar subconsultas para cada uma das consultas qryDayVolumes salvas, mas tente fazê-lo desta maneira primeiro para se certificar de que a lógica está correta. Nessa segunda consulta acima, pode haver um problema devido a nomes de campo que começam com dígitos. Coloque esses nomes entre colchetes ou re-alias-los em qry10DayVolumes. Qry15DayVolumes. E qry30DayVolumes usando nomes de alias que começam com letras em vez de dígitos. Eu testei a consulta como escrito acima com o upload. mdb 2 que você carregou, e ele correu sem erro do Access 2007. Aqui está a primeira linha do conjunto de resultados a partir dessa consulta: respondido Oct 24 12 em 19: 20Calculating totais correndo e movendo Médias no Microsoft Access com estatísticas de acesso total O Microsoft Access não oferece recursos internos para calcular totais em execução. Os totais em execução são resumos sobre um número definido de registros. Por exemplo, uma média móvel de 30 dias que você gostaria de calcular para cada registro com base em seu valor e seus 29 registros anteriores. Felizmente, o Total Access Statistics realiza uma ampla gama de cálculos de total de execução em seus registros: Execute resumos para um conjunto de registros em movimento para calcular somas, médias, mínimo, máximo, intervalo, mediana, desvio padrão, etc. Na sua fonte de dados Analisar os dados em suas tabelas e consultas do Access (incluindo dados vinculados) Agrupamento de suporte em valores de campo para que você possa executar múltiplas análises em uma passagem Totais atuais foram adicionados ao Total Access Statistics para Microsoft Access 2007 e X.7 Versões para o Access 2003 e versões anteriores. Visão geral dos totais em execução Os totais em execução são cálculos para um número definido de registros através de sua tabela ou consulta. Gerar facilmente resultados como somas em execução, médias, mínimo, máximo, mediana, etc. e colocá-los em campos em sua fonte de dados. Estes cálculos estão disponíveis: Média (média) Contagem Observações Sum Sum Squared Mínimo Máximo Desvio Padrão Desvio Variância Coeficiente de Variância Padrão Erro Modo mediano Modo Contagem Geométrico Média Harmônica Média Média Média Quadratura Skewness Kurtosis Erro Padrão de Skewness Erro Padrão de Kurtosis Até cinco campos Em sua tabela podem ser atualizados ao mesmo tempo. Como calcular valores totais são calculados Por exemplo, você pode querer calcular a média dos últimos 10 registros. Essa média móvel é determinada com base na ordem de classificação de seus dados, calculando a média desses 10 registros e colocando-a em um campo que você designar com registro 10. Para o registro 11, o registro 1 é ignorado eo cálculo é realizado para registros 2 a 11, etc. Como os outros recursos, você pode especificar campos de grupo para que cada grupo tenha seus próprios totais em execução. Este recurso não cria uma tabela separada. Os resultados são colocados nos campos especificados na sua origem de dados. Executar Seleção de Campos de Totais A tela de seleção de Campos para Executar Totais permite especificar os campos para ordenar e os campos para colocar os resultados: Os Campos de Grupo permitem que você gere um conjunto separado de análise para cada combinação de valores exclusivos entre os campos de grupo. Os Campos de classificação determinam a ordem de classificação de seus registros para calcular os valores em execução. Especifique pelo menos um campo de classificação. Isso pode incluir o campo que você está executando os cálculos. Os campos são classificados em ordem crescente. Especifique até cinco Campos a Atualizar com seus totais. Verifique se os campos são de tipos de dados que podem conter os dados que você espera colocar neles. Por exemplo, eles devem ser dobráveis ​​se você espera armazenar valores como média (média), variância, etc. Executando Total de Opções Depois de selecionar os campos, as opções Totais Correntes são apresentadas: Campo a Analisar Especifique o campo em que os cálculos são baseados. Este campo pode ser um campo que foi especificado como um campo de classificação. Por exemplo, você pode querer calcular a média corrente com base nas vendas classificadas em ordem crescente. Número de registros para calcular totais mais Especifica o número de registros no total móvel. Se você especificar 0, os totais são calculados para cada registro. Se você inserir um número específico, os cálculos são baseados nesse número de registros. O primeiro registro é descartado quando o próximo é adicionado, e os cálculos são baseados nesse conjunto de registros em movimento. Conjunto inicial de registros Se você especificar o número de registros para calcular os totais, há uma opção para determinar o que acontece antes de alcançar esse número de registros. Os totais devem ser ignorados ou calculados com base nos registros processados. Escolha Calcular para ver os totais em execução independentemente do número de registros em movimento ser atingido. Escolha deixar em branco para ter somente totais em execução quando o número especificado de registros é alcançado sem quaisquer cálculos para menor número de registros. Tipo de Cálculo Existem muitos tipos de cálculo disponíveis. Especifique o que você deseja para cada um dos campos de atualização selecionados. Resultados totais em execução Os resultados totais em execução são colocados nos campos de atualização especificados: Exemplo de totais atuais colocados nos quatro campos direitos dessa tabela do Microsoft Access Neste exemplo, os dados foram classificados por data e ID da ordem, com o cálculo no campo Vendas campo. Observe os valores no campo RunningCount aumentando de 1 para 10. Uma vez que atinge 10, permanece em 10 porque esse é o número máximo de registros no total móvel. O campo RunningTotal mostra a soma de vendas sobre os registros no conjunto de registros em movimento. Como a opção para calcular os valores para o conjunto inicial de registros foi selecionada (antes de atingir 10 registros), os valores são exibidos. Caso contrário, os primeiros 9 registros teriam valores nulos. Assistente Interativo e Interfaces Programáticas do VBA O Total Access Statistics permite gerar interativamente seus cálculos através de sua interface de assistente para selecionar facilmente a fonte de dados, campos e análise sem programação. Depois de especificar suas seleções, elas são automaticamente salvas como um cenário em seu banco de dados para que você possa executá-las novamente no futuro quando seus dados forem alterados. Uma função de estatísticas VBA também está disponível para que você possa gerar esses resultados de código. Você pode facilmente executar qualquer cenário salvo chamando um único procedimento na biblioteca Total Access Statistics VBA. A biblioteca inclui uma licença de tempo de execução livre de royalties para que você possa incluí-la em seu banco de dados do Access e distribuí-la para proprietários que não sejam Total Access Statistics. Chamar a função de um evento OnClick botões ou outro processo, e os resultados são gerados para você. Você pode até mesmo esconder a interface interna do usuário para que seus usuários nem sequer sabem que o Total Access Statistics está em execução. Eles serão surpreendidos com seus recursos de análise estatística Detalhes Adicionais de Cálculos Disponíveis em Estatísticas de Acesso Total Aqui estão alguns recursos e detalhes adicionais sobre alguns dos dados de análise que você pode executar em seus dados do Microsoft Access com Estatísticas de Acesso Total: Cálculos de Fluxo de Caixa Financeiro Use desconto de caixa Fluxos e taxas de juros para gerar o Valor Presente Líquido (VPL), Valor Presente (PV), Valor Futuro (VF), Taxa Interna de Retorno (TIR), Taxa Interna de Retorno Modificada (MIRR) para pagamentos e recibos periódicos e dependentes da data. Cálculos de Percentilos Calcule diferentes tipos de percentis: mediana, quartis, quintis, octiles, deciles, percentis, cada percentil X.5, e coloque-os em uma tabela ou atualize um campo existente com o valor de percentil de registros. Totais em Movimento e Médias Móveis Resumir um conjunto de registros em movimento para calcular somas correntes, médias móveis, mínimo, máximo, intervalo, mediana, desvio padrão, etc. Normalização de Dados (Transposição de Dados) Transponha dados não normalizados para que você possa facilmente analisar e manter isto. Regressões Regressões simples, múltiplas e polinomiais com cálculo de coeficientes de equação, ANOVA e tabela residual Tabelas cruzadas e tabelas cruzadas Chi-Square com porcentagem de linha, coluna e totais exibidos como registros ou colunasMoving Cálculo médio Cálculo de média móvel Cálculo de média móvel Estou tentando Para calcular uma média móvel para uma série de dados. Eu quero gerar a média móvel para cada ponto dentro dos dados, a fim de mostrar em um gráfico. Enfim, abaixo é um exemplo do MS Support. Eu segui à letra, mas mina não dá uma média móvel. Ele repete o mesmo ponto de dados uma e outra vez (o primeiro ponto de dados). Então, eu não acredito que a função está encontrando o startdate na linha MyRST. Seek, portanto, apenas retornando o primeiro ponto de dados. Finalmente (talvez vai fazer isso realmente fácil) Estou confuso sobre como os índices de trabalho. Eu pensei que você poderia ter apenas uma chave primária, mas aparentemente você pode criar várias restrições de campo. Eu tentei fazer isso com a seguinte consulta de definição de dados: ALTER TABLE Tabela1 ADD CONSTRAINT NoDupes ÚNICO (CurrencyType, TransactionDate) Desculpe a duração desta postagem. Eu aprecio sua ajuda. A função de exemplo a seguir calcula as médias móveis com base em uma tabela com uma chave primária de vários campos. Os valores semanais de moedas estrangeiras são usados ​​para este exemplo. Para criar a função de exemplo, execute estas etapas: Crie a tabela a seguir e salve-a como Tabela1: Table: Table1 --------------------------- -------------- Nome do campo: CurrencyType Tipo de dados da chave primária: Tamanho do campo de texto: 25 Nome do campo: TransactionDate Chave primária Tipo de dados: DateTime Formato: Data abreviada Nome do campo: Rate Tipo de dados: Currency Decimal Places: 4 Exibir a tabela no modo folha de dados e digite os seguintes valores: CurrencyType TransactionDate Rate ------------------------------- ------------- Yen 8693 0,0079 Yen 81393 0,0082 Yen 82093 0,0085 Yen 82793 0,0088 Yen 9393 0,0091 Marca 8693 0,5600 Marca 81393 0,5700 Marca 82093 0,5800 Marca 82793 0,5900 Marca 9393 0.6000 Abra um novo módulo e escreva o Funções MAvgs (Períodos como Integer, StartDate, TypeName) Dim MyDB como DATABASE, MyRST Como Recordset, MySum como Double Dim i, x Set MyDB CurrentDb () Set MyRB MyDB. OpenRecordset (Table1) Em erro Retomar Next MyRST. Index PrimaryKey x Períodos - 1 ReDim Store (x) MySum 0 Para i 0 Para x MyRST. MoveFirst MyRST. Seek, TypeName, StartDate Essas duas variáveis ​​devem estar na mesma ordem que os campos de chave primária em sua tabela. Store (i) MyRSTRate Se i lt x Then StartDate StartDate - 7 O 7 aqui assume dados semanais 1 para dados diários. Se StartDate lt 8693 Then MAvgs Null: Exit Function 8693 é substituído com a data mais antiga dos dados na tabela. MySum Store (i) MySum Próxima i MAvgs MySum Períodos MyRST. Close End Function Crie a seguinte consulta com base na tabela Table1: Query: Query1 --------------------- ---------------------------------- Campo: CurrencyType Campo: TransactionDate Campo: Rate Campo: Expr1: MAvgs (3 , TransactionDate, CurrencyType) NOTA: Esta consulta irá gerar uma média móvel de três semanas dos dados da taxa. Para calcular uma média móvel mais longa ou mais curta, altere o número 3 na coluna de consultas Expr1 para o valor que deseja calcular. Execute a consulta. Observe que você vê a seguinte média móvel de três semanas para cada moeda. Um valor Nulo indica que não havia valores anteriores suficientes para calcular essa média de semanas. Moeda Tipo TransaçãoData Taxa Expr1 Marca 080693 0,5600 Marca 081393 0,5700 Marca 082093 0,5800 0,57 Marca 082793 0,5900 0,58 Marca 090393 0.6000 0.59 Yen 080693 0.0079 Yen 081393 0.0082 Yen 082093 0.0085 0.0082 Yen 082793 0.0088 0.0085 Yen 090393 0.0091 0.0088 RE: Moving Average Cálculo dhookom (Programador) 28 Jun 10 21:15 Quantos anos tem esse código Não usa explicitamente DAO e não menciona que isso não funcionará com tabelas vinculadas. Dim MyDB como DAO. Database, MyRST como DAO. Recordset. Eu usaria uma subconsulta em vez de um conjunto de registros. Ele pode parecer algo como: SELECT CurrencyType, TransactionDate, Rate, (SELECT Avg (Taxa) FROM Tabela1 B WHERE A. CurrencyType B. CurrencyType E A. TransactionDate ENTRE B. TransactionDate - 14 AND B. TransactionDate) FROM Tabela1 A RE: Moving Cálculo médio Isso é realmente perfeito. Eu realmente aprecio sua ajuda. No entanto, o código que você deu é calcular a média móvel de 14 dias para a frente (colocando a média móvel no registro para o dia 1 da média, onde eu queria que ela fosse uma média para trás, colocada no registro 14). Eu mudei apenas ligeiramente para o seguinte e ele parece estar funcionando SELECT A. CurrencyType, A. TransactionDate, A. Rate, (SELECT Avg (Rate) FROM Tabela1 B WHERE A. CurrencyType B. CurrencyType E B. TransactionDate ENTRE A. TransactionDate - 14 AND A. TransactionDate) AS Expr1 FROM Table1 AS A Você pode ver, tudo o que fiz foi trocar A por B na cláusula where. Esta é uma ajuda muito grande para mim e eu realmente aprecio isso. Eu não vi codificação como este antes, e honestamente, eu realmente não entendo. Eu não sei como o SQL entende o que B e A são. Estou assumindo que eles estão criando algum tipo de referência alternativa para Table1. Se você pode dar qualquer orientação eu realmente aprecio isso. Além disso, talvez alguma referência ao material que eu poderia olhar Estou sempre muito animado para aprender algo novo sobre VBASQL, e eu realmente aprecio a sua ajuda RE: Moving Average Cálculo PHV (MIS) 29 Jun 10 12:22 compreende o que B e A São eles são alias es RE: Moving Average Cálculo Obrigado, PHV. É fazer sentido melhor já RE: Moving Average Cálculo joshery420 (TechnicalUser) 6 Jul 10 15:06 Uau, nunca olhou SQL vista antes. Extremamente útil. Estou tentando obter este código para funcionar no meu próprio conjunto de dados e Im preso em uma questão específica. Pd2004, não tenho certeza se o novo código de subconsulta funcionou o mesmo que o seu antigo código VBA ou não, mas com os meus dados ainda mostra a média de rolamento, mesmo se não houver dias suficientes para criar esse comprimento de uma média. por exemplo. Se eu estiver executando uma média de rolamento de 7 dias, o dia 1 mostra os mesmos dados na coluna 7DayAvg como na coluna de dados diários. Dia 2 mostraria a média dos dias 1 e 2, etc. Qualquer um de vocês sabe como corrigir isso por acaso Também, obrigado pela grande dica de código PHV. RE: Moving Average Cálculo joshery420 (TechnicalUser) 6 Jul 10 15:08 Woops, significou para agradecer dhookom para a dica de código, não PHV. Mas hey, obrigado a ambos. XD RE: Cálculo de média móvel Vou deixar as melhores soluções para os profissionais aqui, mas você pode ver no meu post original como o exemplo da Ajuda da Microsoft tenta lidar com isso. Aqui está o código: Se StartDate lt 8693 Then MAvgs Null: Exit Function 8693 é substituído com a data mais antiga dos dados na tabela. Eles estão apenas saindo da função se a data não caber os critérios. Eu não sei se você poderia incorporar algo assim no código de aliases fornecido pelo dhookem. Eu não gosto da sua maneira de lidar com isso, e eu suspeito que dhookem irá fornecer uma solução muito mais elegante. Para meus propósitos a questão que você está descrevendo não é uma preocupação, mas eu estarei interessado em ver quaisquer soluções. RE: Moving Average Cálculo dhookom (Programmer) 6 Jul 10 17:05 Você pode tentar usar IIf () para testar a contagem do número de registros. Cuidado: código de bloco de notas não testado segue: SELECT A. CurrencyType, A. TransactionDate, A. Rate, IIF ((SELECT Contagem (Taxa) FROM Tabela1 C WHERE A. CurrencyType C. CurrencyType E C. TransactionDate ENTRE A. TransactionDate - 14 AND A. TransactionDate) 7, (SELECT Avg (Taxa) FROM Table1 B WHERE A. CurrencyType B. CurrencyType AND B. TransactionDate ENTRE A. TransactionDate - 14 AND A. TransactionDate), Null) AS Expr1 FROM Table1 como A RE: Moving Average Calculation9 .2. Cálculo de uma Média Móvel Você pode usar uma instrução SELECT como a seguinte para calcular uma média móvel: Esta instrução verifica uma tabela contendo valores diários e usa uma consulta aninhada para calcular a média em Nos sete dias anteriores. Você pode facilmente ajustar esse intervalo para alterar como a média móvel é calculada. Por exemplo, você pode usar uma cláusula Where como esta para calcular a média móvel em uma janela de 14 dias, com a data atual no meio: Discussão Uma média móvel é usada para suavizar os dados da série de tempo que contém saltos visíveis entre as observações. A escala de tempo para as observações pode ser dias (como no exemplo anterior), meses ou mesmo anos. Como alternativa, você pode usar uma coluna AutoNumeração simples no lugar de um campo de data, uma vez que os valores nessa coluna também aumentarão ao longo do tempo. Quanto maior o intervalo utilizado para calcular a média móvel, mais suave será a curva resultante. Na Figura 9-3. Você pode ver como uma média móvel suaviza as observações individuais de um preço das ações. Figura 9-3. Usando uma média móvel para suavizar um conjunto de valores

No comments:

Post a Comment