Cálculo de matriz única durante a otimização

 

Há um conjunto que não muda durante toda a otimização. É possível calculá-lo uma vez e referir-se a ele apenas em cada passagem durante toda a otimização sem calculá-lo novamente?

 
Então calcule-o em OnInint()
 
Alexey Viktorov:
Então calcule-o em OnInint()

Na MQL4 eu estava lendo dados do arquivo no inite, mas demorou muito tempo. Eu não sei se o initeé usado a cada novo passe ou não?

Encontrei-o no fórum, cada vez que o inite é utilizado, ou seja, a matriz será recalculada.

https://www.mql5.com/ru/forum/104222

 

É claro que não.

Oops... Não li com cuidado e entendi mal a pergunta.

 
forexman77:

Na MQL4 eu estava lendo dados do arquivo no inite, mas demorou muito tempo. Eu não sei se o initeé usado a cada novo passe ou não?

Encontrei-o no fórum, cada vez que o inite é utilizado, ou seja, a matriz será recalculada.

https://www.mql5.com/ru/forum/104222

É elementar. Você verifica o tamanho da matriz em cada execução. Se a matriz estiver vazia ou se a bandeira de cálculo for falsa, você a recalcula:

if(ArraySize(optimize_array) == 0)
   CalculateArray();
 
Vasiliy Sokolov:

É elementar. Você verifica o tamanho da matriz cada vez que a executa. Se a matriz estiver vazia ou se a bandeira de cálculo for falsa, você a recalcula:

Mas eu ainda não o testei. Mas, pergunto e que a matriz será salva do primeiro passe (onde será calculada) e estará disponível nos passes subseqüentes?

 
forexman77:

Mas eu ainda não o testei. Mas, vou perguntar e que a matriz será salva do primeiro passe (onde será calculada) e estará disponível para os passes subseqüentes?

Não será assim. Você tem que recalculá-lo ou salvá-lo em um arquivo e lê-lo.
 
Dmitry Fedoseev:
Não vai. Você tem que recalculá-lo ou salvá-lo em um arquivo e lê-lo.

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.

Eu preciso dele para reduzir o tempo de otimização, porque a matriz permanecerá sempre inalterada e será sempre caro lê-lo.

 
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.

No MT5 há um evento para iniciar a otimização, calcular array nele, salvá-lo para arquivar e lê-lo no interior da EA.
 

Acoplamento de recursos. Não pergunte como. Eu não escrevi o código fonte.

Terá que ser lido no inite. Mas não será lido a partir do disco, mas da memória. Assim, na verdade, a matriz ficará na memória.

 
Dmitry Fedoseev:
No MT5 há um evento para iniciar a otimização, nele se calcula a matriz, salva-a em um arquivo e, no init do EA, lê-se.
Você precisará lê-lo no init em cada passe?