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
Ver Declarações Prospectivas para as aulas
A função OnTimer() no testador de estratégias, atrasa bastante a execução, quando solicitada a cada segundo. void OnInit() { EventKillTimer(); EventSetTimer(1); } void OnTimer() { } Expert Advisor, com dois indicadores externos e correndo através de todos os ticks, está a correr 2012.04.11 14:32:07 Core 1 EURUSD,H1: 8083516 ticks (4557 barras) gerados dentro de 70418 ms (total de barras na história 6270, tempo total 70528 ms) Se OnTimer() for comentado, a execução é significativamente acelerada 2012.04.11 14:36:22 Core 1 EURUSD,H1: 8083516 ticks (4557 barras) gerados dentro de 22730 ms (total de barras na história 6270, tempo total 22870 ms) Estes atrasos são causados pelo testador, ou podemos acelerá-lo de alguma forma?
P.S. Uma prévia da mensagem teria sido implementada(
A função OnTimer() no testador de estratégias, atrasa bastante a execução, quando solicitada a cada segundo. void OnInit() { EventKillTimer(); EventSetTimer(1); } void OnTimer() { } Expert Advisor, com dois indicadores externos e correndo através de todos os ticks, está a correr 2012.04.11 14:32:07 Core 1 EURUSD,H1: 8083516 ticks (4557 barras) gerados dentro de 70418 ms (total de barras na história 6270, tempo total 70528 ms) Se OnTimer() for comentado, a execução é significativamente acelerada 2012.04.11 14:36:22 Core 1 EURUSD,H1: 8083516 ticks (4557 barras) gerados dentro de 22730 ms (total de barras na história 6270, tempo total 22870 ms) Estes atrasos são causados pelo testador, ou podemos acelerá-lo de alguma forma?
P.S. Uma prévia da mensagem teria sido implementada(
O que significa esta entrada no testador?
Não tem graça.
Compreendo que as ligações no caso geral em mql5 não são devolvidas de funções (a propósito, porque não?), mas então é necessário fazer algo para tornar os indexadores de valor l possíveis. Por exemplo, para fazer uma excepção de sintaxe à regra geral para indexadores esquerdinos. Ou uma palavra-chave de algum tipo.
A manqueira obviamente não faz o mql5.... parecer agradável.
Limp claramente não faz mql5.... parecer bem
A manqueira claramente não faz o mql5.... parecer bom
É necessário construir ligações de pleno direito para isso :)
ZS: está a vazar :)
Bug?
O código abaixo gera uma espécie de loop perpétuo no compilador. Clicando em Cancelar
não funciona de imediato, mas quando funciona, recupera o controlo do editor.
O botão Cancelar em si não desaparece, mas também não é acessível.
O botão Compile perde-se para sempre (é necessário voltar a carregar o editor para o recuperar)
Não tem graça.
Como gosto de compreender que as ligações no caso geral em funções mql5 não regressam (a propósito, porque não podem?), mas devo fazer algo para tornar os indexadores de valor l possíveis, por exemplo, fazer uma excepção de sintaxe à regra geral para indexadores de esquerda. Ou uma palavra-chave de algum tipo.
A manqueira claramente não faz o mql5.... parecer agradável.
"Passar" elementos internos não pertencentes à classe base para o exterior (e neste exemplo não o atributo em si, mas apenas um elemento de matriz!) Especialmente com a possibilidade de alterar o seu valor não é seguro.
Além disso, contradiz o "espírito" da programação orientada para o objecto: todo o trabalho com dados do objecto deve ser realizado dentro do objecto, pelos seus próprios métodos...
Que tal utilizar apenas o Setter para o atributo de dados?
O código ganharia em legibilidade. Eventualmente, esta "simplicidade" com o indexador do valor l não fará ninguém entender como funciona este código...
Passará mais tempo à procura de erros do que a escrever Setter.
Aqui está um exemplo:
Se puder substituir o código como enquanto ((duplo)data[++i -1] < 10) por algo mais longo mas digerível, é melhor fazê-lo dessa forma...
teste estrutural
{
dados duplos[];
tamanho int;
void Init(int Size) {size=Size; ArrayResize(data,fmin(size,Max));}
conjunto vazioDataElement (índice int, valor duplo)
{
data[índice] = valor;
}
privado:
estática int Max;
};
//+------------------------------------------------------------------+
int Teste::Max=1024;
//+------------------------------------------------------------------+
//| Função de início do programa script |
//+------------------------------------------------------------------+
nulo OnStart()
{
Teste t;
t.Init(16);
for(int i=0;i<t.size;i++)
{
//t[i]=i*i; // ERRO :'=' - l-valor necessário
t.setDataElement(i, i*i);
}
}