Precisa de ajuda! Não consigo resolver o problema, estou atingindo limitações de hardware - página 12
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Mas as seqüências são independentes uma da outra, não são? Então por que não podemos percorrer as datas em uma seqüência de carga única de uma só vez? Aqui, a propósito, pode ser possível ir a algum algoritmo de recorrência eficiente, mas isso depende de sua sorte. O tamanho de um milhão sobre um milhão permanecerá, e o arquivo será lido uma vez.
Naturalmente, um problema onde o número de passos na próxima iteração permanece o mesmo (ou seja, a área de busca como computada não fica mais estreita) não parece robusto. Mas isto é subjetivo, é claro.
Сделки в разных последовательностях разные, по времени распределены неравномерно (и в каждой последовательности по своему). Сделок разное количество. Но все - в интервале от Даты1 до Даты2.
A tarefa é passar de D1 para D2 com passo de M minutos (ou melhor - exatamente por pontos de fazer negócios de todas as seqüências), encontrar a seqüência que é melhor do que outras pelo critério K (uma tarefa separada - não apenas encontrar a melhor seqüência, mas ordenar todo o conjunto pelo critério e sair os 10 primeiros - mas é uma opção, ainda não necessária).
O critério K é calculado com base em X operações anteriores da seqüência correspondente, enquanto que o cálculo de quase todas as informações sobre cada uma das X operações (apenas o lucro, por exemplo, não é suficiente).
É por aqui que deveríamos ter começado.
Se entendi corretamente o seguinte:
1) Um arquivo de 20 gb consiste em cerca de um milhão de seqüências ordenadas por tempo
2) O tamanho de cada seqüência pode variar e depende do número de negócios que a seqüência contém
3) O tamanho médio de uma sequência é 20/10^6 = 20 Mb, então o que podemos garantir para baixar completamente uma sequência?
4) O coeficiente K depende apenas dos negócios dentro da seqüência dada
5) Para cada seqüência temos que encontrar K (no total 10^6 peças) e selecionar as 10 melhores
A Se criarmos outro arquivo com valores de distâncias entre seqüências.
1) Ver quantas sequências podemos baixar e somar a distância entre elas (mantendo os valores intermediários das somas)
2) Nós lemos a distância do arquivo para a RAM
3) Executar para cada seqüência do algoritmo de busca para encontrar K (sabemos onde começa a seqüência, pois mantemos os subtítulos calculados no passo 1)
4) Novamente o ponto 1 começa um pouco à frente
Quanto aos 10 primeiros:
n é o valor total de K, m é o número de melhores.
1) você pode encontrar todos os K e então, com a ajuda da estrutura de dados amontoados, escolher o número necessário de melhores valores (Get heap O(n), escolher o melhor O(log n) número de vezes m, espaço na memória - n)
2) contar o número necessário - m instâncias (por exemplo, 10), ordená-las e usar uma busca binária para encontrar o ponto de inserção para as demais instâncias K.
(ordenação inicial O(m*log m), busca por inserção O(log m) número de vezes (n-m), inserção O(1), espaço de memória ocupado - m).
A recorrência nestas dimensões cairá quando o limite do cache for excedido.
3) O tamanho médio da seqüência é 20/10^6 = 20 MB, o que irá carregar completamente uma seqüência que podemos garantir?
Sinto que não consigo obter a essência do que é necessário e do que é dado (((
А потом "нужная дата" сдвигается на точку закрытия сделки из выбранной последовательности и алгоритм повторяется.
e sim20/10^6 = 20kb porque 1gb = 1000mb = 10^6kb
Indo em direção a SQL
Isto pode ser bastante lento na fase de aprendizagem.
Se você escolher esta opção, é melhor construir toda a lógica comercial com procedimentos armazenados
deixar o Expert Advisor apenas duas funções, enviar uma solicitação para o servidor e obter um resultado completamente acabado
todos os cálculos no servidor
Na verdade, na web você pode encontrar muitas descrições de como colocar o servidor SQL
( ORACL, SYBASE + CENTOS por exemplo ) ORACL, SYBASE, MS SQL + WINDOWS máquina autônoma
ORACL é um pouco mais complicado de aprender - menos especialistas, menos literatura.
MS SQL - talvez a maior quantidade de informações e mais literatura na web.
não haverá dificuldades - há muitas descrições na web e mais livros na loja.
O MSSQL 2012 por seus parâmetros é muito próximo ao ORACL - já em 2014.
SQL + LINUX é geralmente escolhido para fins de produção e se você não sabe nada sobre LINUX é melhor usar WINDOWS.
Balão MSSQL Expres, mas as restrições usam 1 núcleo, 1Gb de memória e 10Gb de base
outros são pagos.
...
Há muitas seqüências de negócios semelhantes, cada seqüência é ordenada por tempo.
As transações em seqüências diferentes são diferentes, distribuídas desigualmente no tempo (e de forma diferente em cada seqüência). O número de acordos é diferente. Mas todos eles estão no intervalo de Data1 a Data2.
A tarefa - passando de D1 para D2 com passo de M minutos (ou melhor - especificamente por pontos de fazer acordos de todas as seqüências), encontrar uma seqüência, que é melhor do que outras pelo critério K (uma tarefa separada - não apenas encontrar a melhor seqüência, mas ordenar todo o conjunto pelo critério e sair os 10 primeiros - mas é uma opção, ainda não necessária).
...Eu não entendo onde.
Há um critério - todos - no intervalo de Data1 a Data2.
Tudo é assim.
E então a "data certa" é deslocada para o ponto de fechamento do negócio da seqüência selecionada e o algoritmo se repete.
E assim por diante um milhão de vezes =)
Ou seja, o próximo é lido.
Por que não dividir o arquivo em muitos intervalos de Data1 a Data2? Haverá seqüências de gastos que podem ser fechadas, certo?
Eu não entendo onde.
Aqui está o critério - tudo está entre a Data1 e a Data2.
Ou seja, a leitura é a seguinte.
Por que não dividir o arquivo em muitos intervalos de Data1 a Data2? Haverá seqüências de uso que podem ser fechadas, certo?
se o problema for este:
dada uma linha 1 2 3 4 5 6 7 8 9
dada uma largura de, por exemplo, 4, você tem que ir com esta largura através de toda a linha para encontrar algum valor dentro da largura (por exemplo, um mínimo):
primeiro você precisa encontrar em 1 2 3 4, depois 2 3 4 5, depois 3 4 5 6, depois 4 5 6 7, depois .... etc.
então a tarefa é resolvida mantendo o mínimo na estrutura de dados da fila:
1) a implementação disto foi sugerida no curso de vídeo mails.ru através de quatro estruturas de dados em pilha
2) Eu inventei verbalmente uma implementação através da estrutura de dados em fila e da estrutura de dados em dec, muito provavelmente, alguém já o fez uma vez e o nome dele já foi dado, eu só preciso encontrá-lo.