les aventures d'un débutant - page 5

 

Salut Tim,

Hier, j'étais debout jusqu'à environ 2 heures du matin pour transformer le PSC en C (pseudocode en code). J'ai commencé directement après être rentré du travail.

En finissant le premier jet, j'ai réalisé que i) il manquait quelques éléments, ii) nous devons rendre tout ce qui est spécifique à la "paire".

Juste pour vérifier si je suis sur la bonne voie, pourriez-vous me faire part de vos conseils à ce sujet ?

1. Nous ne pouvons pas utiliser 3 ema's sans spécifier le symbole lorsque nous déclarons chaque iMA ou l'EA ne fonctionnera pas correctement. Nous devons donc déclarer 15 ema's (5 symboles avec 3 Ma's par symbole) ?

2. Nous avons omis la fonction CountOrders. Encore une fois, à cause des 5 paires. Nous avons besoin de 10 fonctions, par exemple EUR_USD_BuyCount, EUR_USD_SellCount ; etc. ?

3. Je me suis rendu compte qu'il y a une façon efficace d'écrire le code, et une façon "pour les débutants". Je vais faire la méthode pour débutants et j'apprécierais ensuite que vous me montriez comment la rendre efficace.

4. Les chiffres magiques. J'aspire à ce que vous faites et j'aimerais donc exécuter plusieurs EA à la fois. J'ai étudié les nombres magiques mais je n'arrive pas à les comprendre, pas même à partir d'un autre code. Pourriez-vous m'indiquer un endroit où je pourrais en apprendre davantage sur la façon de faire en sorte que l'ordinateur fasse la différence entre les différents EA.

Merci.

Nick

 

Bonjour Nick

Je suis désolé mais vous me perdez ici. Il semble que nous mettions à nouveau la charrue avant les bœufs et que nous fassions donc marche arrière. Dans mon message précédent, je vous ai suggéré de mettre en place une structure de base pour votre programme en utilisant l'assistant MetaTrader EA et le pseudo-code que nous avions déjà écrit. Pouvez-vous revenir en arrière, compléter cette étape et poster les résultats (le fichier mq4) sur ce forum pour que je puisse y jeter un œil ? Nous pourrons alors passer à l'étape suivante. Vous n'avez certainement pas besoin de 15 ema, 10 fonctions ou des nombres magiques pour cette question non plus et dans le cas improbable où nous avons des problèmes avec les exigences spécifiques des courtiers, nous pouvons les traiter si et quand nous y arrivons.


Je peux probablement vous guider dans le processus d'écriture de votre premier EA, mais seulement si vous êtes prêt à le faire étape par étape et à poster les résultats sur ce forum à chaque fois pour que je les examine. Sinon, je pense que ce petit projet va dérailler, me faisant perdre mon temps et le vôtre.

Vous avez dit - je vais faire le chemin du débutant et ensuite j'apprécierais que vous me montriez comment le rendre efficace.

Nick, c'est un exercice frustrant et long d'essayer de résoudre le mauvais code de quelqu'un. En général, l'effort n'en vaut pas la peine.


Salutations

Tim

 

Hé Tim,

Désolé de t'avoir frustré, je t'ai mal compris. Tu as dit que je devais coder maintenant même s'il ne fonctionnera pas et j'ai donc pensé que je devais le faire et le coder. J'ai donc passé pas mal de temps à le coder, en essayant de te soulager de ce travail - mais c'est plutôt l'inverse qui s'est produit.

Mais ne vous inquiétez pas, je vais poster le pseudo-code dans le cadre de l'EA si c'est ce que vous voulez dire. Vous pourrez alors me guider à travers chaque bloc si vous n'avez pas perdu la patience d'ici là :)

 

Hey Tim,


J'ai joint le pseudo-code dans un format EA avec des crochets pour le modifier. Fais-moi savoir si je n'ai toujours pas compris ce que tu voulais dire et je le modifierai si nécessaire. Je n'ai déclaré que les drapeaux et les filtres pour vous faire gagner du temps. Je n'ai rien touché d'autre. Je n'ai pas créé de noms pour les fonctions car je ne comprends toujours pas ce qu'elles seront, comme vous l'avez clairement compris dans mon dernier message. Quelle est la prochaine étape à partir d'ici, patron ?

Dossiers :
 
niko:

Hey Tim,


J'ai joint le pseudo-code dans un format EA avec des crochets pour le modifier. Fais-moi savoir si je n'ai toujours pas compris ce que tu voulais dire et je le modifierai si nécessaire. Je n'ai déclaré que les drapeaux et les filtres pour vous faire gagner du temps. Je n'ai rien touché d'autre. Je n'ai pas créé de noms pour les fonctions car je ne comprends toujours pas ce qu'elles seront, comme vous l'avez clairement compris dans mon dernier message. Quelle est la prochaine étape à partir d'ici patron ?

Bonjour. Je me suis impatienté - bien que je sois d'accord avec la nécessité du pseudocode, je pense que vous êtes allés un peu trop loin (désolé Tim).

Je viens de faire ceci. Je n'ai vraiment passé qu'une demi-heure dessus, je n'ai pas vérifié les erreurs, la syntaxe, etc. etc.

Mais si vous lui donnez un tourbillon, il devrait être assez proche de ce dont vous avez besoin. J'ai délibérément laissé les choses à l'état brut pour vous permettre de voir la structure mais pour que vous ayez encore du travail à faire. Par exemple, j'ai volontairement omis toute vérification d'erreur dans la fonction fnTrade et une erreur dans le traitement de TakeProfit.


CB


MISE À JOUR : En raison du message ultérieur de Tim, j'ai supprimé l'EA que j'avais créé pour vous et je vais laisser Tim s'en charger à sa place.


TIM : En ce qui concerne votre message sur la logique multi-monnaies, j'avais structuré cette EA pour qu'elle ne tienne pas compte des symboles, car c'est ce que Nick m'a dit qu'il voulait lorsque je travaillais avec lui avant que vous n'arriviez pour prendre la relève.

 

Salut Nick. Cloudbreaker

Cloudbreaker, je prends note de votre frustration face à la lenteur des progrès. Je pensais que le but de cet exercice était d'apprendre à Nick à programmer avec MT4. À en juger par une grande partie du code et des discussions relatives au codage que j'ai vus sur ce forum, je maintiens mon affirmation selon laquelle une approche systémique est le moyen le plus fiable et souvent le plus rapide de produire un code de bonne qualité.


J'ai bien compris qu'il s'agit d'un projet assez trivial et que n'importe quel programmeur compétent pourrait créer quelque chose comme ça très rapidement avec un minimum de formalités. Je vais m'efforcer de faire avancer les choses aussi vite que possible pour minimiser la frustration de tout le monde, mais n'oubliez pas que l'apprentissage prend souvent du temps et qu'il est facile pour ceux qui savent faire d'être frustrés par ceux qui essaient d'apprendre.

Nick,

Le code que vous avez posté n'était pas tout à fait ce que je recherchais. J'ai un peu arrangé les choses et fait quelques notes pour vous dans le code avec quelques choses à faire.

La prochaine tâche est de fournir un moyen de gérer les différentes paires de devises sans écrire des procédures distinctes pour chaque paire.


Une façon de procéder serait de déclarer les paires de devises comme un ARRAY de STRINGS dans la zone de déclaration globale.

Ensuite, dans le bloc de programme principal (fonction de démarrage), utilisez une boucle FOR pour indexer le tableau.

Nick, essayez de programmer ce code et postez-le sur le forum.


Nous devons également commencer à penser à la gestion des erreurs, aux tests et au débogage. Une façon courante de le faire dans MetaTrader est d'utiliser les fichiers journaux. J'ai ajouté quelques lignes dans l'EA pour vous aider à démarrer.

Jetez un coup d'oeil et essayez de comprendre ce que j'ai fait. Vous pouvez exécuter le code et consulter le fichier journal sur un compte actif ou dans le testeur de stratégie.


Salutations

Tim

Dossiers :
 

Hé les gars,

Merci à tous les deux pour votre soutien dans ce voyage ! Je suis d'accord qu'une approche systématique est essentielle pour un débutant, mais il est tout aussi important de se plonger dans le code. Ces deux éléments s'aident mutuellement à se développer et encouragent le processus d'apprentissage. C'est ce que j'ai réalisé et c'est pourquoi j'ai consacré du temps aux deux. Mieux on comprend le processus de codage, meilleur sera le pseudo-code et le programme qui en découlera.

Je vais poursuivre cet effort en travaillant sur les deux documents en parallèle - je pense que cela accélérera le processus d'apprentissage comme rien d'autre, car j'aurai un point de référence spécifique.

Je me concentrerai principalement sur la transformation du pseudocode en code, mais j'utiliserai le document de CB pour avoir des idées sur la manière et les parties à ajouter, et je l'utiliserai en parallèle pour apprendre, bien sûr avec les conseils de Tim tout au long du chemin.

Nick

 
niko:

Hé les gars,

Merci à tous les deux pour votre soutien dans ce voyage ! Je suis d'accord qu'une approche systématique est essentielle pour un débutant, mais il est tout aussi important de se plonger dans le code. Ces deux éléments s'aident mutuellement à se développer et encouragent le processus d'apprentissage. C'est ce que j'ai réalisé et c'est pourquoi j'ai consacré du temps aux deux. Mieux on comprend le processus de codage, meilleur sera le pseudo-code et le programme qui en découlera.

Je vais poursuivre cet effort en travaillant sur les deux documents en parallèle - je pense que cela accélérera le processus d'apprentissage comme rien d'autre, car j'aurai un point de référence spécifique.

Je me concentrerai principalement sur la transformation du pseudocode en code, mais j'utiliserai le document de CB pour avoir des idées sur la manière et les parties à ajouter, et je l'utiliserai en parallèle pour apprendre, bien sûr avec les conseils de Tim tout au long du chemin.

Nick

Salut Nick, je vais me retirer maintenant. Voir la modification de mon message ci-dessus.


CB

 
cloudbreaker:

Salut Nick, je vais me retirer maintenant. Voir la modification de mon message ci-dessus.


CB

Hé CB, je m'en doutais, j'ai donc été assez rapide pour le télécharger. Comme je l'ai déjà dit, tout ce qui concerne l'idée que j'ai m'aide à apprendre, votre code ne me découragera pas d'apprendre car je ne le copierai pas dans le modèle de Tim, je vais plutôt essayer de le comprendre pour voir comment les choses peuvent être faites différemment :).


Tout peut aider comme on dit !

 
niko:

Hey CB, je pensais que tu le ferais, donc j'ai été assez rapide pour le télécharger. Comme je l'ai déjà dit, tout ce qui concerne l'idée que j'ai m'aide à apprendre, ton code ne me découragera pas d'apprendre car je ne le copierai pas dans le template de Tim, je vais plutôt essayer de le comprendre pour voir comment les choses peuvent être faites différemment :)


Tout peut aider comme on dit !

Pas d'inquiétude. Avec seulement quelques modifications, il devrait faire le travail pour vous.

Vous devriez commencer par modifier l'"erreur" TakeProfit que j'ai intégrée pour vous. Jetez un coup d'oeil à la façon dont le StopLoss est fait pour vous donner un indice.

Une fois que vous l'avez fait fonctionner, j'espère que vous commencerez à ajouter la gestion des erreurs, et quelques trucs conviviaux pour les opérateurs comme les instructions Print() afin que vous puissiez voir facilement dans les journaux ce qu'il fait.

Le pseudo-code est important avant de s'engager dans le code (même pour les programmeurs expérimentés), mais ne le faites pas trop cuire.

Vous semblez attirer l'aide en raison de votre bon caractère. Je suppose que vous travaillez dans les RH ou que vous vous intéressez à la psychologie humaine ?


CB