Minuterie

 

En fait, la question est de savoir pourquoi la minuterie est mesurée en secondes.

Honnêtement, quand j'ai entendu dire qu'il y aurait une minuterie native, je n'avais aucune idée que l'unité atomique de temps serait une seconde au lieu d'une milliseconde...

Ce n'est pas une découverte très agréable (pour moi) que j'ai faite récemment, lorsque j'ai voulu l'utiliser.


Le principe est très simple : le timer est généralement utilisé pour la synchronisation (attente du calcul des données) ou l'observation (un EA temporisé, à mon avis, sera beaucoup plus adéquat). Dans les deux cas, une seconde est un peu trop, mais nous aimerions vraiment voir des millisecondes dans le minuteur.

Encore une fois, c'est un bon remplacement de la fonction Sleep dans les indices et une seconde est de trop.

J'espère que les développeurs prendront en compte cette demande. Si nécessaire, je ferai une demande au Service Desk.

J'ai ouvert ce sujet à la discussion. Qu'en pensez-vous ?

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
TheXpert:

En fait, la question est de savoir pourquoi la minuterie est mesurée en secondes.

Honnêtement, quand j'ai entendu dire qu'il y aurait une minuterie native, je n'avais aucune idée que l'unité atomique de temps serait une seconde au lieu d'une milliseconde...

Ce n'est pas une découverte très agréable (pour moi) que j'ai faite récemment, lorsque j'ai voulu l'utiliser.


Le principe est très simple : le timer est généralement utilisé pour la synchronisation (attente du calcul des données) ou l'observation (un EA temporisé, à mon avis, sera beaucoup plus adéquat). Dans les deux cas, une seconde est un peu trop, mais nous aimerions vraiment voir des millisecondes dans le minuteur.

Là encore, il s'agit d'un excellent substitut de la fonction Sleep dans les indices, et là encore, la seconde est de trop.

J'espère que les développeurs ne vont pas ignorer cette demande. Si nécessaire, je ferai une demande au Service Desk.

Le sujet est ouvert à la discussion. Qu'en pensez-vous ?

Vous pouvez me croire, la réalisation actuelle du terminal de trading et l'algorithme de travail avec les threads dans MQ seconds est une bonne solution.

D'autant plus que le temps dans le testeur est généré sur la base du graphique en minutes (d'après ce que j'ai compris) et donc une échelle de temps plus petite ne fonctionnera pas.

PS

Bien sûr, les développeurs pourraient donner une réponse plus détaillée, mais il suffit de comprendre que l'algorithme actuel de travail avec les threads dans Expert Advisor et dans le terminal, l'intervalle de temps inférieur à une seconde n'est soit pas possible du tout, soit provoquera simplement une incohérence dans le fonctionnement de l'EA.

Pour imaginer les conséquences d'une telle solution, il faut comprendre ce qui arrivera au Conseiller Expert si son timer est appelé toutes les 500 millisecondes, alors que le traitement du timer, par exemple, prend une minute.....

 

Interesting:

D'autant plus que le temps dans le testeur est généré sur la base du graphique en minutes (d'après ce que je comprends) et qu'une échelle de temps plus petite ne conviendrait pas.

Qu'est-ce que le testeur a à voir là-dedans ?

... Un intervalle de temps inférieur à une seconde n'est pas possible du tout ou provoque simplement une incohérence dans le travail du conseiller expert.

De quelle manière ? Pourquoi n'est-ce pas possible ?

Pour imaginer les conséquences d'une telle solution, vous devez comprendre ce qui arriverait au conseiller expert si son timer est appelé toutes les 500 millisecondes, alors que le timer de traitement, par exemple, prend une minute.....

Et que va-t-il se passer ? Et à quel point c'est plus effrayant si la minuterie est de 1s ?

Avez-vous la tête sur les épaules lorsque vous écrivez des commentaires ?
 
TheXpert:

En fait, la question est de savoir pourquoi la minuterie est mesurée en secondes.

Honnêtement, quand j'ai entendu dire qu'il y aurait une minuterie native, je n'avais aucune idée que l'unité atomique de temps serait une seconde au lieu d'une milliseconde...

Ce n'est pas une découverte très agréable (pour moi) que j'ai faite récemment, lorsque j'ai voulu l'utiliser.


Le principe est très simple : le timer est généralement utilisé pour la synchronisation (attente du calcul des données) ou l'observation (un EA temporisé, à mon avis, sera beaucoup plus adéquat). Dans les deux cas, une seconde est un peu trop, mais nous aimerions vraiment voir des millisecondes dans le minuteur.

Et encore, c'est un bon substitut à la fonction Sleep dans les indices et une seconde est de trop.

J'espère que les développeurs ne laisseront pas cette demande sans suite. Si nécessaire, je ferai une demande dans Servicedesk.

Ce sujet est ouvert à la discussion. Qu'en pensez-vous ?

Le temps en secondes est notre décision consciente. Le timer est principalement destiné aux Expert Advisors pour travailler sans ticks.

Si vous souhaitez une synchronisation, utilisez plusieurs Expert Advisors sur différents instruments qui s'envoient mutuellement des messages personnalisés.

Ou bien, écrivez une sorte de chien de garde, en boucle, par exemple, sur un glissement de 50 millisecondes, qui envoie des messages à votre conseiller expert principal lorsque des événements attendus se produisent. Ce faisant, la livraison des messages est garantie (à moins, bien sûr, que la file d'attente ne déborde).

 
stringo:

Le temps en secondes est notre décision consciente. La minuterie est principalement destinée à permettre aux experts de travailler en l'absence de tiques.

Cela peut se faire sans minuterie et, soit dit en passant, même sans la peine d'envoyer un événement à lui-même. Alors pourquoi ne pas étendre cette fonctionnalité ?

Si vous souhaitez une synchronisation, utilisez plusieurs EA sur différents outils qui s'envoient des messages personnalisés.

La synchronisation peut se faire avec des données. Par exemple : un indicateur intégré. Comment résoudre cette synchronisation dans l'indicateur ? Je ne pose pas de question sur les Expert Advisors, tout y est résolu sans problème. Mais dans un indicateur, le sommeil est un arrêt de l'ensemble du fil, et cela signifie le reste des indicateurs. Et cela signifie qu'il y a beaucoup de problèmes de synchronisation.

Vous pouvez également écrire une sorte de boucles de chien de garde pour un glissement de 50 msec, qui envoie des messages à votre conseiller expert principal lorsque des événements attendus se produisent. La livraison des messages sera garantie (sauf si la file d'attente déborde, bien sûr).

Je vais devoir le faire, si rien ne change...
 
TheXpert:

Qu'est-ce que cela a à voir avec le testeur ?

De quelle manière ? Pourquoi n'est-ce pas possible ?

Et que se passerait-il ? Et à quel point c'est plus effrayant si la minuterie est de 1s ?

Utilisez-vous votre tête lorsque vous écrivez des commentaires ?

Je pense que si vous connaissez les unités de temps atomiques, vous savez probablement comment les processus et les threads sont organisés dans le système d'exploitation et le reste du logiciel.

Mais juste pour vous rappeler (au cas où certains ne le sauraient pas) les bases - Tout ce qui se passe dans le système est divisé en processus et en threads, chaque processus peut avoir d'un à plusieurs threads. En gros, chaque fichier exécutable exécuté dans le système est un PROCESSUS. Chaque processus a une priorité, et chaque thread dans un processus a une priorité.

En fonction de ces priorités, le système alloue du temps processeur à chaque processus (ou thread d'un certain processus).

Ainsi, l'architecture du terminal client est telle qu'un seul conseiller expert et plusieurs indicateurs peuvent être lancés sur chaque graphique (comme vous le savez). Le conseiller expert a un seul fil de discussion, mais chaque indicateur a son propre fil de discussion (complètement indépendant) du conseiller expert.

Ce sera bien, mais le conseiller expert ou l'indicateur lui-même ne peut fonctionner que dans son fil, c'est-à-dire que toute ligne de code prend le fil entier et aucune autre action n'est possible dans ce fil (bien sûr, il y a des doutes concernant le traitement des ticks, mais très probablement ils s'intègrent dans le tableau général).

Dans ce cas, pour chaque graphique, un fil d'événements distinct est formé qui est traité séquentiellement par le système.

Par conséquent, le traitement de la minuterie ne peut être appelé avant que le traitement de la minuterie précédente ne soit terminé. Ou, en termes simples, OnTimer() ne sera pas autorisé à s'exécuter tant que le thread qui devrait traiter le timer n'est pas occupé.

Pour illustrer l'impossibilité de lancer le traitement de la minuterie par un deuxième fil, vous pouvez utiliser cet exemple (stupide mais clair) :

int OnInit()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
EventSetTimer(1);
//----------------------------------------------------------------------------//
return(0);
//----------------------------------------------------------------------------//
}

void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
Print(TimeLocal());
Sleep(2000);
//----------------------------------------------------------------------------//
}

PS

À propos du testeur de stratégie, comment comptez-vous organiser le temps qui y est consacré ?

 

Interesting:

L'architecture du terminal client est telle qu'un seul conseiller expert et plusieurs indicateurs peuvent être lancés sur chaque graphique (comme vous le savez). Le conseiller expert a un seul fil de discussion, mais chaque indicateur a son propre fil de discussion (complètement indépendant) du conseiller expert.

Depuis quand ? Je ne vois pas du tout de problèmes avec les scripts et les conseillers experts, puisqu'ils fonctionnent dans leurs propres fils.

Les indicateurs fonctionnent TOUS dans UN seul fil, comme vous le savez, et cela complique la tâche d'organiser le chronomètre dans n'importe quel indicateur. Et parfois, j'aimerais beaucoup.

L'exemple ci-dessous montre que la minuterie ne peut pas être lancée par un deuxième fil (brutal mais illustratif) :

Voici un exemple concret. Cela montre clairement et sans ambages le niveau de votre réflexion, surtout dans le contexte du post précédent également.

S'il vous plaît, ne répondez plus jamais à mes messages, sinon je ne pourrai pas me retenir et je vous traiterai de tous les noms et je serai banni.

Cependant, si vous le souhaitez, n'hésitez pas à m'écrire, je me ferai un plaisir de me moquer de vous sur n'importe quel sujet lié à la programmation, au diable l'interdiction.

En ce qui concerne le testeur de stratégie, comment suggérez-vous d'y consacrer du temps ?
Je ne le suis pas, je suis bien avec ça jusqu'à présent.
 
TheXpert:

Depuis quand ? Je ne vois pas du tout de problème avec les scripts et les EA, car ils fonctionnent tous dans leur propre fil.

Et les indicateurs fonctionnent TOUS dans UN seul fil, qu'on se le dise, et cela complique la tâche d'organiser le chronomètre dans n'importe quel indicateur. Et parfois, on en a vraiment envie.


Je voulais ne pas répondre, mais je ne pouvais pas m'en empêcher.

Les scripts ne m'intéressent pas, tandis que je ne suis pas sûr de l'endroit où j'ai dit que les conseillers experts ne fonctionnent pas dans des fils séparés (chacun dans son propre fil). Indiquez-moi l'endroit où j'ai dit le contraire. ....

Je ne suis pas sûr des indicateurs, car je ne travaille pas beaucoup avec eux (cette question a sûrement été discutée dans les forums, et si quelque chose se produit, les développeurs le corrigeront). Je sais pertinemment que pour chaque indicateur il est possible de prescrire son timer (non dépendant de l'expert), j'ai déjà utilisé cette possibilité.

Je sais exactement ce que j'aurais dû dire à propos des indices.

LeXpert:

L'exemple fonctionne. Cela montre clairement et sans ambages le niveau de votre réflexion, surtout dans le contexte du post précédent également.

Et qui douterait que ça marche, mais le timer (quelle salope) tourne toutes les 2 secondes au lieu de la 1 déclarée, ce que j'ai indiqué dans le bloc d'initialisation.

Spécialement pour vous, je l'ai mis dans un Expert Advisor, bien que le problème avec l'appel du timer était de toute façon évident (supposons que pour la clarté, on dit que dans les images tout est plus pratique et plus facile à comprendre)...

Il ne me reste plus qu'à trouver comment OnTimer sera appelé toutes les 500 millisecondes, si OnTime prend 1 seconde (dans l'exemple une seconde et deux secondes respectivement) ?

LeXpert:

S'il vous plaît, ne répondez plus jamais à mes messages, sinon je ne pourrai pas me retenir et je vous traiterai de tous les noms et je serai banni.

Cependant, si vous le souhaitez, n'hésitez pas à m'écrire, je serai heureux de poster sur tout sujet lié à la programmation, au diable l'interdiction.

Oui, s'il vous plaît, je n'ai pas à répondre...
 
Ce n'est qu'au cours d'un débat que l'on peut connaître la vérité et, en cas d'adéquation des deux arguments, l'un s'en tiendra à son opinion (juste) et le second changera d'avis (faux) pour suivre l'opinion du premier.

Ne dites donc pas à l'autre personne en quoi elle a tort, ou écrivez simplement : "vous avez tort, regardez sur Google".

Pour autant que je comprenne le forum - une conversation mutuellement bénéfique, si vous avez des questions uniquement au développeur aller à servicedesk.

A Intéressant

J'ai fait quelques expériences avec les performances de MQL5. Laissez-moi vous dire que la plupart des Expert Advisors exécutent la fonction OnTick en moins de 0,1 seconde.


A TheXpert

Pourquoi es-tu si pressé ?
Mais je ne vois pas l'intérêt de minuter moins d'une seconde. On compte quand deux électrons entrent en collision ?
Si oui, continuez avec la boucle et Sleep().

 

mrProF:

A Intéressant

J'ai fait quelques expériences avec les performances de MQL5, et laissez-moi vous dire que la plupart des EA exécutent la fonction OnTick en moins de 0,1 seconde.

Cela dépend de ce qu'on y met et de la quantité de données à traiter, mais MQL5 est assez rapide, je ne le conteste pas...
 

Un autre... Vous ne seriez pas frères, par hasard ?

mrProF:

Mais je ne vois pas l'intérêt d'une minuterie de moins d'une seconde.

Ce qui ne veut pas dire qu'il n'y en a pas. Les tâches de chacun sont différentes.

Si oui, continuez avec la boucle et Sleep().

C'est parti... On peut lire ? Montre-moi comment faire pour les dindes.