Características da linguagem mql5, subtilezas e técnicas - página 92
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
Qual é a probabilidade de o tempo do computador local mudar entre duas chamadas para GetMicrosecondsCount usadas para medir o tempo em microssegundos?
Não é zero.
Discussão muito construtiva )
Só mais alguns rabiscos removidos permanentemente e pronto.
Chega de tolerar aqueles que se apressam para o embargo, tentar chamar a realidade das funções WinAPI de insecto e culpar-nos. Haverá claramente mais construtivo.
Não é zero.
Qual é a probabilidade de perda de tempo de troca cliente/servidor em milissegundos? Provavelmente mais do que a probabilidade de mudar a hora local.
Basta apagar mais alguns rabiscos permanentemente e pronto.
Chega de tolerar aqueles que se apressam para o embargo, tentando chamar a realidade de insecto e nos culpar. Haverá claramente mais.
ligeiramente à direita do tema, na direção de OnTimer() )))
Não me lembro onde li, lá escreveu um representante da MQ, que é possível (para quem tem uma coceira forte ) mudar o sistema para um atraso de 1ms e então, se você usar EventSetMillisecondTimer(...), OnTimer() também funcionará com um erro de cerca de 1 ms, mas não de 16 ms
Se eu entendi corretamente, OnTimer() opera com o atraso do sistema, certo?
ps. enviou um pedido para Servcie-desk ontemNão processado,Iniciado: 2018.07.30 12:52,#2117844, poderia ajudar a processá-lo, está pendurado desde ontem ))OnTimer trabalha com o erro do temporizador WinAPI do sistema, controlado através da função WinAPI GetTickCount. Esta é uma forma muito rápida e barata de cronometragem que tem um impacto mínimo no processo a ser medido. Isto significa que não afecta muito o resultado final.
A precisão deste temporizador pode ser melhorada para todo o sistema operacional, mas ao custo tanto do aumento do consumo da CPU como dos efeitos induzidos aleatórios e massivos da massa de programas que começam a
O problema do temporizador do sistema Windows tem mais de 20 anos de idade. Mas é perigoso mudar o comportamento e a precisão do temporizador antigo.
É por isso que novos e mais precisos métodos de cronometragem foram introduzidos há muito tempo. Mas eles são de recursos intensivos e pouco razoáveis para serem usados como um substituto completo do velho temporizador.
Nosso timer com maior precisão é implementado com a GetMicrosecondCount. Deve ser usado conscientemente e com o entendimento de que custa mais do que o GetTickCount. Além disso, o custo das chamadas para a GetMicrosecondCount deve ser explicitamente considerado em casos de medição precisa.
É muito fácil enganar a si mesmo e aos outros, usando mal o temporizador e não mantendo o benchmark limpo.
Chega de tolerar aqueles que correm para a emboscada e tentam chamar a realidade das funções WinAPI de insecto e nos culpam. Haverá claramente mais construtivo.
Você pode simplesmente escrever em ajuda que GetMicrosecondsCount depende do tempo do computador local e pode funcionar inadequadamente quando ele é modificado. GetTickCount não o faz.
Então, se você precisa resolver isso no nosso nível e no seu, você provavelmente deveria fazer isso no nosso.
Por que você deveria proibir?
O OnTimer funciona com erro do temporizador WinAPI do sistema, controlado através da função WinAPI GetTickCount. Esta é uma forma muito rápida e barata de cronometragem que tem um impacto mínimo no processo a ser medido. Isto significa que não afecta muito o resultado final.
A precisão deste temporizador pode ser melhorada para todo o sistema operacional, mas ao custo tanto do aumento do consumo da CPU como dos efeitos induzidos aleatórios e massivos da massa de programas que começam a
O problema do temporizador do sistema Windows tem mais de 20 anos de idade. Mas é perigoso mudar o comportamento e a precisão do temporizador antigo.
É por isso que novos e mais precisos métodos de cronometragem foram introduzidos há muito tempo. Mas eles são de recursos intensivos e pouco razoáveis para serem usados como um substituto completo do velho temporizador.
Nosso timer com maior precisão é implementado com GetMicrosecondsCount. Deve ser usado conscientemente e com o entendimento de que custa mais do que o GetTickCount. Além disso, o custo das chamadas para a GetMicrosecondsCount deve ser explicitamente considerado em casos de medição precisa.
É muito fácil enganar a si mesmo e aos outros usando mal o temporizador e falhando em manter o benchmark limpo.
oops, era isso que eu estava pensando depois que o representante do MQ escreveu sobre a diminuição do tempo do sistema))
por isso apoio que não seja necessário mudar nesta direcção.
a propósito, eu gostaria de saber se algum desenvolvimento é feito no sentido dareflexão como em C# ou pelo menos como em impulso ? por exemplo serialização / desserialização seria mais conveniente para implementar
Você pode simplesmente escrever na ajuda que GetMicrosecondsCount depende do tempo do computador local e pode não funcionar adequadamente quando ele é modificado. E o GetTickCount não depende disso.
Está escrito na Ajuda: A função GetMicrosecondCount() retorna o número de microssegundos, decorridos desde o início do programa MQL5.
Isso foi o que eu disse claramente: para medir o número de microssegundos.
O problema da medição de microssegundos em relação ao problema também pode ser resolvido, embora de uma forma um tanto embaraçosa.
Por que devemos proibir?
Temos de proibir.
Em primeiro lugar, não há problema com a medição do tempo do temporizador de microssegundos. Segundo - algumas pessoas estão ansiosas para arranjar uma desculpa para dar um ataque, e depois ficar com ela até ao fim.
Mais uma vez - as regras mudaram.
Não mais insultos ou "você deve" serão aceitos. Vamos fazer uma varredura sem aviso prévio.
Diz isso na ajuda: A função GetMicrosecondCount() retorna o número de microssegundos decorridos desde o início do programa MQL5.
E está escrito para a função GetTickCount:
A função GetTickCount() retorna o número de milissegundos que passaram desde que o sistema foi iniciado.
As frases são quase idênticas, mas uma função depende da hora local e a outra não. Como devemos adivinhar?
E está escrito para a função GetTickCount:
As frases são quase idênticas, mas uma função depende da hora local, a outra não. Como é suposto adivinharmos isso?
Esta é a WinAPI.
Um lembrete sobre o uso de frases do tipo "deve" explícita ou implicitamente. O uso de "metaquotes deve" em vez de "por favor considere" é agora inaceitável.