Erreurs, bugs, questions - page 1562

 
Anton Zverev:

Je fais passer le testeur par deux personnages à la fois en mode "tics réels". La synchronisation est précise à la milliseconde près. Par conséquent, il semble parfois y avoir un décalage entre les séquences de tics. Il peut y avoir plusieurs ticks en 1ms sur deux caractères à la fois. Dites-moi, quel est l'algorithme pour nourrir les tiques dans de telles situations ?

Et comment est-il optimal d'attraper chaque tick dans le testeur sans IndicatorRelease (le timer rate les ticks en 1 ms), quand il y a plusieurs symboles qui passent en même temps ?

Dans le testeur, le quantum de temps minimum est de 1 seconde. Il est donc inutile de faire fonctionner le timer à 1ms.

Il peut y avoir plusieurs tics dans une seule et même seconde. Et à partir de différents outils. L'algorithme d'alimentation en ticks est tel qu'au moment de l'heure du tick pour l'instrument testé, tous les ticks des autres instruments pour la même seconde sont déjà soumis.

 
Slawa:

Dans le testeur, le quantum de temps minimum est de 1 seconde. Il est donc inutile de démarrer le timer à 1ms.

Il peut y avoir plusieurs tics dans la même seconde. Et de différents instruments. L'algorithme d'alimentation en ticks est tel qu'au moment de l'heure du tick pour l'instrument testé, tous les ticks des autres instruments pour la même seconde sont déjà soumis.

Envisagez-vous la solution normale consistant à appeler l'EA à chaque tick dans le testeur ?
 
Anton Zverev:
Envisagez-vous la solution normale consistant à appeler l'EA à chaque tick dans le testeur ?
Dans le testeur, l'EA est appelé à chaque tick de l'instrument testé.
 
Slawa:
Dans le testeur, le conseiller expert est appelé à chaque tick du symbole testé.

Vous savez exactement ce que je demande. Je gère deux symboles, je n'arrive pas à attraper les tics du second. Les gens ont longtemps suggéré la seule solution - par IndicatorRelease. Mais ça a l'air d'être une béquille tout seul.

J'ai vu différents testeurs multi-symboles. Je n'ai été confronté à un tel problème qu'à cinq ans. Comment se fait-il que vous ne l'ayez pas prévu est un mystère.

Veuillez réfléchir à la manière d'améliorer le MQL afin d'éliminer ce maillon faible et de rendre le produit complet. J'ai proposé ma propre variante mais la vôtre est 100% plus raisonnable.

 
Anton Zverev:

Vous savez exactement ce que je demande. Je gère deux symboles, je n'arrive pas à attraper les tics du second. Les gens ont longtemps suggéré la seule solution - par IndicatorRelease. Mais ça a l'air d'être une béquille tout seul.

J'ai vu différents testeurs multi-symboles. Je n'ai été confronté à un tel problème qu'en cinq ans. Comment se fait-il que vous ne l'ayez pas prévu est un mystère.

Veuillez réfléchir à la manière d'améliorer le MQL pour que ce maillon faible soit supprimé et que le produit soit vraiment complet. J'ai proposé ma propre variante mais la vôtre est 100% plus raisonnable.

C'est une autre question.

Qu'est-ce que "attraper le deuxième tic" ?

Comment attraper les ticks du second outil lorsque vous exécutez l'EA normalement ?

 
Slawa:

C'est une autre question.

Qu'est-ce que "attraper les tics de la seconde" ?

Pour que l'EA soit appelé à chaque tick du second symbole.

Comment attraper les ticks du second symbole lorsque l'EA est lancé normalement ?

Je place l'indicateur via IndicatorRelease sur le deuxième symbole. À chaque tic-tac de son symbole, il crée l'événement ChartEvent. Le conseiller expert, respectivement, capte cet événement.

Cette mauvaise solution a été suggérée il y a plusieurs années, selon les résultats de la recherche. Je n'ai pas trouvé d'autre solution qui fonctionne. Si le test doit être réalisé sur 10 symboles, alors 9 indicateurs sont lancés.

Supposons que nous ayons un conseiller expert qui augmente le compteur à chaque tick.

Je l'exécute sur un symbole dans le testeur, où il y a 1 million de ticks. Le compteur affiche 1 million.

J'ai également atteint un autre symbole et il affiche 1 million.

Je l'ai soumis à deux symboles à la fois. Il n'affiche pas 2 millions.

C'est clair maintenant ?

 
Anton Zverev:

Veuillez réfléchir à la manière d'améliorer le MQL afin que ce maillon faible disparaisse et que le produit devienne vraiment complet. J'ai proposé ma propre variante, mais la vôtre sera 100% plus réfléchie.

En fait, le changement à mettre en œuvre est assez simple : l'événement OnBookEvent doit être appelé non seulement lors du changement de l'option de vente, mais aussi lorsqu'un nouveau tick apparaît sur l'instrument à signer. Grâce à cet événement, il est déjà possible de capter l'arrivée de nouveaux ticks d'autres symboles sur FORTS (là où il y a le marché).

Si nous sommes sur le FOREX et qu'il n'y a pas de tick, OnBookEvent est appelé à l'arrivée d'un nouveau tick. Si nous sommes à la bourse - OnBookEvent est appelé lorsque le taux du marché change. C'est tout.

 

Il serait beaucoup plus pratique que pour chaque symbole, le terminal conserve un compteur de ticks (depuis le moment de la connexion). Et chaque conseiller expert, lorsqu'il est appelé, reçoit le numéro du tick sur lequel il a été appelé.

Cela permettrait d'estimer les tics manqués.

Actuellement, chaque EA doit être déclenché sur un graphique. BookEvent est le premier à avaler, affirmant qu'aucun graphique n'est nécessaire pour faire fonctionner les EA.

 
Anton Zverev:

Je veux que l'EA soit appelé à chaque tick du second symbole.

J'utilise IndicatorRelease sur le deuxième symbole. Il crée un événement ChartEvent à chaque tick de son symbole. Le conseiller expert, respectivement, capte cet événement.

Cette mauvaise solution a été suggérée il y a de nombreuses années, selon les résultats de la recherche. Je n'ai pas trouvé d'autre solution qui fonctionne. Si le test doit être réalisé sur 10 symboles, alors 9 indicateurs sont lancés.

Supposons que nous ayons un conseiller expert qui augmente le compteur à chaque tick.

Je l'exécute sur un symbole dans le testeur, où il y a 1 million de ticks. Le compteur affiche 1 million.

J'ai également atteint un autre symbole et il affiche 1 million.

Je l'ai soumis à deux symboles à la fois. Il n'affiche pas 2 millions.

C'est clair maintenant ?

L'Expert Advisor sera appelé à chaque tick du second symbole uniquement si cet EA est attaché au graphique du second symbole.

Vous n'avez pas besoin de vous préoccuper des événements graphiques. Tout a déjà été fait avant vous, il vous suffit de regarder autour de vous.

1. Par exemple, vous fabriquez un minuteur d'une seconde.

2. Vous disposez d'une boucle de zéro à 100 dans OnTimer avec Sleep(10) et vous la contrôlez pour qu'elle ne dépasse pas 1 seconde.

3. Analysez tous les outils que vous voulez en utilisant les requêtes SymbolInfoTick.

Cette construction fonctionnera également dans le testeur.

PS : il est préférable de programmer le minuteur pour une période plus longue, par exemple pour 3600 secondes.

Et la boucle doit être organisée non pas pendant une seconde, mais pendant moins d'une heure. Avec contrôle obligatoire IsStopped()

Le sommeil, d'ailleurs, est obligatoire. Sinon, vous allez accrocher le testeur. Eh bien, les ressources du système seront consommées pendant le travail habituel du conseiller expert.

 
Anton Zverev:

Il serait beaucoup plus pratique que pour chaque symbole, le terminal conserve un compteur de ticks (depuis le moment de la connexion). Et chaque conseiller expert, lorsqu'il est appelé, reçoit le numéro du tick sur lequel il a été appelé.

Cela permettrait d'estimer les tics manqués.

Actuellement, chaque EA doit être déclenché sur un graphique. BookEvent est le premier à avaler, affirmant qu'aucun graphique n'est nécessaire pour faire fonctionner les EA.

Il n'y a pas besoin de nouvelles entités. L'évaluation des ticks manqués peut être faite en utilisant le compteur existant. Il s'appelle tick_volume
Raison: