novo mql4 fornecendo milissegundos em timestamps.... - página 4

 
autoabacus:

...
Muito interessante. Muito interessante.
 

Notei que o mt4 agora tem uma GetMicroSecondCount(). Isto seria superior ao uso da função GetTickCount em termos de precisão?

Qual seria a vantagem/desvantagem de usar vs GetMicrosecondCount() vs GetTickCount()? Utiliza mais recursos? Eu pensaria que a resolução MicroSec seria uma função superior à MilliSec. Você sempre pode converter MicroSec para Millisec ou resolução mais baixa, mas não pode pegar Millisec e obter MicroSecs ou resolução mais alta.


Por que a MQ sugeriu a função GTC versus GMicroC para timestamp milissegundos? Entendo que talvez antes não houvesse função GMicroC. Mas agora que há, por que não atualizar a documentação para recomendar GMicroC para uma resolução mais alta de timestamp?

 
4evermaat:

Notei que o mt4 agora tem uma GetMicroSecondCount(). Isto seria superior ao uso da função GetTickCount em termos de precisão?

Qual seria a vantagem/desvantagem de usar vs GetMicrosecondCount() vs GetTickCount()? Utiliza mais recursos? Eu pensaria que a resolução MicroSec seria uma função superior à MilliSec. Você sempre pode converter MicroSec para Millisec ou resolução mais baixa, mas não pode pegar Millisec e obter MicroSecs ou resolução mais alta.


Por que a MQ sugeriu a função GTC versus GMicroC para timestamp milissegundos? Entendo que talvez antes não houvesse função GMicroC. Mas agora que há, por que não atualizar a documentação para recomendar GMicroC para uma resolução mais alta de timestamp?

Parece que você gosta de reclamar Você pediu milissegundos e agora você tem microssegundos. De qualquer forma, será melhor se o TimeCurrent() (e outro tempo retornado do servidor) retornar milissegundos.

Se você quiser falar com Metaquotes, você deve escrever para ServiceDesk, eles muito raramente respondem a este fórum.

 
4evermaat:

Notei que o mt4 agora tem uma GetMicroSecondCount(). Isto seria superior ao uso da função GetTickCount em termos de precisão?

Qual seria a vantagem/desvantagem de usar vs GetMicrosecondCount() vs GetTickCount()? Utiliza mais recursos? Eu pensaria que a resolução MicroSec seria uma função superior à MilliSec. Você sempre pode converter MicroSec para Millisec ou resolução mais baixa, mas não pode pegar Millisec e obter MicroSecs ou resolução mais alta.


Por que a MQ sugeriu a função GTC versus GMicroC para timestamp milissegundos? Entendo que talvez antes não houvesse função GMicroC. Mas agora que há, por que não atualizar a documentação para recomendar GMicroC para uma resolução mais alta de timestamp?

Enquanto GetTickCount é uma função central da API do Windows (desde o início do Windows), a outra função requeria (embora simples) implementação. Elas não estão relacionadas umas com as outras.
 
zirkoner:

Parece que você gosta de reclamar Você pediu milissegundos e agora você tem microssegundos. De qualquer forma, será melhor se o TimeCurrent() (e outro tempo retornado do servidor) retornar milissegundos.

Se você quiser falar com Metaquotes, você deve escrever para ServiceDesk, eles muito raramente respondem a este fórum.

Não reclamando. Só me pergunto por que agora que uma nova função está disponível mais precisa, eles (ou qualquer um) ainda recomendariam a função mais antiga. Escrevi para o balcão de serviço.

Ovo:
Enquanto o GetTickCount é uma função central da API do Windows (desde o início do Windows), a outra função requeria (embora simples) implementação. Elas não estão relacionadas umas com as outras.

Que implementação a GetMicroSecondCount() usa para obter precisão de microssegundos em carimbos de tempo?

 
4evermaat:

Que implementação a GetMicroSecondCount() usa para obter precisão de microssegundos em carimbos de tempo?

Tenho uma idéia clara de como codificá-la, mas não sou o codificador MQ. De qualquer forma, por que você precisa saber se eles já o fizeram funcionar para você?
 

Para obter o tempo do sistema como milli segundos da época:


#include <WinAPI\windef.mqh>
#import
"kernel32.dll" void GetSystemTimeAsFileTime(FILETIME& t); #import ulong getCurrentEpochMsc(){      FILETIME t;      GetSystemTimeAsFileTime(t);      ulong time = (long)t.dwHighDateTime << 32 | t.dwLowDateTime;      ulong diffTo1970 = 11644473600000;      return (ulong)(time * 0.0001 - diffTo1970 - TimeGMTOffset()*1000); }
 
owneroxxor: Para obter o tempo do sistema como milli segundos a partir da época:

A Datetime é um tempo a partir de segundos da época. Lançar a um longo e multiplicar por 1000. Não há necessidade de tudo isso.

 
William Roeder:

A Datetime está a segundos da época. Lança-se a um longo e multiplica-se por 1000. Não há necessidade de tudo isso.

Você não está considerando que em alguns casos (como o meu) eu precisava conhecer o instante atual (precisão de milissegundos) do sistema para comparar com um pedido feito TimeMsc(). Nesse caso, o que você disse não é válido.

 
owneroxxor:

Você não está considerando que em alguns casos (como o meu) eu precisava conhecer o instante atual (precisão de milissegundos) do sistema para comparar com um pedido feito TimeMsc(). Nesse caso, o que você disse não é válido.

Basta usar GetTickCount().
Razão: