Perguntas sobre a MQL4. - página 8

 
Figura 6
Arquivos anexados:
zigtester.jpg  16 kb
 
ANK:
Quem sabe se isto é correto?
um arquivo não pode ser incluído mais de uma vez no código.
assim tem que ser:
- ou fazer vários arquivos com diferentes nomes de variáveis e funções globais (esta é uma versão lamer =)
- ou lógica de projeto para que não haja sobreposição ao ligar de diferentes funções (isso pode exigir algum trabalho, mas é uma boa solução ;)

E você não pode dizer algo mais exato sem exemplos, descrições de erros ou código completo (o melhor de tudo) =)
 
O Expert Advisor e o roteiro em loop estão rodando na janela ao mesmo tempo.
É correto supor que enquanto o Expert Advisor espera que o servidor responda a uma operação comercial
o roteiro continua a funcionar como de costume sem paradas e atrasos, realizar seus cálculos (não operações comerciais)?
 
SKif:
O Expert Advisor e o roteiro em loop estão rodando na janela ao mesmo tempo.
É correto supor que enquanto o Expert Advisor espera que o servidor responda a uma operação comercial
o roteiro continua a seguir seu curso sem paradas e atrasos, realizar seus cálculos (não operações comerciais)?
Sim.
tanto o Expert Advisor como o roteiro trabalham em seus próprios tópicos.
 
OK, obrigado.
Devemos considerar normal quando a hora de início do indicador e da EA não coincide quando o botão EA é ligado?
Talvez eu esteja entendendo mal algo ou fazendo algo errado, mas percebo que a diferença de tempo pode ser superior a 250ms.

Também. O status do botão EA tem algum efeito sobre o funcionamento do indicador?
É possível rastrear o estado deste botão a partir do indicador?
 
Fiz uma pequena pesquisa...

Colocou um indicador na janela:
int start() { GlobalVariableSet(GV_Tick, 1); return; }

Colocar um EA na janela:
int start() { GlobalVariableSet(GV_Knopka, 1); return; }

E um roteiro com um trecho como este:
... T_Tick=0; T_Knopka=0; while (Tick==0 || Knopka==0 ) // Ждём тика и разреш. кнопки советн. { Tick = 0; Knopka = 0; Tick = GlobalVariableGet(GV_Tick ); Knopka = GlobalVariableGet(GV_Knopka ); if (Tick>0 && T_Tick==0)T_Tick=GetTickCount(); if (Knopka>0) { T_Knopka=GetTickCount(); Alert("T_Tick=",T_Tick, " T_Knopka=",T_Knopka, " Запазд= ",T_Knopka-T_Tick); } } ... GlobalVariableSet(GV_Knopka, 0 ); // Обнуляем прошлые события GlobalVariableSet(GV_Tick, 0 ); // Обнуляем прошлые события


E aqui estão os resultados:
Durante o período destacado em vermelho, o mouse simplesmente se movia em um círculo de 50mm de diâmetro a 3 rotações por segundo.
Não houve impacto sobre o terminal.

Acontece que, durante um período de silêncio "normal", o atraso é de aproximadamente 20-60 ms, e ainda mais durante o período em que o usuário está em contato com o terminal.
Além disso, descobri que o início do indicador() é iniciado no período de redimensionamento da janela e ao alternar entre janelas.
---------------
Estou principalmente interessado na legalidade deste atraso, "normal" e "incomum".
E eu gostaria de alguns comentários dos desenvolvedores - como é apropriado à intenção.
Arquivos anexados:
1.png  21 kb
 
Eu mesmo farei os testes e informarei os resultados.
 
OK.
Na ausência de qualquer outra opção, fui guiado pela opção de medir o tempo de atraso da EA e dos sinais indicadores, a fim de julgar se o botão EA estava desligado. Desta vez era para ser muito curto. Mas isso varia muito.

É muito interessante, o que você vai descobrir.
(Em geral, preciso de toda esta cozinha para responder a uma simples pergunta: status do botão EA)
 
Os especialistas trabalham em seus próprios fios, independentemente de outras tarefas.
Acontece que a carga da CPU é causada pelo movimento do mouse, quando centenas de comandos de movimento do mouse são enviados em massa. Entre esses comandos "mouse" estão também comandos para atualizar os EAs, o que leva a atrasos.
 
Então, devemos assumir que a operação não simultânea do roteiro, do indicador e do Expert Advisor é um fenômeno comum?
Então... como se vive no mundo?
Razão: