Nifty Moving Average Database
Nifty é um índice de ações para a Bolsa de Valores nacional da Índia. Eu tenho uma base de dados chamada livedata em que o nome da tabela é nifty este é um índice de ações para National Stock Exchange of India. Eu tenho uma linha chamada ID como chave primária, tempo como timestamp, cmp para o Índice de estoque específico. Durante o dia (09:15:01 A. M. às 03:29:59 P. M.) em um único minuto (1) recebo cerca de 5 entradas comerciais. Eu queria calcular a média móvel com base no último preço de fechamento por cada minuto. Para isso, entre muitas entradas em um único (1) minuto, eu preciso apenas da última entrada comercial. Exemplo de base Resultado desejado: - Ex. (Moving Average ADD 20 período, ou seja, a última entrada comercial de cada minuto durante 20 minutos, amplificador, divida-o por 20. O valor deve aparecer no frontend pode estar usando o resultado mysqlquery (query) ou die (mysqlerror ()), por favor, sugira ... Se eu quiser obter a última entrada de cada minuto, como eu escrevo o código PHP Agora estou procurando entradas usando. Podemos usar o loop, enquanto fazemos isso por favor. Por favor, ajude-se a resolver isso muito obrigado antecipadamente. Resultados esperados Usando SELECT LOOP WHILE DO WHILE, etc. O MySQL não suporta funções analíticas, o que torna as tarefas deste tipo muito mais difíceis do que seria em muitos outros mecanismos RDBMS. Embora ainda se possa usar uma abordagem SQL baseada em conjunto puro, isso seria Tanto mais difícil de entender e provavelmente muito menos eficiente do que um pequeno short-cut usando uma variável de usuário: a consulta externa deve ser bastante auto-explicativa: ele apenas leva a média dos valores de cmp da consulta interna. A consulta interna se move Para trás sobre a mesa nítida, graças à sua A cláusula ORDER BY utilizando a variável t para acompanhar o último minuto para o qual já contabilizamos, a cláusula WHERE garante que apenas as entradas que precedem esse minuto são consideradas nextmdash enquanto o segundo termo na lista SELECT atualiza t para o início do minuto encontrado sempre que Uma correspondência é encontrada. Finalmente, a cláusula LIMIT garante que a consulta interna seja encerrada uma vez que o 20º registro tenha sido encontrado. Esta consulta seria calculada de forma mais eficiente se houver um índice composto do qual (time, cmp) são as colunas mais à esquerda, nessa ordem. Por exemplo: respondeu 11 de fevereiro 15 às 19: 37Objetivo para selecionar o preço de fechamento médio dos últimos 30 dias de negociação para cada ação, com base na data de entrada NÃO data mais recente 1) Se a data de entrada for 2015-09-18, selecione o fechamento médio Preço dos últimos 30 dias TRADING, eg (2015-09-18, 2015-09-17, 2015-09-16. 30 dias) 2) Se a data de entrada for 2015-09-01, selecione o preço de fechamento médio dos últimos 30 dias TRADING, por exemplo, (2015-09-01, 2015-09-31, 2015-09-28. 30 dias) 3) Colunas da tabela: data do código ticker aberto alto baixo volume próximo 4) A tabela contém registros para apenas TRADING dias, fins de semana e feriados são excluídos 5) Para cada estoque, há milhares de dias de registros, mas nós só queremos o MA de 30 dias em qualquer ponto no tempo EDITAR Esta versão deve ser flexível e espero que não seja muito lento. Uma vez que não tem idéia do que significa o que na sua mesa e como a tabela é chamada, eu assumi uma tabela de preço com codeAAA, BBB e assim e fechando o que significa o preço. Sua data prevista deve ser 2015-09-12 aqui. Substitua 2015-09-12 pelo que você quiser. 30 deve ser o número de dias de negociação. Substitua pelo que você quiser no limite 30. data do código ticker aberto alto baixo volume baixo Use algumas das últimas versões se a subseleção for muito lenta. Você definitivamente deve fazer uma mesa com dias de calendário, e eles obtêm uma coluna para marcar dias de negociação. Seria muito mais fácil se eles também contêm uma referência aos 30 dias antes e aos 90 dias antes. Então fica fácil: você pode preencher essa tabela do dia do calendário bastante fácil da sua tabela de ações. EDIT: desta forma você pode preenchê-lo primeiro pedidos de dia, assumindo que apenas os dias de negociação estão nesta tabela. Você poderia, naturalmente, tentar construir dinamicamente uma lista dos últimos 30 dias de negociação fora de sua tabela de estoque, mas essa tabela tem muitas entradas por dia, de modo que seria uma desaceleração desnecessária da consulta - o dia muda muito raramente, Apenas uma vez por dia. Você pode até adicionar um gatilho à sua tabela de encerramento para que, em cada inserção, ele verifique se os dias do calendário devem ser recarregados. Uma versão sem essa tabela seria semelhante: A tabela temporária só será visível em uma conexão. Flaschenpost, a solução não é tão flexível se eu fosse fazer variantes, por exemplo, em vez de 30MA ... eu preciso de um 23 MA. Em vez de MA próximo, talvez eu precise de MA de volume. Contudo. Eu encontrei uma solução parcial a partir daqui: sqlinesmysqlhow-togettopneachgroup há ainda 1 problema dessa página. Qual é essa linha. Countryrank: IF (país atual, countryrank 1, 1) AS countryrank, currentcountry é alwaus NULL, o que resulta em countryrank sempre sendo 1. se você pode me ajudar a resolver o problema do link, eu vou ter a solução final para compartilhar ndash user6890 19 de setembro 15 às 12:31 user6890 Eu gosto de variáveis, eu simplesmente não consigo ver por que elas são necessárias aqui. Seu pedido é sobre a média nos últimos 30 dias de uma determinada data. Você precisa disso para uma lista de dias, quero dizer, um estoque e a média móvel para várias datas sucessivas. Então, eu iria por variáveis, mas só então. Ndash flaschenpost 19 de setembro às 12:57
Comments
Post a Comment