Mt4 Fin de l'assistance. - page 21

 
Andrei:

... Une interface unique est totalement inapplicable à la programmation de toute tâche informatique...

C'est différent lorsque vous avez des milliers de tâches similaires qui peuvent être combinées sous un seul drapeau et créer des gestionnaires universels pour chaque fonction pour n'importe laquelle de ces nombreuses tâches.

Sincèrement.

 
Реter Konow:

Je m'excuse pour ce léger retard.

Voici la première version de la fonction. Vous pouvez l'affiner et le développer davantage. Si quelqu'un remarque une erreur, merci de la commenter.

Ohhhh... Je n'ai pas approfondi le sujet, bien sûr - il m'est très difficile de lire un tel code. Supposons qu'il renvoie ce qu'il est censé renvoyer.

Et comment savez-vous que la nouvelle barre sur l'EURUSD et l'USDCAD apparaît sur chacun d'eux sur trois horizons temporels - M5, H1 et D1 ?

 
Andrey Kisselyov:

c'est différent lorsque vous avez 1 000 tâches structurées de manière similaire

Je ne pense pas qu'il y ait même 2 tâches similaires. :) Vous pouvez appeler une fonction 1000 fois, mais il s'agit d'une seule tâche, pas de 1000.

 
Artyom Trishkin:

Ohhhh... Je n'y suis pas entré, bien sûr - il m'est très difficile de lire un tel code. Supposons qu'il renvoie ce qu'il est censé renvoyer.

Et comment connaître le fait qu'il y a une nouvelle barre sur l'EURUSD et l'USDCAD - sur chacun d'entre eux sur trois échelles de temps - M5, H1 et D1 ?

Si les citations proviennent d'un seul serveur, peu importe l'instrument. Après tout, les barres sont ouvertes pour chaque symbole en même temps.

C'est différent si les sources de citations se trouvent dans différentes parties du monde. Pour les minutes, cela n'a pas d'importance, mais il peut y avoir un problème avec les échéances plus élevées. Peut-être faut-il étudier plus en détail les fonctions temporelles et procéder à une correction précise du temps. Mais c'est la prochaine étape dans le développement de cette solution...

Vous devez faire une calibration pour cette fonction...

 
Реter Konow:

Si les cotations proviennent du même serveur, le choix de l'instrument est indifférent. Après tout, les barres sont ouvertes simultanément sur chaque instrument.

Il en va différemment si les sources de citations se trouvent dans différentes parties du monde. Pour les minutes, cela n'a pas d'importance, mais il peut y avoir un problème avec les échéances plus élevées. Peut-être faut-il étudier plus en détail les fonctions temporelles et procéder à une correction précise du temps. Mais c'est la prochaine étape dans le développement de cette solution...

Vous devez faire une calibration pour cette fonction...


il y a une différence ....

 
Andrei:

Je ne pense pas qu'il y ait même 2 tâches similaires. :) La fonction peut être appelée 1000 fois, mais il s'agit d'une seule tâche, pas de 1000.

Il ne s'agit pas d'appeler une fonction dans l'EA, mais d'écrire des interfaces universelles (handlers).

Vous avez 1000 tâches à accomplir pour écrire un robot. Chacune d'entre elles consiste essentiellement à
1 fonction d'obtention d'un signal d'ouverture
2. fonction d'ouverture de l'ordre
3 fonction de suivi des commandes
4 Recevoir un signal pour clôturer un ordre
et ainsi de suite.
Ces fonctions sont différentes pour chaque robot, mais elles se répètent dans le cadre de 1000 projets. Par conséquent, vous pouvez combiner les fonctions en modules polyvalents et, en fonction de la tâche, appeler le bon module.

Meilleures salutations.
 
Vladimir Pastushak:

il y a une différence ....

Expliquer.
 
Реter Konow:

Si les cotations proviennent du même serveur, le choix de l'instrument est indifférent. Après tout, les barres sont ouvertes simultanément sur chaque instrument.

Il en va différemment si les sources de citations se trouvent dans différentes parties du monde. Pour les minutes, cela n'a pas d'importance, mais il peut y avoir un problème avec des échéances plus élevées. Peut-être faut-il étudier plus en détail les fonctions temporelles et procéder à une correction précise du temps. Mais c'est la prochaine étape dans le développement de cette solution...

Vous devez faire une calibration pour cette fonction...

Une nouvelle barre est formée lorsque le premier tick de la barre arrive, l'instrument joue un rôle.


avec respect.

 
Реter Konow:

Si les cotations proviennent du même serveur, le choix de l'instrument est indifférent. Après tout, les barres sont ouvertes simultanément sur chaque instrument.

Il en va différemment si les sources de citations se trouvent dans différentes parties du monde. Pour les minutes, cela n'a pas d'importance, mais il peut y avoir un problème avec les échéances plus élevées. Peut-être faut-il étudier plus en détail les fonctions temporelles et procéder à une correction précise du temps. Mais c'est la prochaine étape dans le développement de cette solution...

Vous devez faire une calibration pour cette fonction...

Ce qui est nécessaire, c'est le fait d'ouvrir une nouvelle barre sur l'un des symboles suggérés sur trois horizons temporels.

S'il n'y a pas de cotation pour l'un des symboles, nous ne verrons pas l'ouverture d'une nouvelle barre. Et la nouvelle barre n'apparaîtra qu'à l'arrivée d'un nouveau tick. S'il y a une nouvelle barre en EURUSD, mais que l'USDCAD n'a pas encore reçu une nouvelle cotation correspondant à la nouvelle barre, la nouvelle barre ne sera pas construite. Mais nous devons connaître le fait exact de l'ouverture du nouveau bar sans aucune réserve quant à son heure. Vous devez savoir le fait du début de la nouvelle barre :

s'il y a une nouvelle barre sur M5 sur EURUSD, alors...
s'il y a une nouvelle barre sur H1 sur EURUSD, alors...
s'il y a une nouvelle barre sur D1 à EURUSD, alors...
--------
s'il y a une nouvelle barre sur M5 sur USDCAD...
s'il y a une nouvelle barre sur H1 sur USDCAD, alors ...
s'il y a une nouvelle barre sur D1 sur USDCAD, alors ...

 
...et Time[0] doit être remplacé par iTime(_Symbol,PERIOD_M1,0)
parce que les minutes ne comptent pas