Pas pour les développeurs MT ! Par quoi remplacer INIT_PARAMETERS_INCORRECT ? - page 7

 
Сергей Таболин:

Vous semblez être celui qui a complètement manqué le point. Alors ton "conseil" trop sûr de lui va au diable !

Il n'ira pas à l'égout))

Votre question d'amateur a trouvé sa réponse, tout comme mes conseils trop sûrs.

Vous n'êtes pas un modérateur ou un administrateur, donc ce n'est pas à vous de décider qui se fait avoir.

 
TheXpert:

Il n'est même pas nécessaire de comprendre les bases des algorithmes génétiques pour appuyer sur le bouton d'optimisation. Il suffit d'appuyer sur le bouton.

Non, c'est aussi loin que le séchage des chats dans le micro-ondes va.

Il n'est pas nécessaire d'encourager cette attitude consumériste du type "j'ai appuyé sur le bouton, pourquoi ça ne marche pas ? !?".

ps : mon post n'a rien à voir avec l'utilisation de la génétique.

 
Сергей Таболин:

Vous avez fondamentalement tort.

Une fois encore, en tant qu'utilisateur, je vois : Optimisation lente/rapide.

C'est tout, je ne suis pas intéressé. Ni en tant que connaissance approfondie, ni à la lumière des choses fondamentales.

Est-ce là votre attitude dans la vie ? Je crains qu'une telle approche amateur des choses ne vous attire beaucoup d'ennuis. Surtout en matière financière. Si vous ne voulez pas comprendre, vous servirez de fourrage à ceux qui veulent comprendre.

S'il est écrit "rapide" et "lent", la première pensée qui devrait venir à l'esprit d'une personne raisonnable est la suivante : pourquoi y a-t-il un "lent", si les mêmes résultats peuvent être obtenus rapidement ?

Mais à chacun son métier.

 
Сергей Таболин:

C'est vrai.

Seulement, je suis enclin à penser que les limitations devraient être prises en compte, dans la mesure du possible, par les développeurs. Il en va de même pour les faiblesses.

J'essaie de ne pas utiliser du tout l'optimisation génétique. Mais quand je dois le faire, je ne veux pas me retrouver au milieu de ces algorithmes. Eh bien, ce n'est pas pour un utilisateur.

Par exemple, je suis assis devant mon ordinateur, je clique simplement sur les touches et je ne me soucie pas du tout de ce qui se passe entre le moment où j'appuie sur la touche et celui où le personnage apparaît à l'écran. Je ne suis pas du tout intéressé par la façon dont le processeur, la carte graphique, les vis, les refroidisseurs, comment ils interagissent. Ce n'est pas non plus pour l'utilisateur moyen.

C'est exactement pour cela qu'il faut comprendre qu'en appuyant sur un bouton de symbole, on obtient un seul symbole. Et il y a des limites, par exemple à la vitesse du clic. Et vous essayez d'appuyer sur le bouton 50 fois par seconde, et vous vous indignez qu'il n'ait pas affiché 50 caractères.

Question - la capacité de percevoir 50 caractères par seconde - cette restriction devrait-elle être supprimée ? La plupart des utilisateurs ne trouveraient-ils pas pire, au contraire, que les bavardages des contacts soient perçus comme des caractères ?

 
TheXpert:

Il n'est même pas nécessaire de comprendre les bases des algorithmes génétiques pour appuyer sur le bouton d'optimisation. Il suffit d'appuyer sur le bouton.

Pourquoi le ferait-il ?

S'il ne comprend pas, il ne doit pas demander "pourquoi j'ai reçu cette saloperie". Si ça a marché, alors ça a "juste marché". Il a été conçu de cette façon.

Tout outil nécessite un certain niveau de compréhension. Cela n'exclut pas l'utilisation de boîtes noires, mais même en cas d'utilisation de boîtes noires, il faut bien comprendre les schémas de base selon lesquels la boîte noire fonctionne.

 

Messieurs les camarades !

Nous glissons vers une discussion sur qui comprend quoi et s'il doit ou ne doit pas le comprendre. Et la question de fond a été reléguée au second plan.

Je ne connais pas les mécanismes de la génétique, alors faites un effort pour comprendre ce que je veux dire.

Il existe 117649 variantes (passages). Parmi ceux-ci, seuls 1953 sont autorisés. En fait, ceux qui sont vraiment inacceptables sont 1 (000000) ! !! Et 115695 sont des répétitions. Différentes variations de celles de 1953 "autorisées". Pour économiser du temps et des ressources, je les exclue par INIT_PARAMETERS_INCORRECT.

Suivant. La génétique recueille la première population de 512 individus. N'est-ce pas ?

Et cette population comprend immédiatement 502 individus "inacceptables". 10 personnes qui travaillent, ce n'est pas suffisant. Je suis d'accord.

Mais 512 ne représente qu'un quart de 1953 (environ).

Sans vouloir approfondir la génétique, je ne comprends pas pourquoi la première population ne peut pas être assemblée à partir des seuls paramètres "admissibles" ?

Et, en fait, qu'est-ce qui empêche les populations ultérieures de n'être assemblées qu'à partir de paramètres valides ???
 
Andrey Khatimlianskii:

Nah, c'est aussi loin que le séchage des chats dans le micro-ondes va.

Il n'est pas nécessaire d'encourager cette attitude consumériste du type "j'ai appuyé sur le bouton, pourquoi ça ne marche pas ?".

Je ne parle que de ce bouton. J'ai expliqué ma position plus haut. Je vais vous en dire plus, je connais les algorithmes génétiques, ça ne m'aide pas à optimiser de quelque façon que ce soit.
 

Entre autres choses, je n'utilise personnellement INIT_PARAMETERS_INCORRECT qu'en mode optimisation, afin d'éliminer les paramètres qui ne sont pas, littéralement, invalides, mais simplement des passages inutiles.

A titre d'exemple :

input   bool   использовать_параметр   = true;
input   int    парам_1                 = 5;
input   int    парам_2                 = 12;
input   int    парам_3                 = 100;
input   int    парам_4                 = 1;

........

Donc, si pendant le test et pendant le travail du Conseiller Expert quandusing_parameter = false ses paramètres n'ont absolument aucune importance, alors pendant l'optimisation la recherche de ces paramètres est juste inutile, doncINIT_PARAMETERS_INCORRECT est sortisauf pour un seul passage avec les valeurs initiales. Cela permet de gagner beaucoup de temps. Après tout, il y a tout un tas de laissez-passer inutiles pour un laissez-passer valide. Et la génétique traite le tri des passages inutiles comme une erreur grossière.

Les développeurs, au lieu de résoudre ce problème d'une manière ou d'une autre, vous envoient étudier cette même génétique avec des interdictions appliquées. Pour qu'ils aient le temps de l'étudier, je suppose.

Je le répète une fois de plus : l'utilisateur n'a pas besoin de savoir comment fonctionne la génétique ! C'est aux développeurs de trouver une solution à ce problème.

 
Сергей Таболин:

Entre autres choses, je n'utilise personnellement INIT_PARAMETERS_INCORRECT qu'en mode optimisation, afin d'éliminer les paramètres qui ne sont pas, littéralement, invalides, mais simplement des passages inutiles.

A titre d'exemple :

Donc, si pendant le test et pendant le travail du Conseiller Expert quandusing_parameter = false ses paramètres n'ont absolument aucune importance, alors pendant l'optimisation la recherche de ces paramètres est juste inutile, doncINIT_PARAMETERS_INCORRECT est sortisauf pour un seul passage avec les valeurs initiales. Cela permet de gagner beaucoup de temps. Après tout, il y a tout un tas de laissez-passer inutiles pour un laissez-passer valide. Et la génétique traite le tri des passages inutiles comme une erreur grossière.

Les développeurs, au lieu de résoudre ce problème d'une manière ou d'une autre, vous envoient étudier cette même génétique avec des interdictions appliquées. Pour qu'ils aient le temps de l'étudier, je suppose.

Je le répète une fois de plus : l'utilisateur n'a pas besoin de savoir comment fonctionne la génétique ! Mais trouver une solution à ce problème est une tâche pour les développeurs.

Vous avez 4 paramètres, vous devez donc organiser le fonctionnement de ces 4 paramètres uniquement avec les valeurs correctes, alors la génétique pourra être utile.

 
Сергей Таболин:


Il y a 117649 options (passes). Parmi celles-ci, seules 1953 sont valables. En principe, ceux qui sont vraiment inacceptables sont 1 (000000) ! !! Et 115695 sont des répétitions. Différentes variations de celles de 1953 "autorisées". Pour économiser du temps et des ressources, je les exclue par INIT_PARAMETERS_INCORRECT.

Personnellement, j'utilise surtout INIT_PARAMETERS_INCORRECT uniquement enmode optimisation, précisément pour trier les paramètres qui ne sont pas inadmissibles, au sens propre, mais simplement des passagesinutiles.

C'est exactement votre erreur : il n'y a pas de passes "inutiles" en génétique. Il étale tout sur les étagères, passant au crible le superflu, au détriment du temps et des ressources économisés. Et vous ne faites que le distraire.

En fait, vous vous contredisez. D'abord vous dites que vous voulez que tout fonctionne tout seul en appuyant sur un bouton magique, sans aucun effort supplémentaire de votre part. Mais en même temps vous créez des shamans dans le code, censés aider l'algorithme d'optimisation.

En bref, tout est clair maintenant :

Sergei Tabolin:

Que dites-vous de ça ?

121

alors le résultat sera comme 21. Et une chaîne de 21 répéterait ce résultat. Duplication, temps supplémentaire pour, en principe, des courses inutiles...

Vous n'avez pas besoin d'éliminer quoi que ce soit par INIT_PARAMETERS_INCORRECT. Calculez 121 selon la logique de votre programme, et la génétique fera son travail, et le résultat sera obtenu en moins de 1953 passes (j'espère).

Si vous optimisez en utilisant la recherche complète lente, alors bien sûr les passes supplémentaires ne sont pas nécessaires. Vous pouvez introduire un paramètre supplémentaire dans votre Expert Advisor qui définit le type d'optimisation. Si c'est une recherche complète, les passes supplémentaires sont rejetées, alors que si c'est génétique, elles ne le sont pas. Il est dommage que MQL ne fournisse pas une possibilité de connaître le type d'optimisation. Les développeurs devraient demander d'ajouter une telle fonction.