nouveau mql4 fournissant des millisecondes dans les timestamps....

 

Actuellement, mql4 ne peut fournir que le temps à la seconde près pour les ticks entrants. Nous utilisons la fonction suivante :

MarketInfo(Symbol(), MODE_TIME)

1) Existe-t-il une autre fonction qui peut fournir un horodatage en millisecondes ou qui peut être utilisée pour déterminer les millisecondes pour les données tick qui arrivent sur la plateforme ?

2) Est-ce que la nouvelle mql4 qui combine les fonctions de la mql5 sera capable de demander ou d'obtenir des horodatages en millisecondes (ou sub-secondes) sur les ticks entrants ?

Comment la plateforme mt4 (et mt5) est-elle censée distinguer correctement les ticks qui arrivent au "même moment" ?

 
4evermaat:

Actuellement, mql4 ne peut fournir que le temps à la seconde près pour les ticks entrants. Nous utilisons la fonction suivante :

MarketInfo(Symbol(), MODE_TIME)

1) Existe-t-il une autre fonction qui peut fournir un horodatage en millisecondes ou qui peut être utilisée pour déterminer les millisecondes pour les données tick qui arrivent sur la plateforme ?

2) Est-ce que la nouvelle mql4 qui combine les fonctions de la mql5 sera capable de demander ou d'obtenir des horodatages en millisecondes (ou sub-secondes) sur les ticks entrants ?

Comment la plateforme mt4 (et mt5) est-elle censée distinguer correctement les ticks qui arrivent au 'même moment' ?

1) GetTickCount(), devrait fonctionner en direct. Inutile sur des données historiques.

2) Même les données mt5_data ne sont pas enregistrées en millisecondes. Cependant, no_problem Live.

3) Je ne vois pas où vous voulez en venir. Si c'est le même temps en millisecondes, alors avoir des millisecondes ne serait pas utile. S'il s'agit de temps différents en millisecondes, alors GetTickCount() pourrait aider. Aider dans le sens où votre code traite le tick actuel en moins d'une milliseconde. L'importance dépend de ce que vous essayez d'accomplir... je suppose.

 

Vous avez au moins deux choix.

1. Distinguer les ticks avec la fonction GetTickCount() du MQL, qui a une précision de 16 ms.

2. Accéder au temps du PC en utilisant GetLocalTime() de Kernell32.dll avec une précision de l'ordre de la nanoseconde (cela ne fonctionne pas avec les émulateurs sous linux, ils retournent toujours la précision de 16 ms).

 

4evermaat : Je pense que les ticks se distinguent par le Volume. Chaque fois qu'un nouveau tick est envoyé par le courtier, le volume augmente d'une unité. Par exemple, si vous regardez un graphique M1, le volume pour une barre particulière est le nombre de ticks envoyés dans cette minute.

En fait, hier, j'ai essayé de créer une fonction qui enregistre le temps en millisecondes. Elle utilisait TimeCurrent() et GetTickCount(). Mathématiquement, c'était juste... mais GetTickCount() n'est pas assez précis. J'ai trouvé que l'arrondissement des temps d'événements à la dernière seconde (c'est à dire en utilisant simplement TimeCurrent() ) avait des erreurs plus petites que ma fonction... :/

Je réessayerai un autre jour mais pour autant que je puisse voir, vous ne pouvez pas compter sur GetTickCount() si vous avez besoin d'une précision à la seconde près.

Peut-être que les experts C++ peuvent accéder à des équivalents plus précis de GetTickCount()... ?

 
Ovo:

Vous avez au moins deux choix.

1. Distinguer les ticks avec la fonction GetTickCount() du MQL, qui a une précision de 16 ms.

2. Accéder au temps du PC en utilisant GetLocalTime() de Kernell32.dll avec une précision de l'ordre de la nanoseconde (cela ne fonctionne pas avec les émulateurs sous linux, ils retournent toujours la précision de 16 ms).


1) D'après mes tests, je ne pense pas que GetTickCount() ait une précision de 16ms. C'est vrai, 16ms est la plus petite valeur que j'obtiens (à part 0), mais je ne pense pas que les valeurs autour de 16ms soient précises à 16ms près. :/

2) Ah, c'est une excellente idée. Je vais l'essayer.

 
alladir:


1) D'après mes tests, je ne pense pas que GetTickCount() ait une précision de 16ms. C'est vrai, 16ms est la plus petite valeur que j'obtiens (à part 0), mais je ne pense pas que les valeurs autour de 16ms soient précises à 16ms près. :/

2) Ah, c'est une excellente idée. Je vais faire un essai.


Désolé, j'ai souvent confondu précision et exactitude, je ne suis même pas sûr maintenant de savoir ce qu'il en est.
 
Ovo:

Désolé, j'ai souvent confondu exactitude et précision, je ne suis même pas sûr maintenant de savoir lequel est lequel.

Moi non plus, tout ce que je sais c'est que j'ai une formule qui devrait fonctionner mathématiquement mais qui ne fonctionne pas dans la vie réelle... donc je blâme GetTickCount() :)
 
alladir:

4evermaat : Je pense que les ticks se distinguent par le Volume. Chaque fois qu'un nouveau tick est envoyé par le courtier, le volume augmente d'une unité. Par exemple, si vous regardez un graphique M1, le volume pour une barre particulière est le nombre de ticks envoyés dans cette minute.


J'ai déjà vu cela à plusieurs reprises, mais en êtes-vous sûr ? J'ai vérifié cela quelques fois sur mon courtier ECN et le volume augmente de façon très différente à chaque tick, il s'agit probablement des lots réellement négociés qui passent par ce courtier. Par exemple, si je vends 10 lots, le prochain tick sera +10 et non +1.

 

Le volume augmente de 10 lorsque vous négociez 10 lots ?!? Je n'ai pas connu cela. J'utilise un collecteur de tics qui enregistre chaque tic. Parfois, le volume augmente de 2 ou 3, mais je suppose qu'il s'agit de ticks très rapides que le courtier n'a pas envoyés, ou qui sont arrivés alors que la fonction Start de mon collecteur de tics était encore en cours d'exécution.

Oui, je ne pense que Volume = Ticks en cherchant sur Google, mais cela semble correspondre aux données que je vois.

 
szgy74:

J'ai déjà vu cela à plusieurs reprises, mais en êtes-vous sûr ? J'ai vérifié cela quelques fois sur mon courtier ECN et le volume augmente de façon très différente à chaque tick, c'est probablement les lots réellement négociés qui passent par ce courtier. Par exemple, si je vends 10 lots, le prochain tick sera +10 et non +1.

Le volume est un mauvais nom pour ce qui est en fait le "Tick count" ... cela n'a rien à voir avec le volume/lots échangés... la raison pour laquelle il peut changer de plus de 1 est que vous pouvez manquer des ticks.
 
4evermaat:

Actuellement, mql4 ne peut fournir que le temps à la seconde près pour les ticks entrants. Nous utilisons la fonction suivante :

MarketInfo(Symbol(), MODE_TIME)

1) Existe-t-il une autre fonction qui peut fournir un horodatage en millisecondes ou qui peut être utilisée pour déterminer les millisecondes pour les données tick qui arrivent sur la plateforme ?

2) Est-ce que la nouvelle mql4 qui combine les fonctions de la mql5 sera capable de demander ou d'obtenir des horodatages en millisecondes (ou sub-secondes) sur les ticks entrants ?

Comment la plateforme mt4 (et mt5) est-elle censée distinguer correctement les ticks qui arrivent au "même moment" ?

Il n'y a pas de telles informations dans mql5 non plus. Mais il existe des événements Timer qui peuvent être utilisés avec une précision de l'ordre de la milliseconde, bien que je ne sache pas si cette fonctionnalité sera disponible avec la nouvelle mql4.
Raison: