Questions des débutants MQL5 MT5 MetaTrader 5 - page 282

 

amavladi:


Je veux comprendre la mécanique des boucles pour pouvoir écrire un EA complexe. L'opérateur "retour" me renvoie à un nouveau "départ". Je n'en ai pas toujours besoin.

Merci quand même pour la réponse.

Vous êtes les bienvenus. Le fait est que si vous voulez comprendre les "mécanismes" avec l'aide de "tiers", vous devez formuler le problème à ces mêmes "tiers", c'est-à-dire décrire ce que vous aimeriez obtenir de l'algorithme, et non ce que vous avez obtenu.

"La boucle boucle" n'est pas un problème, car s'il n'y a rien dans la boucle à part l'opérateur continue, alors elle est vouée à boucler jusqu'à ce que la condition de boucle devienne fausse.

Autrement dit, vous ne devez pas poser de questions stupides du type : "qu'est-ce qui ne fonctionne pas dans un code qui ne fonctionne pas". Après tout, même un hérisson ivre sait qu'un code qui ne fonctionne pas ne fonctionne pas parce qu'il ne fonctionne pas. Mais personne, sans pouvoirs télépathiques, à l'exception de l'auteur du code, ne peut comprendre ce qui aurait dû fonctionner dans le code opérationnel.

 
amavladi:

AIDE !

Je cherche des gens bien sur ce site, s'il vous plaît conseillez-moi de mes erreurs. Je viens de commencer à apprendre MQL4et j'ai écrit un simple conseiller expert qui ouvre un ordre et le ferme avec un petitprofit.J'ai essayé de le vérifier dans le testeur de stratégie et j'ai découvert que mes instructions for et while se mettent en boucle si elles sont écrites comme ceci :

//--------------------------------------------------------------------

   while (Ask<=Level)

   { RefreshRates();

     continue;

   }         

Eh bien ici, tout semble être simple.

Le testeur de stratégie génère un tick, appelle start() et attend la fin de cette fonction pour générer le tick suivant.

Donc, si vous voulez que votre robot ne traîne pas dans le testeur, éloignez-vous d'une telle construction. Dans votre cas, le prix Ask ne changera pas jusqu'à ce qu'il sorte de start().

Et lorsque la commande de retour est reçue, le démarrage de la fonction se termine, et le testeur comprend que le prochain tick doit être généré.

De plus, non pas dans le testeur de stratégie, mais dans le mode réel, votre code fonctionnera comme vous l'attendez, car RefreshRates mettra à jour le prix Ask.

Votre code fonctionne bien, mais pour le testeur de stratégie, il entre dans une boucle infinie.

L'utilisation du retour sera utile ici. Lorsque vous gagnerez en expérience, vous vous débarrasserez de ces constructions. Bonne chance à vous.

 
Reshetov:


En d'autres termes, vous ne devez pas poser de questions stupides telles que "qu'est-ce qui ne fonctionne pas dans un code qui ne fonctionne pas". Après tout, même un hérisson ivre sait qu'un code qui ne fonctionne pas ne fonctionne pas parce qu'il ne fonctionne pas. Mais personne sans pouvoirs télépathiques, à l'exception de l'auteur du code, ne peut comprendre ce qui aurait dû fonctionner dans le code opérationnel.

Le code fonctionne, c'est juste qu'il y a toujours des nuances que les débutants ne connaissent pas...
 
Reshetov:

Vous êtes les bienvenus. Le fait est que si vous voulez comprendre les "mécanismes" avec l'aide de "tiers", vous devez formuler le problème à ces mêmes "tiers", c'est-à-dire décrire ce que vous aimeriez obtenir de l'algorithme, et non ce que vous avez obtenu.

"La boucle boucle" n'est pas un problème, car s'il n'y a rien d'autre dans la boucle que l'opérateur continue, elle est vouée à boucler jusqu'à ce que la condition de boucle devienne fausse.

Autrement dit, vous ne devez pas poser de questions stupides du type : "qu'est-ce qui ne fonctionne pas dans un code qui ne fonctionne pas". Après tout, même un hérisson ivre sait qu'un code qui ne fonctionne pas ne fonctionne pas parce qu'il ne fonctionne pas. Mais personne sans pouvoirs télépathiques, à l'exception de l'auteur du code, ne peut comprendre ce qui aurait dû fonctionner dans le code opérationnel.

Je n'aime pas quand les gens jettent des saletés sur les débutants. Il suffit d'écrire de façon humaine, par exemple : la question est mal formulée, imprécise ou erronée, ou une erreur ici ou là. Rappelez-vous quand vous avez commencé à apprendre à faire quelque chose, vous aussi, plus d'une fois vous avez probablement posé une question stupide. Et la métaphore du hérisson ivre apporte-t-elle une solution positive au problème ? Il est seulement agréable de se sentir frais et dispos dans l'éclat de sa propre grandeur face à un nouveau venu.
 
paladin800:
Je n'aime pas quand les nouveaux venus se font jeter des saletés sur eux.

Un cochon trouve de la terre partout © Proverbe populaire

Où avez-vous trouvé la terre ? Si vous l'avez trouvé, demandez à un modérateur.

paladin800:
La métaphore du hérisson ivre apporte-t-elle une quelconque positivité au problème ?

Demandez à l'administration d'ajouter au règlement l'interdiction des métaphores et des hérissons.

 
Reshetov:

Un cochon trouve de la terre partout © Proverbe populaire

Où avez-vous trouvé la terre ? Si vous le trouvez, allez voir un modérateur.

Demandez à l'administration d'ajouter au règlement l'interdiction des métaphores et des hérissons.

Et pourquoi les modérateurs et les administrateurs... C'est une question d'éducation, d'éthique professionnelle, de tact, de tolérance, d'humanité en fin de compte... ...les admins ne peuvent pas aider.

Et si vous ne comprenez pas bien le problème, il vaut mieux ne pas donner de conseils... Parfois, c'est mieux de mâcher... Bien que frimer aux dépens des autres soit votre droit...

 
elugovoy:

C'est une question d'éducation, d'éthique professionnelle, de tact, de tolérance, d'humanité en fin de compte...

Mm-hmm. Le jardin d'enfants et l'institut des femmes nobles tout en un.

Alors pourquoi ne pas laisser de côté les questions personnelles et continuer à répondre aux questions des nouveaux venus ? Sinon, nous obtenons une sorte de fluderasty de la part des partisans des approches humanitaires dans un sujet purement technique.

 
Je tiens à remercier Evgeniy Lugovoy (il a de grandes capacités télépathiques). Vous avez répondu à cent pour cent à ma question sur les problèmes de cycle réel et de cycle de test. Le même soir, j'ai lu l'article "Testing and Optimizing Expert Advisors " par le lien http://articles.Le même soir, je suis tombé sur l'article "Tester et optimiser l'EA" par le lien . mql4.com/fr/824 (c'est pour les débutants comme moi) et j'ai réalisé que le testeur crée un mouvement de prix réel de manière discrète et ne donne de nouvelles cotations qu'à l'itération suivante de l'EA, j'ai donc réécrit le code pour le test, en utilisant une série d'instructions IF, là où il y avait des opérateurs de boucles auparavant. Pour les débutants comme moi, je conseille de se familiariser avec les "Fonctions communes" de MQL4 (lien http://docs.mql4.com/ru/common). J'ai été surpris de constater la différence de fonctionnement d'une même fonction dans le terminal réel et dans le testeur de stratégie, par exemple Sleep() dans le testeur ne provoque aucun retard comme il se doit et ne fonctionne que dans le terminal réel.Et enfin, pour les amateurs téméraires (comme moi) de boucles infinies conditionnelles int start() { double Level=1300 ; while (Ask<=Level) Les deux dernières lignes du code, malgré son innocence, après l'avoir exécuté sur un terminal dans une fenêtre d'argent réel, tant que le prix atteint 1300, prendront une quantité énorme de temps CPU (sur mon 2x4 core 25%).Mon ami a suggéré que si vous ne pouvez pas abandonner la boucle, vous devez insérer Sleep ( int 100 ), c'est-à-dire donner un intervalle de 100 à 200 millisecondes pour soulager le processeur.int start() { double Level=1300 ; while (Ask<=Level) { Sleep( int 100) continue ; }
P.S. Pour les admirateurs "tiers" des expressions : hérisson ivre, screwball, fluderasty et ainsi de suite. (bien que nous soyons dans un sujet purement technique), permettez-moi de faire une petite référence à Fyodor Mikhailovich Dostoyevsky, qui dans son roman "L'Idiot" à travers le prince Mychkine dit une chose très étrange : "La beauté sauvera le monde ! Et à toi Eugène, je te prie de dire bonjour à la Moldavie, même si je vis dans un autre pays, mais je suis né à Kishinev.
 
amavladi:

Il n'y a pas de truc télépathique )))) Je pense que tout le monde a fait les mêmes erreurs lorsqu'il veut "attraper" un prix pour, disons, un chalut... y compris moi, il y a environ 6 ans.

D'ailleurs, le sujet s'adresse aux débutants et n'est pas "strictement technique".

Je vais dire bonjour.

Bonne chance.

 
elugovoy:

Il n'y a pas de truc télépathique )))) Je pense que tout le monde a fait les mêmes erreurs lorsqu'il veut "attraper" un prix pour, disons, un chalut... y compris moi, il y a environ 6 ans.

D'ailleurs, le sujet s'adresse aux débutants et n'est pas "strictement technique".

Je vais dire bonjour.

Bonne chance.

En ce qui concerne la télépathie et le "purement technique" - je suis pour M.Reshetov: )))).

Bonne chance à vous aussi.