Mt4 Fin de l'assistance. - page 24

 
Реter Konow:

J'ai déjà répondu que les bars s'ouvrent indépendamment de l'arrivée d'un devis. S'il n'y a pas de cotation, le prix de la nouvelle barre sera le prix de clôture de la barre précédente. Le fait d'une nouvelle barre sera fixé indépendamment de l'arrivée des cotations, par les compteurs eux-mêmes, qui fonctionnent sur une minuterie.

Le cadre temporel spécifique n'a pas d'importance, car il s'agit simplement d'un compteur qui atteint sa valeur et déclenche l'événement de la nouvelle barre de ce cadre temporel. Il s'agit simplement d'une méthode de synchronisation avec l'apparition de nouvelles barres de différentes échéances. LA SYNCHRONISATION.

L'instrument n'a pas d'importance non plus. Si les cotations proviennent d'un seul serveur, cela signifie qu'elles ont la même heure d'apparition des nouvelles barres. Par conséquent, peu importe l'instrument, tant que ces instruments proviennent d'un même point du monde.


Je vais finir ce que j'ai dit et faire d'autres choses. Un peu d'une bonne chose).

vous vous trompez.

Avec respect.

P.S. la formation d'une nouvelle barre commence avec l'arrivée d'un nouveau tick, qui est le prix d'ouverture d'une nouvelle barre. dans votre algorithme il y a un calcul de timer qui n'a rien à voir avec l'arrivée d'un nouveau tick, d'où le désaccord. en fait votre algorithme ne donne pas le fait d'ouvrir une nouvelle barre, mais le début du temps après lequel on peut s'attendre à l'arrivée de la première quote dans une barre.
 
Artyom Trishkin:

C'est vous, dans votre algorithme, qui pensez que le bar est ouvert. En fait - physiquement - il n'est pas encore présent dans le terminal. C'est une incohérence totale avec les réalités du serveur.

Le calendrier spécifique a également son importance.

Tous ceux qui ont approché les robots de trading multidevises le savent.

Il est dommage que vous ne vouliez pas arriver à la conclusion à laquelle nous vous conduisons - visuellement et avec un exemple tangible.

Pour l'événement d'une nouvelle barre, le symbole n'a pas d'importance. De nouvelles barres de symboles différents apparaissent de manière synchrone (pour chaque période de temps).

Il existe un compteur pour chaque période de temps. Lorsque le compteur atteint la valeur de son intervalle de temps, il est remis à zéro et un nouvel événement de barre est défini pour cet intervalle de temps.

En outre, l'appel de la fonction renvoie un nouvel événement de barre une fois pendant la barre actuelle.

Merci à tous et au revoir.

 
Реter Konow:

Il n'y a aucune différence quant au symbole utilisé pour le nouvel événement de la barre. De nouvelles barres de symboles différents apparaissent de manière synchrone (pour chaque période de temps).

La minuterie possède un compteur pour chaque période de temps. Lorsque le compteur atteint la valeur de son intervalle de temps, il est remis à zéro et un nouvel événement de barre est défini pour cet intervalle de temps.

En outre, l'accès à la fonction renverra l'événement d'une nouvelle barre une fois pendant la barre actuelle.

C'est la fin de l'explication.

Merci à tous et au revoir.

Ce n'est pas vous qui l'explicitez - votre logique est claire. Mais, malheureusement, c'est faux. Vous devez obtenir les données de l'environnement de négociation - éventuellement du serveur.

Et s'il n'y a pas de nouvelle cotation sur le serveur, alors il n'y a pas de nouvelle barre qui s'ouvre dans le terminal.

Votre algorithme, qui fonctionne dans le minuteur, "tamponnera" les nouvelles barres lorsque le marché est fermé. Mais il n'y en a pas sur le serveur et donc dans le terminal du client.

Et croyez-moi, la différence dans l'arrivée des cotations pour différents symboles entraînera également une différence dans l'ouverture d'une nouvelle barre - le début de la formation d'une nouvelle barre ne sera activé que lorsque le tick (cotation) correspondant au moment de cette barre arrivera. Si le tick est reçu 4 minutes et 15 secondes après la clôture de la dernière barre sur M1, trois barres seront manquées car il n'y a pas de cotation sur laquelle les exécuter.

Je vous ai donné un indice.

 
Andrey Kisselyov:
vous vous trompez.

Sincèrement.

P.S. La formation d'une nouvelle barre commence avec l'arrivée d'un nouveau tick, qui est le prix d'ouverture d'une nouvelle barre. Dans votre algorithme, il y a un calcul basé sur le timer qui n'a rien à voir avec l'arrivée d'un nouveau tick, d'où le désaccord.

Oui, sur une minuterie. Une nouvelle barre apparaît sans citation. Nous sommes intéressés exactement par l'événement d'apparition d'une barre et nous pouvons fixer la cotation dans Optisk() ;

La barre apparaîtra dans tous les cas. Si c'est un week-end et qu'il n'y a pas de bars, c'est bon. La fonction ne changera pas et elle sera synchronisée avec l'arrivée des barres au moment où la session commencera.

 
Artyom Trishkin:

Ce n'est pas vous qui le mâchez - votre logique est compréhensible. Mais, malheureusement, elle est imparfaite. Vous devez obtenir les données de l'environnement de négociation - éventuellement du serveur.

Et s'il n'y a pas de nouvelle cotation sur le serveur, alors il n'y a pas de nouvelle barre qui s'ouvre dans le terminal.

Votre algorithme, qui fonctionne dans le minuteur, "tamponnera" les nouvelles barres lorsque le marché est fermé. Mais il n'y en a pas sur le serveur et donc dans le terminal du client.

Et croyez-moi, la différence dans l'arrivée des cotations pour différents symboles entraînera également une différence dans l'ouverture d'une nouvelle barre - le début de la formation d'une nouvelle barre ne sera activé que lorsque le tick (cotation) correspondant au moment de cette barre arrivera. Si le tick arrive 4 minutes et 15 secondes après la dernière barre de M1, trois barres seront manquées car il n'y a pas de cotation sur laquelle les construire.

Je vous ai donné un indice.

Les cotations peuvent être obtenues à partir de OnTick(). Vous pouvez associer l'événement de l'ouverture d'un nouveau bar à la confirmation de l'arrivée d'un devis. Je ne le ferais pas. Mais cela dépend de chacun.
 
Реter Konow:

Oui, sur une minuterie. Une nouvelle barre apparaît sans citation. Nous sommes intéressés exactement par le cas d'occurrence d'une barre alors que nous pouvons fixer la cotation dans Optisk() ;

La barre apparaîtra de toute façon. Si c'est un week-end et qu'il n'y a pas de bars, c'est bon. La fonction ne s'effondrera pas et elle sera synchronisée avec l'arrivée des barres au moment où la session commence.

Supposons que vous voulez prendre les lectures de l'indicateur à 1 et 2 barres en fonction de l'événement d'un début de nouvelle barre. En regardant la logique de votre algorithme, vous obtiendrez les valeurs de 1 et 2 barres avant que la nouvelle cotation arrive et que la barre apparaisse sur le graphique. En conséquence, lorsque vous essayez de lire l'indicateur, vous n'obtiendrez pas les valeurs de 1 et 2 barres comme il devrait être au moment de l'arrivée de la nouvelle cotation, mais les valeurs de 1 et 2 barres qui se déplaceront d'une barre pour être 2 et 3 barres.


Sincèrement.

 

Artyom Trishkin:

Et, croyez-moi, la différence dans l'arrivée des cotations pour différents symboles fait également une différence dans l'ouverture d'une nouvelle barre - le début de la construction d'une nouvelle barre n'est activé qu'avec l'arrivée d'un tick (cotation), correspondant au temps de cette barre. Si le tick est reçu 4 min 15 sec après la dernière barre sur M1, trois barres seront manquées, car il n'y a pas de cotation sur laquelle les construire.


Maintenant, à propos de cette question, - je pense que vous avez tort. Veuillez vérifier auprès de Servicedesk. Laissez-les répondre à la question suivante : de nouvelles barres se forment-elles ou non sur la plateforme, indépendamment de l'arrivée des cotations ? Si ce n'est pas le cas, vérifiez, lors de l'apparition d'une nouvelle barre, s'il y avait une citation sur celle-ci. Si c'est le cas, le nouveau barreau a été formé. Nous pouvons le faire de cette façon. Vous n'avez pas besoin de changer grand-chose.

 
Andrey Kisselyov:
Supposons que vous vouliez lire l'indicateur à 1 et 2 barres en fonction de l'événement de début de nouvelle barre. En suivant la logique de votre algorithme, vous obtiendrez un début de nouvelle barre avant que la cotation n'arrive et que la barre n'apparaisse sur le graphique. Par conséquent, lorsque vous essayez de lire l'indicateur, vous n'obtiendrez pas les valeurs de 1 et 2 barres comme cela devrait être le cas lorsque la cotation arrive, mais les valeurs de 1 et 2 barres qui seront décalées de 1 barre lorsque la nouvelle cotation arrivera et seront de 2 et 3 barres.


Regards.

C'est possible. Ajoutez des contrôles pour le nouveau devis à chaque nouvel événement de bar et c'est tout. Ne travaillez pas avec l'événement d'une nouvelle barre, mais avec l'événement d'une barre et d'une cotation, par exemple.
 
Реter Konow:
Possible. Ajoutez un contrôle d'arrivée des devis à chaque nouvel événement de bar et c'est tout. Travaillez non pas avec l'événement d'un nouveau bar, mais avec l'événement d'un bar et d'une citation, par exemple.
Je n'ai pas besoin de cet algorithme, c'est votre invention, je ne fais que l'examiner pour y déceler des erreurs et des améliorations possibles, des exercices pour le cerveau, en quelque sorte.

Avec respect.
 
Реter Konow:
Obtenez vos cotes à partir de OnTick(). Vous pouvez associer l'événement de l'ouverture d'un nouveau bar à la confirmation de la réception d'un devis. Je ne le ferais pas. Mais c'est une affaire personnelle.

Je sais comment obtenir des devis :)

Dans un programme multi-devises - dans un timer dans une boucle sur les bons symboles. Et l'ouverture d'une nouvelle barre (physique, pas virtuelle - erronée - comme dans votre cas) est contrôlée par l'heure de la dernière cotation et compare cette heure avec l'heure du symbole de la barre zéro.

Vous, par contre, vous faites du hasard - un bar virtuel qui n'existe peut-être pas. Le week-end, ils n'existent pas, mais vous êtes censé les avoir - c'est la chose la plus simple à donner en exemple.

Et, tu vois, tu es le seul qui ne le ferait pas de cette façon. Le reste d'entre nous le fait de manière correcte et fiable. Mais cela, bien sûr, ne regarde que vous.

Je voulais vous dire comment le faire correctement et montrer la grande différence entre la simplicité de l'écriture en POO et les tournures complexes du style procédural pour résoudre le même problème.

Mais vous en savez probablement plus et vous n'en avez pas besoin. Je n'ose pas avoir l'air de savoir autre chose devant vous. Je suis désolé.