Championnat d'optimisation des algorithmes. - page 45

 
Andrey Dik:

Votre algorithme utilise un appel FF direct depuis l'algorithme, c'est-à-dire un appel de *.ex5 à *.ex5. Peut-on appeler une commande d'arrêt spéciale depuis le script en cours d'exécution qui arrête correctement l'optimisation sans utiliser ExpertRemove()?

Y a-t-il des pièges, des problèmes dans ce domaine ?

Juste un rappel, aujourd'hui je dois fournir un exemple d'appel de l'algorithme dans un script de test en deux variantes, dans lesquelles il se passe ce qui suit : 1. appel du FF depuis le script de test ; 2. appel du FF depuis l'algorithme.

Tu ne peux pas. Avec un soupçon de cela à l'esprit, j'ai récemment essayé de discuter de diverses variantes d'appel. C'est pourquoi j'ai suggéré de ne pas mesurer le temps, mais seulement de le retirer du tableau et de l'écarter lorsqu'il atteint un temps de fonctionnement prohibitif.
 
Yuri Evseenkov:

Je me demande pourquoi les promoteurs du MQL tels que Dmitry Fedoseyev et Andrey Dik ne veulent pas tout expliquer de manière populaire par un simple exemple.

Mais ils le peuvent. L'article https://www.mql5.com/ru/articles/351 en est un exemple.

La raison n'est peut-être pas la nature de la masse. Peut-être veulent-ils trouver des utilisateurs aussi avancés qu'eux et organiser une rencontre. D'où la limitation à MQL5, au jargon hautement spécialisé et aux longues analogies spatio-temporelles.

Sur les algorithmes génétiques très lucidement ici https://habrahabr.ru/post/128704/

J'ai essayé ici, personne ne semble le voir et ne veut le voir.

Mais pas dans ce fil, mais dans le précédent, que Belkonsky a créé et supprimé. Vous auriez pu demander ici aussi. Bien que, en général, la société se comporte correctement, pourquoi poster ici, si Belkonsky vient immédiatement chier ici.

 
Dmitry Fedoseev:
Tu ne peux pas. C'est dans cet esprit que j'ai récemment essayé de discuter des différentes mentions légales ici. C'est pourquoi j'ai suggéré de ne pas mesurer le temps, mais seulement de le retirer du graphique et de l'écarter lorsqu'il atteint un temps de fonctionnement prohibitif.
Et si, à l'intérieur d'une fonction *.ex5, une variable est vérifiée en permanence, interne ou globale, pour le flag==false ?
 
Andrey Dik:
Et si, à l'intérieur de la fonction *.ex5, une variable permanente, interne ou globale, est vérifiée pour le flag==false ?

Si une variable globale du terminal. Mais il faut alors que les participants soient tenus de le faire.

Dans ce cas, il peut arriver qu'une commande soit soumise au milieu du traitement d'une époque et qu'elle doive être interrompue, une partie du travail effectué pendant une époque le sera en vain.

 
Dmitry Fedoseev:

Si une variable globale du terminal. Mais il faut alors que les participants soient tenus de le faire.

Dans ce cas, il peut arriver qu'une commande soit soumise au milieu du traitement d'une époque et qu'elle doive être interrompue, une partie du travail effectué dans une époque sera perdue.

Bien sûr.

Ensuite, le script doit être capable d'écrire un drapeau d'arrêt dans une variable globale quand il le souhaite.

Et l'algorithme doit vérifier avant le début de l'époque si le drapeau est autorisé.

Dans l'exemple du script de contrôle, ce point (contrôle global) sera reflété.

 
Andrey Dik:

Bien sûr.

Ensuite, le script doit être capable d'écrire un drapeau d'arrêt dans une variable globale quand il le souhaite.

Et l'algorithme doit vérifier avant de démarrer l'époque si le drapeau est autorisé.

Dans l'exemple du script de contrôle, ce point (contrôle global) sera reflété.

Les règles devraient donc exiger qu'avant l'exécution d'une époch, l'existence d'une variable portant un tel nom soit vérifiée (préciser le nom).
 
Donc, avec ce niveau de formation et avec de nombreuses années d'expérience dans le domaine, vous invitez des personnes qui savent à peine de quoi elles parlent à participer au championnat ? Est-ce que vous leur montrez des dessins animés et leur dites "participez, vous pouvez le faire !"? Est-il moralement satisfaisant pour vous et quelques autres concurrents de les battre ? Pourquoi les inviter ? Peut-être la satisfaction ne réside-t-elle pas dans la dimension morale, mais dans la dimension matérielle ?
 
Реter Konow:
Ainsi, avec un tel niveau de formation et de nombreuses années d'expérience dans le domaine, vous invitez au championnat des personnes qui savent à peine de quoi elles parlent ? Est-ce que vous leur montrez des dessins animés et leur dites "participez, vous pouvez le faire" ? Est-il moralement satisfaisant pour vous et quelques autres concurrents de les battre ? Pourquoi les inviter ? Peut-être la satisfaction ne réside-t-elle pas dans la dimension morale, mais dans la dimension matérielle ?

Eh bien, tout d'abord, il n'y a pas deux optimiseurs expérimentés, mais beaucoup plus (le fait que peu osent est une autre question). Deuxièmement, pour ceux qui ne sont pas très bien préparés, que peuvent-ils faire maintenant ? - Ils peuvent également participer à l'événement, il n'y a pas de qualifications préliminaires.

Regardez les championnats de MQ, les green beginners y sont interdits ? - Non, ils ne l'ont pas fait, et ils avaient raison.

Il n'y a pas non plus d'interdiction pour les "jeunes". Tout le monde peut y participer.

Et troisièmement, dois-je dire : "Ne participez pas, vous n'avez aucune chance !"? - Au contraire, j'ai dit : "Tout le monde a sa chance !" Et ils le font, quel que soit le niveau de formation.

 
Dmitry Fedoseev:
Ainsi, dans les règles, écrivez une exigence telle que : avant d'effectuer une époque, vérifiez l'existence de la modification avec le nom d'untel ou d'unetelle (précisez).
OK.
 
Dmitry Fedoseev:

Si une variable globale du terminal. Mais il faut alors que les participants soient tenus de le faire.

Cela peut faire qu'une commande soit donnée au milieu du traitement d'une époque et qu'elle doive être interrompue, une partie du travail effectué dans une époque sera faite pour rien.

Je pense qu'il existe une solution, même si elle ne me plaît pas vraiment. Cela a été suggéré par quelqu'un, peut-être vous.

Vous pouvez stipuler à l'avance (par une requête spéciale dans le code) que le nombre d'exécutions ne doit pas être supérieur à un tel nombre. Ensuite, le FF, qui comptera le nombre d'appels lorsque le nombre autorisé sera dépassé, appellera ExpertRemove().

L'algorithme sera averti et ensuite, comme on dit, c'est de sa faute).

C'est bon ?

Raison: