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

 
Saiba se os milissegundos e nanossegundos são tão importantes que estes carrapatos estão chegando pela Internet ( IO vinculados à rede ). Uma resolução de tempo não de segundos provavelmente é exagerada, a menos que você esteja planejando algo malicioso!
 
angevoyageur:
Também não existe tal informação no mql5. Mas há eventos temporizadores que podem ser usados com precisão de milissegundos, embora eu não saiba se este recurso estará disponível com o novo mql4.

O atual equivalente em mql4 é algo como abaixo:

void start(){
    while(true){
        do_something....;
        Sleep(1000); //Sleep for one Second.
        RefreshRates();
    }
}

void start(){
    static bool RunOnce;
    if(RunOnce) return;
    int Begin=GetTickCount();
    while(GetTickCount()<Begin+1000){
        Print("GetTickCount()="+GetTickCount());
        Sleep(1);
    }
    RunOnce=true;
}

Eu testei o GTC e ele parece saltar 16_milissegundos. Venha a descobrir, provavelmente é algum tipo de limitação Computer_Science em sistemas legados. Se alguém quiser explicar por que [ apesar das minhas divagações ] eu ficarei feliz. Hummm, será que o mql5 tem as mesmas limitações? Muito bem, mais um teste que vem logo em seguida :)

 

Vale sempre a pena se esforçar para descobrir qual é a função API do Widows API que os desenvolvedores de MQL encapsularam.

Neste caso, a resposta é fácil - eles usaram GetTickCount It diz:

A resolução da funçãoGetTickCount é limitada à resolução do temporizador do sistema, que normalmente está na faixa de 10 milissegundos a 16 milissegundos.

 

Já pesquisei no Google e embora eu realmente não entenda, parece que o GetTickCount() é uma função diretamente do sistema operacional Windows. Não é para ser preciso e não deve ser usado para coisas que precisam ser precisas até o nível de milissegundos (mesmo que retorne valores em milissegundos).

Fiz testes com o sono e com a contagem de carrapatos e sempre há erros, é difícil dizer se eles são causados pelo sono ou GTC, mas meu palpite é que ambos

 
Ovo:

Vale sempre a pena se esforçar para descobrir qual é a função API do Widows API que os desenvolvedores de MQL encapsularam.

Neste caso, a resposta é fácil - eles usaram GetTickCount It diz:

A resolução da funçãoGetTickCount é limitada à resolução do temporizador do sistema, que normalmente está na faixa de 10 milissegundos a 16 milissegundos.

Obrigado.
 
ubzen:

O atual equivalente em mql4 é algo como abaixo:

Eu testei o GTC e ele parece saltar 16_milissegundos. Venha a descobrir, é provavelmente algum tipo de limitação Computer_Science em sistemas legados. Se alguém quiser explicar por que [ apesar das minhas divagações ] eu ficarei feliz. Hummm, será que o mql5 tem as mesmas limitações? Muito bem, mais um teste que vem logo em seguida :)

A limitação de 16 milissegundos vem de uma limitação de hardware, mas há outras maneiras de obter um timer de melhor precisão.
mql5 têm a mesma limitação para GetTickCount() mas como tentei explicar acima, há outras características que podem ser usadas (eventos do temporizador).

 
Ovo:

Vale sempre a pena se esforçar para descobrir qual é a função do Widows API que os desenvolvedores de MQL encapsularam.

Neste caso, a resposta é fácil - eles usaram GetTickCount It diz:

A resolução da funçãoGetTickCount é limitada à resolução do temporizador do sistema, que normalmente está na faixa de 10 milissegundos a 16 milissegundos.


Sim, é isso que diz, mas é difícil saber o que isso realmente significa. Se a resolução for 16 ms, eu esperaria ver valores de 0,16,32,48... etc.

Eu nunca vejo nada entre 0 e 16, mas vejo cada valor em torno de 16.

 
angevoyageur:

A limitação de 16 milissegundos vem de uma limitação de hardware, mas há outras maneiras de obter um timer de melhor precisão.
mql5 têm a mesma limitação para GetTickCount() mas como tentei explicar acima, há outras características que podem ser usadas (eventos do temporizador).

Apanhei-te :)
 
RaptorUK:
Volume é um nome ruim para o que é realmente "Tick count" . . não tem nada a ver com volume/lotes comercializados . . a razão pela qual pode mudar por mais de 1 é porque você pode perder carrapatos.


Obrigado pela informação. Como será que eu não percebi isso antes? Neste caso, parece ser uma informação bastante inútil (ou enganosa).

Eu realmente tenho que procurar dados reais de volume de nível 2 de alguns corretores. Felizmente, meu corretor ECN oferece dados comerciais de nível 2 com volume real.