novo mql4 fornecendo milissegundos em timestamps....

 

Atualmente, o mql4 só pode fornecer tempo até o segundo mais próximo para a entrada de carrapatos. Usamos a seguinte função:

MarketInfo(Symbol(), MODE_TIME)

1) Existe alguma função diferente que possa fornecer um carimbo de tempo de milissegundos ou que possa ser usado para determinar milissegundos para os dados de carrapato que chegam à plataforma?

2) o novo mql4 que combina funções mql5 será capaz de solicitar ou obter carimbos de tempo de milissegundos (ou subsegundos) nos carimbos de entrada?

Então como a plataforma mt4 (e mt5) deve distinguir corretamente entre carrapatos que chegam "ao mesmo tempo"?

 
4evermaat:

Atualmente, o mql4 só pode fornecer tempo até o segundo mais próximo para a entrada de carrapatos. Usamos a seguinte função:

MarketInfo(Symbol(), MODE_TIME)

1) Existe alguma função diferente que possa fornecer um carimbo de tempo de milissegundos ou que possa ser usado para determinar milissegundos para os dados de carrapato que chegam à plataforma?

2) o novo mql4 que combina funções mql5 será capaz de solicitar ou obter carimbos de tempo de milissegundos (ou subsegundos) nos carimbos de entrada?

Então como a plataforma mt4 (e mt5) deve distinguir corretamente entre carrapatos que chegam "ao mesmo tempo"?

1) GetTickCount(), deve funcionar ao vivo. Sem sentido nos dados históricos.

2) Mesmo o mt5_data não é salvo em milissegundos. No entanto, no_problem Live.

3) Não vejo aonde você quer chegar com isso. Se é o mesmo tempo em milissegundos, então ter milissegundos não ajudaria. Se for diferente em milissegundos do que GetTickCount() pode ajudar. Ajuda no sentido de que seu código processa o tick atual em menos de um milissegundo. O quão importante tudo depende do que você está tentando realizar... eu acho.

 

Você tem pelo menos duas opções.

1. Distinguir os carrapatos com o GetTickCount() da MQL, que tem 16 ms de precisão.

2. Acessar o tempo do PC usando GetLocalTime() da Kernell32.dll com precisão de nanossegundos (isto não funciona com emuladores em linux, eles ainda retornam a precisão de 16 ms).

 

4evermaat: Acho que os carrapatos se distinguem pelo Volume. Cada vez que um novo tique é enviado pelo corretor, o Volume aumentará em um. Por exemplo, se você estiver olhando para um gráfico M1, o volume para uma determinada barra é quantos carrapatos foram enviados naquele minuto.

Na verdade, ontem eu tentei fazer uma função que registra o tempo com milissegundos. Ele usou TimeCurrent() e GetTickCount(). Matematicamente, estava certo... mas GetTickCount() não é suficientemente preciso. Descobri que os tempos de eventos de arredondamento até o último segundo (ou seja, apenas usando TimeCurrent() ) tinham erros menores do que minha função... :/

Vou tentar novamente outro dia, mas até onde posso ver, você não pode confiar no GetTickCount() se precisar de precisão dentro de um segundo.

Talvez os especialistas em C++ possam acessar equivalentes mais precisos de GetTickCount()...?

 
Ovo:

Você tem pelo menos duas opções.

1. Distinguir os carrapatos com o GetTickCount() da MQL, que tem 16 ms de precisão.

2. Acessar o tempo do PC usando GetLocalTime() da Kernell32.dll com precisão de nanossegundos (isto não funciona com emuladores em linux, eles ainda retornam a precisão de 16 ms).


1) Pelos meus testes, não acredito que GetTickCount() tenha uma precisão de 16ms. É verdade, 16ms é o pequeno valor que recebo (com exceção de 0), mas não acho que valores sobre 16ms sejam precisos para os 16ms mais próximos :/

2) Ah, essa é uma ótima idéia. Vou tentar isso.

 
alladir:


1) Pelos meus testes, não acredito que GetTickCount() tenha uma precisão de 16ms. É verdade, 16ms é o pequeno valor que recebo (com exceção de 0), mas não acho que valores sobre 16ms sejam precisos para os 16ms mais próximos. :/

2) Ah, essa é uma ótima idéia. Vou tentar isso.


Desculpe, muitas vezes eu mexo com a precisão, não tenho certeza nem mesmo agora qual é qual.
 
Ovo:

Desculpe, muitas vezes eu mexo com a precisão, não tenho certeza nem mesmo agora qual é qual.

Nem eu, só sei que tenho uma fórmula que deveria funcionar matematicamente, mas na vida real não funciona... então estou culpando a GetTickCount() :)
 
alladir:

4evermaat: Acho que os carrapatos se distinguem pelo Volume. Cada vez que um novo tique é enviado pelo corretor, o Volume aumentará em um. Por exemplo, se você estiver olhando para um gráfico M1, o volume para uma determinada barra é quantos carrapatos foram enviados naquele minuto.


Eu já vi isso muitas vezes antes, mas você tem certeza disso? Verifiquei isto algumas vezes em meu corretor ECN e o volume aumenta de forma bem diferente a cada tick, provavelmente são os lotes efetivamente negociados que fluem por meio daquele corretor. Por exemplo, quando eu vender 10 lotes, os próximos lotes de tick serão +10, e não +1.

 

O volume aumenta em 10 quando você negocia 10 lotes?!? Eu ainda não experimentei isso. Eu dirijo um coletor de carrapatos que registra cada carrapato. Às vezes o volume sobe por 2 ou 3, mas eu adivinhei que eram carrapatos muito rápidos que ou o corretor não enviava, ou chegava enquanto a função Start do meu coletor de carrapatos ainda estava funcionando.

Sim, eu só acho que volume = ticks do googling, mas parece encaixar com os dados que eu estou vendo

 
szgy74:

Eu já vi isso muitas vezes antes, mas você tem certeza disso? Verifiquei isto algumas vezes em meu corretor ECN e o volume aumenta de forma bem diferente a cada tick, provavelmente são os lotes efetivamente negociados que fluem por meio daquele corretor. Por exemplo, quando eu vender 10 lotes, os próximos lotes de tick serão +10, e não +1.

Volume é um mau nome para o que é realmente "contagem de carrapatos" . . 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.
 
4evermaat:

Atualmente, o mql4 só pode fornecer tempo até o segundo mais próximo para a entrada de carrapatos. Usamos a seguinte função:

MarketInfo(Symbol(), MODE_TIME)

1) Existe alguma função diferente que possa fornecer um carimbo de tempo de milissegundos ou que possa ser usado para determinar milissegundos para os dados de carrapato que chegam à plataforma?

2) o novo mql4 que combina funções mql5 será capaz de solicitar ou obter carimbos de tempo de milissegundos (ou subsegundos) nos carimbos de entrada?

Então como a plataforma mt4 (e mt5) deve distinguir corretamente entre carrapatos que chegam "ao mesmo tempo"?

Também não há tais informações em mql5. Mas há eventos temporizados que podem ser usados com precisão de milissegundos, embora eu não saiba se este recurso estará disponível com o novo mql4.
Razão: