class A { public:
int m;
A() { Alert("A"); m=1; }
};
class B { public:
B() { Alert("B"); static A a; Alert("a.m==",a.m); Alert("&a==",&a);}
};
B b;
voidOnStart()
{
};
Ao executá-lo, obtemos a seguinte ordem de alertas:
B a.m==0 &a==0 A
Ou seja, a variável estática ainda não foi inicializada no momento do acesso. Até o ponteiro é nulo. Foi simplesmente saltado e seguimos em frente em segurança.
Ou inicializa a variável e vai mais longe ou aborta a compilação com um erro.
Mas quando ocorre a repetição de classes mutuamente referenciadas, a compilação deve ser abortada.
t...' - o identificador é demasiado longo mas.dat 1 1
'' - símbolo desconhecido mas.dat 1 3015
O seu script deve gerar um ficheiro mas.mqh, que conterá um conjunto de uchar-tipos contendo bytes dos seus dados. Por exemplo, se o ficheiro tiver três bytes de tamanho, o conteúdo do ficheiro mas.mqh deve ser o seguinte:
uchar mass[3] = {25, 127, 89};
A massa de matriz gerada é o que se deve usar no seu programa.
Não é necessário ler um ficheiro do disco dezenas de milhares de vezes. É para isso que serve a cache do disco, embora não saiba se é utilizado neste caso em particular, mas deve verificá-lo e medi-lo antes de inventar muletas.
Muito obrigado pela solução fornecida. Tudo funciona.
Seria muito mais rápido ler todo o ficheiro da matriz na memória, e depois trabalhar com ela.
Como é que ligo um ficheiro de matriz ao meu EA?
Primeiro, o guião escreve uma matriz:
Conecto o ficheiro na EA:
Ao compilar, erros:
t ...' - o identificador é demasiado longo mas.dat 1 1
'' - símbolo desconhecido mas.dat 1 3015
Bugs sérios com variáveis estáticas. Considere este código:
Ao executá-lo, obtemos a seguinte ordem de alertas:
B
a.m==0
&a==0
A
Ou seja, a variável estática ainda não foi inicializada no momento do acesso. Até o ponteiro é nulo. Foi simplesmente saltado e seguimos em frente em segurança.
Ou inicializa a variável e vai mais longe ou aborta a compilação com um erro.
Mas quando ocorre a repetição de classes mutuamente referenciadas, a compilação deve ser abortada.
Como é que ligo um ficheiro de matriz ao meu EA?
Primeiro, o guião escreve uma matriz:
Conecto o ficheiro na EA:
Ao compilar, erros:
t ...' - o identificador é demasiado longo mas.dat 1 1
'' - símbolo desconhecido mas.dat 1 3015
O seu script deve gerar um ficheiro mas.mqh, que conterá um conjunto de uchar-tipos contendo bytes dos seus dados. Por exemplo, se o ficheiro tiver três bytes de tamanho, o conteúdo do ficheiro mas.mqh deve ser o seguinte:
A massa de matriz gerada é o que se deve usar no seu programa.
Acho que o optimizador não terá de abrir-leitura-clarar o ficheiro dezenas de milhares de vezes.
No modo de depuração de dados históricos, MQLInfoInteger(MQL_VISUAL_MODE) retorna sempre verdadeiro.