Precisa de ajuda! Não consigo resolver o problema, estou atingindo limitações de hardware - página 16

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
Temos um fragmento do arquivo em nossa memória, passamos por ele e formamos uma amostra de comprimento necessário para o cálculo do critério, selecionando apenas negócios, que pertencem à mesma seqüência. Em seguida, calculamos o critério sobre esta amostra. A propósito, há possibilidades de utilizar a recursividade ao selecionar, em teoria.
Ou eu não entendi a pergunta?
P.S. É claro, temos que voltar atrás no arquivo ao formar a amostra.
Temos um fragmento do arquivo em nossa memória, passamos por ele e formamos uma amostra do comprimento necessário para o cálculo do critério, selecionando apenas negócios, pertencentes à mesma seqüência. Em seguida, calculamos o critério sobre esta amostra. A propósito, há possibilidades de utilizar a recorrência ao selecionar, por idéia.
Ou será que entendi mal a pergunta?
P.S. É claro, temos que voltar atrás no arquivo ao formar a amostra.
o problema da inserção de novos dados - resolvê-lo de alguma forma.
Por que passar e selecionar as meias brancas muitas vezes, se é mais fácil ir e jogar as brancas em uma cesta e as pretas em outra, e depois perguntar quem está lá e em que quantidade.
Um pedaço é lido. O tamanho do pedaço é determinado pelo número de transações até a Data de Busca que estavam em uma determinada seqüência.
o problema da inserção de novos dados - resolvê-lo de alguma forma.
por que passar muitas vezes e escolher meias brancas quando é mais fácil ir e jogar branco em uma cesta preta em outra e depois perguntar quem está lá e em que quantidade.
Demasiados dados também são ruins :)
O problema é que não são os brancos e os negros que são selecionados aqui, mas aqueles que são localmente mais brancos. Assim, calcular o grau global de escuridão não economiza. A propósito, comecei nesta linha apenas com uma sugestão de cálculo contínuo do critério.
P.S. A propósito, ninguém impede de processar alguns arquivos juntos - simplesmente o cache para cada um terá que fazer menos. Mas parece ter reserva no tamanho do cache.
Ou seja, os novos dados podem simplesmente ser acumulados em outro arquivo.
P.P.S. A propósito, o corte do arquivo em vários arquivos menores facilitará o problema de classificação.
1. Se o Critério fosse estático... E se seus parâmetros mudarem?
2. Sim, então haverá uma troca. Mas o recálculo só será necessário para os dados mais recentes, não há necessidade de abalar toda a história.
3. esta é uma ferramenta...
4. Exatamente.
1. do que disse acima"Que o critério seja o lucro médio dos últimos 20 negócios da seqüência. "Isto deve ser entendido como um critério, a expectativa móvel de lucro. Que outros existem?
No banco de dados, gerar uma tabela com identificador de seqüência e médias móveis correspondentes. As seqüências que não se enquadram nas condições devem ser eliminadas imediatamente. Isto deve ser feito por um procedimento de modo concorrente no SGBD, a pedido do robô, com o status do processo exibido no robô.
Digamos, FilterAvgProfit (pProfitValue, pTrades, pDeviation),
onde pProfitValue é o lucro alvo, pTrades é o número de operações para o lucro médio móvel, pDeviation é o desvio permitido do pProfitValue.
O resultado - tabela preenchida com identificações de seqüência e valores médios de lucro.
Da mesma forma, você pode escrever procedimentos armazenados para cada um dos critérios.
2. Se parte dos dados for descartada (use "dados frescos" em vez de 1 milhão), isso dará um ganho de desempenho.
3. não estava muito claro a partir da declaração. Agora ok.
4. Tanto quanto eu vejo, se estamos olhando para a seleção de estratégias, esta operação não deve ser realizada com muita freqüência (digamos, em cada bar ou imediatamente antes de abrir uma ordem). Esta abordagem é razoável se a estratégia atual mostra que N perde negócios em uma linha - então podemos escolher outra e levará tempo para "tomar uma decisão", não há nada a evitar. Ou, realizar tal seleção uma vez por semana (nos fins de semana, quando o mercado estiver fechado), e, ou confirmar a estratégia atualmente selecionada, ou mudar para outra. É possível fazer uma lista das melhores estratégias recomendadas para um comerciante, em determinadas condições. Então, quando o mercado abrir e com a cabeça limpa (na segunda-feira), o comerciante confirmará a escolha (ou antes, antes da abertura do mercado... o alerta por e-mail, etc.).
Em algum lugar como este.
Память выделяется однократно для массива структур последовательностей.
A estrutura da seqüência inclui: No., Matriz de estruturas de todos os negócios da seqüência [X], Valor do critério, Posição do Índice de Arquivo.
O próximo passo é apenas o preenchimento dos elementos da estrutura (incluindo as matrizes de negócios). Os negócios na matriz são deslocados, de modo que há sempre apenas X negócios de cada seqüência na memória.
Você aloca memória para uma série de estruturas e obtém:
matrizno,
um conjunto de conjuntos de estruturas de todos os negócios da seqüência [X],
um conjunto de valores de Critério,
um conjunto de Posições de Ponteiros de Arquivo.
Por que você precisa damatriz de valores do Critério e damatriz de Posições do Índice de Arquivos? (Você já pensou em armazenar um critério e o último comércio?)
Acertei:
Primeiro passe - busca no intervalo de 0 a SeekDate
então encontrar o melhor critério eFindDate = hora de fechamento do comércio + 1
procure agora no intervalo do"horário de fechamento do comércio" até oSeekingDate ?
e você precisa ter X negócios nesse intervalo para calcular o critério para cada seqüência?
Compartilhando os resultados de minha pesquisa.
O arquivo de cache binário de 7529 MB lê:
Conclusão: a rapidez na leitura de um grande arquivo com RAMdisk é de cerca de 2,5x.
Resultados estranhos.
Aqui está a partir de nosso sistema de servidor de trabalho sob carga:
Sem os discos RAM, a construção de projetos leva muitas vezes mais tempo.
Resultados estranhos.
Aqui está a partir de nosso sistema de servidores de produção sob carga:
Sem os discos RAM, a construção de projetos leva muitas vezes mais tempo.
Na minha opinião, a solução para o problema está na codificação dos dados brutos.
Se você não consegue escapar da leitura dos dados brutos várias vezes, você precisa convertê-los para um formato aceitável para múltiplas leituras.
Uma opção possível é converter cada registro para um número de 16 bits. A cada campo do registro original deve ser atribuído um número específico de bits no número. Por exemplo:
O dígito mais significativo do número:
- "0" significa um resultado negativo da transação;
- "1" denota um resultado positivo de uma transação.
o dígito inferior do número:
- 0" denota um comércio de COMPRA;
- "1" significa um negócio de venda.
e assim por diante.
Assim, ao invés de ler repetidamente um arquivo fonte com muitos campos, o trabalho é reduzido a ler repetidamente um único campo numérico, o que deve dar uma velocidade significativa.
Em geral, o arquivo fonte pode ser gerado imediatamente em um formato codificado, embora as informações nele contidas apareçam de forma não-visual.
Mas não em "16 bits", mas em 64 bits, Andrew tem um processador x64, portanto a unidade mínima de volume ao acessar a memória é de 64 bits. Mesmo se você ler um byte de memória, o processador ainda assim lerá 8 bytes (duas palavras duplas).
Sim, nesta forma a tarefa é paralela - cada vez queo SeekDate muda,você pode executar uma busca simultânea pelo melhor critério em diferentes partes do conjunto de seqüências. Por exemplo, os dividimos em 20 partes e damos a tarefa a 20 Conselheiros Especialistas. E eles devem ler o arquivo, encontrar o negócio e enviar apenas a melhor seqüência (№№, Critério e posição do arquivo).
Muito obrigado!
Aí está, outra coisa ))