Mt4 Fin de l'assistance. - page 39

 
George Merts:

On peut soutenir que c'est un avantage.

Par accident, quelqu'un changera le drapeau - et cela affectera le comportement du CT.

Eh bien, il n'y a aucun moyen d'être immunisé contre les accidents. Le facteur humain est imparable).
 
Реter Konow:

Ma tâche initiale: montrer des solutions efficaces sans utiliser la POO.


L'essence de ma solution: - générer un tableau global de drapeaux d'événements pour les nouvelles barres de tous les symboles et de toutes les échéances une fois par minute.

Avantages :

1. le remplissage automatique du tableau et le vidage automatique.

2. aucune charge système.

3. Accès direct au tableau depuis n'importe quelle fonction et sauvegarde de l'indicateur d'événement avant que le tableau ne soit effacé.

Merde, je me suis finalement réveillé à .....
Vous comprenez qu'une barre de n'importe quel symbole peut arriver à tout moment et la tâche est comme de dire au système au même instant qu'une nouvelle barre est arrivée. Comment envisagez-vous cela lorsque vous interrogez le système une fois par minute ?

 
Реter Konow:
Eh bien, nous ne pouvons pas être protégés contre les accidents. Le facteur humain est imparable)).

Et voilà. C'est pourquoi je pense que le code doit être écrit de manière à limiter autant que possible les éventuelles erreurs humaines. Précisément parce que le facteur humain est irréductible. Pas plus tard qu'hier, j'ai trouvé une erreur dans mon code, à cause de laquelle les statistiques sur Expert Advisor étaient collectées depuis le début de l'historique, et non depuis la date spécifiée (date de création de l'EA). J'ai simplement oublié d'initialiser la variable et elle est restée à zéro.

Donc, maintenant j'ai redessiné l'analyseur de telle manière qu'il serait nécessaire de spécifier la date, à partir de laquelle l'analyse serait faite, et la fabrique de pièces du conseiller expert ne retournerait que la date de création et aucune autre.

Il est désormais impossible d'analyser l'historique des transactions avant la date de création du conseiller expert. Même si l'ancienne version faisait des échanges, ils ne seront pas inclus dans les statistiques maintenant.

 
Nikolai Semko:
Merde, je me suis enfin réveillé. ....
Vous vous rendez compte que la barre de n'importe quel symbole peut arriver à n'importe quel moment et la tâche consiste autant à dire au système au même instant qu'une nouvelle barre est arrivée. Comment envisagez-vous cela lorsque vous interrogez le système une fois par minute ?

Pourquoi "à ce moment précis" ? ??

Vous, mes amis, avez simplement des approches différentes pour faire des transactions. Si nous travaillons sur l'échelle M1, nous devrions recevoir l'information qu'une nouvelle barre est arrivée - pas "au même instant", mais à l'arrivée d'une nouvelle minute. Si nous travaillons sur l'échelle S1 (bonjour, Volchansky), nous devrions recevoir cette information à l'arrivée d'une nouvelle seconde. Si nous travaillons sur chaque tique - l'information devrait arriver avec l'arrivée d'une nouvelle tique.

Et il y a l'option "travailler par événement" - mais alors nous ne devrions pas avoir la fonction IsNewBar(), mais la fonction OnNewBar(), qui est en fait un "sous-ensemble" de la fonction OnTick().

 
Nikolai Semko:
Merde, je me suis enfin réveillé. ....
Vous réalisez qu'une barre de n'importe quel symbole peut arriver à tout moment et que la tâche consiste à dire au système à ce moment précis qu'une nouvelle barre est arrivée. Comment pensez-vous que cela va se produire lorsque vous interrogez le système une fois par minute ?

La fonction iBars() renvoie toujours le nombre actuel de barres. S'il a changé depuis le dernier appel, un nouvel événement de barre sera enregistré dans le tableau, s'il n'a pas changé, il ne sera pas enregistré.
 
Nikolai Semko:
Merde, je me suis finalement réveillé à .....
Vous réalisez que n'importe quelle barre de symbole peut arriver à n'importe quel moment et la tâche consiste à dire au système au même moment qu'une nouvelle barre est arrivée. Comment envisagez-vous cela lorsque vous interrogez le système une fois par minute ?

Je vois. Il se peut donc que la barre n'arrive pas lorsque les iBars sont demandées, mais qu'elle arrive un moment après la demande. Alors il sera manqué par le système. C'est le but.


Et puis quoi, être accessible en permanence ? - Ce n'est manifestement pas la meilleure solution.

 
Реter Konow:

Je vois. Donc la barre ne viendra peut-être pas au moment du scrutin, mais elle viendra un moment après le scrutin. Alors il sera manqué pour le système. C'est le but.

Peter, je propose un autre sujet de discussion, pour la deuxième fois. Pas besoin d'écrire quoi que ce soit, juste de la théorie.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Support d'extrémité Mt4.

Alexey Viktorov, 2017.09.11 13:08

Je pense que j'ai trouvé un exemple primitif de l'utilité de la POO. Voici une fonction pour remplir un tableau avec une valeur spécifiée. Il existe huit variétés selon le type de tableau.

Imaginez que vous deviez écrire une fonction qui doit passer un ensemble de paramètres, puis un autre, puis un troisième... En utilisant l'approche algorithmique, vous obtiendrez N noms de fonctions différents. Il semblerait qu'il n'y ait aucun problème, vous pouvez écrire 8 fonctions telles que ArrayInitializeInt()ArrayInitializeDouble() et ainsi de suite. Mais c'est tellement agréable de ne pas avoir à penser au type d'un tableau, il suffit d'utiliser une fonction dans tous les cas, et il serait sûr de mélanger le tableau que vous mettez là....


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Peter, je propose un autre sujet de discussion, pour la deuxième fois. Pas besoin d'écrire quoi que ce soit, juste de la théorie.


Veuillez attendre un peu. Nous comprendrons parfaitement ce sujet et je lirai attentivement le second.
 
Реter Konow:
Un instant, s'il vous plaît. Nous allons bien comprendre ce sujet et je vais m'intéresser de près au second.

Comme vous vous en souvenez, le sujet de la nouvelle barre a été abordé pour connaître les avantages de la POO, mais en aucun cas les options de programmation, et encore moins vos capacités. Mais les remarques sur votre code et votre algorithme en général ont fait dévier la discussion dans la mauvaise direction. Je pense donc qu'il n'est pas nécessaire de la poursuivre.

 
Alexey Viktorov:

Comme vous vous en souvenez, le sujet de la nouvelle barre a été abordé pour connaître les avantages de la POO, mais pas les options de programmation, et encore moins vos capacités. Mais les remarques sur votre code et votre algorithme en général ont fait dévier la discussion dans la mauvaise direction. Je pense donc qu'il n'est pas nécessaire de la poursuivre.

C'est-à-dire que vous voulez que je continue à dénigrer les avantages de la POO, et que tout le monde continue à me troller). Mais tu as fondamentalement raison. La discussion est partie dans la mauvaise direction.
Raison: