Cálculo de matriz única durante a otimização - página 2

 
fxsaber:
Acoplamento de recursos. Não pergunte como. Não escrevi o código fonte.
Você precisa de um software de terceiros para criar uma matriz?
 
forexman77:

Portanto, tenho um dilema: como tornar possível a leitura de um arquivo uma vez, preencher um array com ele e usar este array em todos os passes.

Preciso disto para reduzir o tempo de otimização, porque a matriz será sempre inalterada e é caro lê-la sempre.

Bem, por exemplo, escreve um roteiro que prepara e coleta todos os dados em um array, e depois escreve o array acabado em um arquivo. E depois leia esta matriz do arquivo durante a inicialização no Expert Advisor. O arquivo pode ser usado quantas vezes forem necessárias, com cada execução da EA.
Creio que esta solução já foi sugerida a você. Não lhe convém?
 
forexman77:
Usando software de terceiros para criar uma matriz?
Sim, pela mesma MQL5 com um passe separado antes da otimização.
 
BlackTomcat:
Por exemplo, escreva um roteiro que irá preparar e coletar todos os dados em um array e depois escreva o array preparado em um arquivo. E então leia esta matriz do arquivo durante a inicialização no EA. O arquivo pode ser usado quantas vezes forem necessárias, com cada execução da EA.
Creio que esta solução já foi sugerida a você. Não lhe convém?

Sim, é isso mesmo, não se encaixa. Há 15.000 passes na otimização. E eu preciso apenas uma vez para calcular e nos passes subseqüentes apenas para abordar uma matriz.

Ou seja, já tenho dados no arquivo que são calculados com antecedência e de nível, e eles são conhecidos por mim com antecedência. E mesmo a leitura do arquivo cada vez no init é muito cara (há milhares de linhas). Eu não sei sobre a MQL5, mas na MQL4 eles escreveram no fórum que o programa passa o init em cada passagem.

 
forexman77:
Será necessário ler no inite em cada passe?
Sim. Não é difícil ou caro. Use o modo binário. Você pode não ler o arquivo inteiro, mas começar a partir da posição desejada.
 
forexman77: E até mesmo a leitura do arquivo cada vez que o inite, em cada passagem é muito cara (vários milhares de linhas). Eu não sei sobre a MQL5, mas na MQL4 eles escreveram no fórum que o programa tem um init em cada passagem.
Sabe, acho que você está exagerando nas despesas relacionadas à leitura da matriz do arquivo. Toda vez que o Windows acorda do modo de sono, ele restaura do disco rígido a imagem de seu estado que tinha no momento de dormir, incluindo o estado de todas as aplicações. Você acha que não há objetos e informações suficientes? E quanto tempo leva para sair do sono dessa maneira?
Você está exagerando, IMHO.
 
forexman77:

Sim, é isso mesmo, não se encaixa. Há 15.000 passes na otimização. E eu preciso apenas uma vez para calcular e nos passes subseqüentes apenas para abordar uma matriz.

Ou seja, já tenho dados no arquivo que são calculados com antecedência e de nível, e eles são conhecidos por mim com antecedência. E mesmo a leitura do arquivo cada vez no init é muito cara (há milhares de linhas). Eu não sei sobre a MQL5, mas na MQL4 eles escreveram no fórum que o programa passa o init em cada passagem.

Um truque clássico do mundo C/C++ : você pode fazer/converter um array estático de seu arquivo (apenas texto: double arr[100500]={1,2,3....} ) e apenas incluí-lo através de #include.

 
BlackTomcat:
Você sabe, acho que está exagerando sobre os custos de leitura de uma matriz de um arquivo. Toda vez que o Windows acorda do modo de sono, ele restaura do disco rígido uma imagem de seu estado que tinha no momento de dormir, incluindo o estado de todas as aplicações. Você acha que não há objetos e informações suficientes? E quanto tempo leva para sair do sono dessa maneira?
Você está exagerando, IMHO.

Os custos são maiores sem ambigüidade. Existem duas variantes com configurações de indicadores inalteradas e com os mesmos valores, mas já escritas em um arquivo, que são despejadas em uma matriz.

A variante com o arquivo leva muitas vezes mais tempo para ser calculada do que a variante com cálculo de indicador no Expert Advisor.

Eu estava pensando que talvez haja uma maneira de salvar a matriz uma vez e usá-la para todas as passagens de otimização, aliviando assim a carga no algoritmo.

 
Maxim Kuznetsov:

Um truque clássico do mundo C/C++: você pode fazer/converter um array estático de seu arquivo (apenas texto: double arr[100500]={1,2,3....} ) e apenas incluí-lo via #include.

Se você fizer isso, a matriz será salva quando você mudar para um novo passe?
 
forexman77:

Os custos são maiores sem ambigüidade. Existem duas variantes com configurações de indicadores inalteradas e com os mesmos valores, mas já escritas em um arquivo, que são despejadas em uma matriz.

A variante com o arquivo leva muitas vezes mais tempo para ser calculada do que a variante com cálculo de indicador no Expert Advisor.

Eu apenas pensei que talvez haja uma maneira de armazenar a matriz uma vez e usá-la para todas as passagens de otimização, aliviando assim a carga no algoritmo.

Calcule UM tempo e salve a matriz com os resultados em um arquivo. E então leia a matriz pronta do arquivo durante a inicialização e use-a imediatamente. Não há necessidade de recalcular novamente. Você já calculou tudo antes e o salvou. Por que contar novamente? :)
Razão: