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
Eu faço isso. Eu faço um único teste. Durante estes testes eu escrevo arrays em um arquivo. Então eu faço a otimização na mesma área, mas as matrizes não são recalculadas em cada barra ou carrapato, elas são lidas a partir do arquivo. A otimização através da abertura de preços em um período semanal é instantânea. Sem operações de arquivo, leva horas.
Vejo, ou seja, você pode ler o arquivo pronto com dígitos em um array (meu caso), depois escrevê-lo em um arquivo binário, e depois usá-lo.
Bem, se você precisa ler dados de 10 matrizes do arquivo, então você precisa fazer um classificador, que entenderá o fim da matriz por dígitos especiais e preencherá a próxima matriz... Pois não é conveniente escrever o tamanho da matriz toda vez.
Primeiro, escrevemos uma variável int com o tamanho da matriz no arquivo, depois uma matriz, depois outra variável int com o tamanho, depois uma matriz, etc.
Na mesma ordem que lemos: ler variável com tamanho, ler matriz desse tamanho, próxima variável, matriz, etc.
Eu tenho uma situação um pouco diferente. Só preciso preencher a matriz uma vez e usá-la para todos os meus passes. Isto é, para mim, mesmo com cada passe, encher a matriz uma vez no inite é muito.
Portanto, preencha uma vez para um único teste. Os programas durante os testes e a otimização devem diferir nas operações de arquivo. Durante os testes, está escrevendo, enquanto durante a otimização, está lendo. Dois códigos devem ser escritos. O que você quer dizer com "initing to fill an array" é muito? Invocar um array de um arquivo não leva mais tempo do que, por exemplo, abrir um pedido ou uma operação de multiplicação com o dobro.
Muito do porquê: eu conheço todo o conjunto com antecedência. E assim surgiu a questão de como salvar esta matriz entre os passes. Meu entendimento é que é reiniciado no próximo passe, embora eu não esteja exatamente certo sobre isso.
Eu não concordo que a leitura seja mais rápida no meu caso. A velocidade é mais rápida, se eu receber os mesmos dados através de indicadores, e diminui significativamente, quando leio estes dados preparados a partir de um arquivo sem cálculo de indicadores. Em um pequeno espaço de tempo com o número de linhas de mil e em um grande segmento é muito caro ler o arquivo a cada vez.
A idéia era a seguinte: ler os dados e escrevê-los em um array e depois, em todos os passes, usar apenas este array, ou seja, o array é exatamente o mesmo desde o primeiro passe até o último.
Muito do porquê: eu conheço todo o conjunto antecipadamente. E assim surgiu a questão de como salvar esta matriz entre os passes. Meu entendimento é que é reiniciado no próximo passe, embora eu não esteja exatamente certo sobre isso.
Eu não concordo que a leitura seja mais rápida no meu caso. É mais rápido, quando obtenho os mesmos dados através de indicadores, e fica mais lento, quando leio estes dados do arquivo sem cálculo de indicadores.
A idéia era a seguinte: ler os dados e colocá-los em um array e depois usar este array para todos os passes, ou seja, o array é exatamente o mesmo desde o primeiro passe até o último.
Primeiro escrevemos uma variável int com o tamanho do array para o arquivo, depois um array, depois outra variável int com o tamanho, depois um array, etc.
Ler na mesma ordem: ler variável com tamanho, ler matriz desse tamanho, próxima variável, matriz, etc.
A idéia era ler os dados e colocá-los em um array e depois em todos os passes usar apenas este array, ou seja, o array é exatamente o mesmo desde o primeiro passe até o último.
O MT4 realmente funciona com arquivos muito lentamente, não sei como será no MT5, especialmente com um arquivo binário...
Eu resolvo este problema com uma função que escreve toda a matriz diretamente no código, mas não é uma solução universal, é claro.
Aqui está um exemplo de como escrever e ler uma série
Execute-o duas vezes no modo de depuração e veja quanto tempo leva para escrever e ler a matriz. A primeira execução irá escrever o array para arquivar, e a segunda irá lê-lo e começar a imprimir datas a partir do array. Em seguida, descubra a parte destacada, se IS_DEBUG_MODE deve ser removida, e se IsOptimization() deve ser inserida na condição.
É aqui que me sinto inculto... Como escrever uma variável int do tamanho de uma matriz em um arquivo binário? Isto é, como seria possível identificar esta variável ao ler a partir do arquivo?
Existe uma função, algo como FileWriteInteger(). Identificar por localização, a variável deve estar no início do arquivo, após lê-la o ponteiro se moverá para seu fim, ou seja, para o início do array, após ler o array o ponteiro estará antes da próxima variável...
Um artigo sobre como trabalhar com arquivos está chegando em breve.
Existe uma função, algo como FileWriteInteger(). Identificar por localização, a variável deve estar no início do arquivo, após lê-la o ponteiro se moverá para seu fim, ou seja, para o início do array, após ler o array o ponteiro estará antes da próxima variável...
Haverá um artigo sobre como trabalhar com arquivos em breve.
Eu entendo, obrigado.
Mas eu gostaria de dar uma olhada no código, então eu vou esperar pelo artigo.