English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
Better Programmer (Partie 02): Arrêtez de faire ces 5 choses pour devenir un programmeur MQL5 performant

Better Programmer (Partie 02): Arrêtez de faire ces 5 choses pour devenir un programmeur MQL5 performant

MetaTrader 5Systèmes de trading | 29 mars 2022, 14:56
207 0
Omega J Msigwa
Omega J Msigwa

Introduction


J'utilise beaucoup le mot noob dans cette série d'articles pour décrire quelqu'un avec moins d'expérience en programmation MQL5 (ne soyez pas offensé par cela). Cela facilite la relation. Cela ne veut pas dire que cet article est réservé aux noobs. Absolument pas ! C'est pour tout le monde, quelle que soit votre expérience en programmation, car ce qui fait de vous un noob ou non, ce sont vos habitudes et vos comportements de codage... pas des années de codage.

codeur noobs_vs_professionnel 


Le premier article est ici pour ceux qui ne l'ont pas lu, alors laissez-moi poursuivre cette mission de transformer les débutants en professionnels.

01 : Arrêtez de penser que vous êtes meilleur que les autres


Donc, vous codez depuis un moment maintenant et avez réussi à créer plusieurs excellents EA et indicateurs pour vous et vos clients sur le freelance, la base de code ou quelque chose, alors maintenant vous êtes bon. C'est bien si vous remarquez vos progrès et que vous les utilisez pour augmenter votre confiance en vous pour relever d'énormes défis afin de vous améliorer davantage et de ne pas les utiliser avec arrogance. Gardez en tête que:

"Une personne arrogante se considère parfaite. C'est le principal mal de l'ignorance. Cela interfère avec la tâche principale d'une personne dans la vie - devenir une meilleure personne."

— Léon Tolstoï

Il est si facile de se sentir super intelligent et de critiquer le code de quelqu'un d'autre sans le comprendre pleinement, ou de se précipiter pour répondre à ses questions sur le forum de manière offensive pour montrer à quel point vous êtes un codeur badass et cette personne qui vient de poser la question sur le forum nul au codage. J'ai vu beaucoup de fois où les gens posent une question sur le forum et ils postent leur code et décrivent ce qu'ils ont essayé avant qui ne fonctionne pas. Puis tout à coup un noob apparaît avec une explication que cette personne a terriblement tort, sans proposer de solution ou en proposant une solution (code dans ce cas) moins précise que le code qui a été fourni par le sujet initial. OMG !


réponse du noob


Au lieu de sauter directement à la description que le sujet de départ est terriblement faux, puis de fournir du code qui n'est même pas au bon format, pourquoi ne pas commencer par des explications sur la raison du problème plutôt que d'expliquer ce qui doit être fait dans une manière détaillée et claire?

Il n'y a pas de plaisir à être dans les sujets de départ du forum. Je suis sûr que quiconque lance un sujet sur le forum sait déjà qu'il se trompe d'une manière ou d'une autre et c'est pourquoi il n'obtient pas les résultats souhaités. Il y a de fortes chances que le lanceur de sujet soit un noob et qu'il se débatte avec un problème depuis des heures, voire des jours (je sais ce que ça fait) .

Même sauter droit et faire glisser vers le bas un code non expliqué ou peu clair ne résoudra pas leur problème à long terme. C'est comme donner un analgésique à quelqu'un qui a besoin d'une intervention chirurgicale. En faisant cela, vous enseignerez aux noobs la pire habitude que j'ai décrite pour la première fois dans le premier article de cette série : l'habitude de copier-coller – en les faisant penser comme "donc ça marche comme ça ici, j'ai un problème je poste mon code sur le forum et on me donnera le code pour remplacer le mauvais... c'est cool !"

Assurez-vous toujours d'expliquer la solution de manière claire, détaillée et conviviale pour les débutants, car la plupart d'entre elles le sont. Gardez également à l'esprit qu'il y a beaucoup de noobs qui tomberont sur le même problème à l'avenir, ils auront donc probablement besoin d'une solution à partir de ce sujet. 

En dehors de cet exemple, penser que nous sommes meilleurs que les autres provoque de mauvaises réponses sur le forum et de fausses critiques sur la base de code. En pensant que vous êtes meilleur que l'auteur de ce système particulier simplement parce que vous voyez que le code n'est pas très compliqué comme vous pensez qu'il devrait être ou comme vous l'aimez et que vous connaissez, nous avons tendance à refuser de comprendre pleinement comment et pourquoi le code a été écrit en premier lieu, ce qui conduit à l'ignorance.

02 : Évitez d'avoir l'état d'esprit fixe 


Arrêtez de penser qu'il n'y a aucun moyen de devenir bon dans un domaine particulier.

"La folie, c'est faire la même chose encore et encore et s'attendre à des résultats différents."
— Albert Einstein


Ne soyez pas obligé de créer le même type d'Expert Advisors, d'indicateurs, de scripts ou quoi que ce soit d'autre. Cela détruit votre créativité et vous restez bloqué au même endroit. Penser que vous n'êtes pas né pour être bon dans un domaine de programmation particulier simplement parce que c'est trop complexe ou difficile est autolimitant. Sachez simplement que votre cerveau est flexible. Il est conçu pour s'adapter et changer à de nouveaux stimuli. Plus vous le défiez, meilleur vous deviendrez sur ce sujet particulier. Vous pouvez devenir bon en :

et tout ce à quoi vous pouvez penser. Mais vous devez mettre suffisamment d'efforts et de travail pour y arriver.

Oui, bien sûr, il n'y a pas d'EA ou d'indicateur Saint Graal (je ne l'ai pas vu moi-même) jusqu'à présent, mais cela ne devrait pas vous empêcher d'améliorer vos systèmes au mieux en changeant vos démarches.

À mes débuts en programmation MQL5, j'avais tellement peur lorsque j'ai téléchargé quelque chose comme une moyenne mobile simple à partir de la CodeBase et que j'ai découvert que le code comptait plus de 1 000 lignes ou plus  parce que était la première chose que je cherchais dans le code. Je pensais que c'était trop complexe. Je pense que c'est le même problème auquel les noobs sont confrontés.

Je suis un peu expérimenté maintenant. Tout ce que je peux dire, c'est que c'est peut-être difficile maintenant, mais ce n'est pas grave. Tout dans la vie est comme ça au début mais ce sera facile, seuls le temps et les efforts le diront.

03 : Arrêtez d'écrire du code qui sera utilisé un jour


Vous avez donc créé votre ou vos EA ou indicateur(s) sur votre projet. Vous avez maintenant trop de lignes de code. Sans beaucoup d'attention et de relecture attentive de votre code, il y a de fortes chances qu'il y ait du code indésirable et inutilisé.


"Ceux qui ont des connaissances ne prédisent pas. Ceux qui prédisent n'ont aucune connaissance."
— Lao Tseu

Toujours moins de code signifie 

  • Moins de bugs
  • Moins de temps pour lire 
  • Facile à compiler 
  • Rapide à revoir 
  • Expédition rapide
  • Maintenable 
  • Facile à déboguer
Ne passez pas beaucoup de temps à écrire du code dont vous n'avez pas besoin pour le moment.

J'espère qu'au moins une fois dans la programmation MQL5 vous avez vu quelque chose comme ça, du code de quelqu'un d'autre

int MathRandInt(int mini, int maxi)
  {
   double f   = (MathRand() / 32768.0);
   return mini + (int)(f * (maxi - mini));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void chart_random()
 {
//---
  string background[]={"clrBlack"};
  string bulls[]={"clrGreen","clrDeepPink","clrYellow","clrCrimson","clrMediumBlue","clrKhaki","clrYellow"};
  string bears[]={"clrDarkViolet","clrDarkOrange","clrIndigo","clrWhite","clrSilver","clrMediumPurple","clrBlue"};
//---
   ChartSetInteger(ChartID(), CHART_MODE, CHART_CANDLES);
   ChartSetInteger(ChartID(), CHART_SHOW_GRID, false);
   ChartSetInteger(ChartID(), CHART_AUTOSCROLL, true);
   ChartSetInteger(ChartID(), CHART_SHOW_PERIOD_SEP, true);
   ChartSetInteger(ChartID(), CHART_SHIFT, true);
   ChartSetInteger(ChartID(), CHART_SHOW_ASK_LINE, true);
   ChartSetInteger(ChartID(), CHART_SHOW_BID_LINE, true);
   ChartSetInteger(ChartID(), CHART_COLOR_ASK, clrBlue);
   ChartSetInteger(ChartID(), CHART_COLOR_BID, clrCrimson);
   ChartSetInteger(ChartID(), CHART_SCALE, 2);
   ChartSetInteger(ChartID(), CHART_FOREGROUND, true);
   ChartSetInteger(ChartID(), CHART_COLOR_FOREGROUND,clrWhite);
//---
/*
 for (int i=0; i<ArraySize(background); i++){
     int maxi=ArraySize(background);
     int random_=MathRandInt(0,maxi);
    ChartSetInteger(0,CHART_COLOR_BACKGROUND,StringToColor(background[random_]));
    }
  for (int i=0; i<ArraySize(bulls); i++){
    ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,StringToColor(bulls[MathRandInt(0,ArraySize(bulls))]));
    ChartSetInteger(0,CHART_COLOR_CHART_UP,StringToColor(bulls[MathRandInt(0,ArraySize(bulls))]));
   }
  for (int i=0; i<ArraySize(bears); i++){
    ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,StringToColor(bears[MathRandInt(0,ArraySize(bears))]));
    ChartSetInteger(0,CHART_COLOR_CHART_DOWN,StringToColor(bears[MathRandInt(0,ArraySize(bears))]));
   } */
//---
   int y_distance=70;
   int font_size=30; 
   int width=(int)ChartGetInteger(ChartID(),CHART_WIDTH_IN_PIXELS);
   int padding=70;
   int x=width/3;
//---
    string label_name= MQLInfoString(MQL_PROGRAM_NAME);
    ObjectCreate(0, "name", OBJ_LABEL, 0, 0, 0);
    ObjectSetString(0,"name",OBJPROP_TEXT,label_name); 
    ObjectSetString(0,"name",OBJPROP_FONT,"Lucida Console"); 
    ObjectSetInteger(0,"name",OBJPROP_CORNER,CORNER_RIGHT_LOWER);
    ObjectSetInteger(0,"name",OBJPROP_XDISTANCE,x+padding); 
    ObjectSetInteger(0,"name",OBJPROP_YDISTANCE,y_distance); 
    ObjectSetInteger(0,"name",OBJPROP_FONTSIZE,font_size); 
    ObjectSetInteger(0,"name", OBJPROP_SELECTABLE, false);
 }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

L'exemple d'image est trop petit - j'ai vu plus de 200 lignes de code commentées (masquées) et inutiles dans le programme.

MetaEditor détecte les variables inutiles au niveau de la fonction en vous avertissant des variables inutilisées afin que vous puissiez choisir entre les conserver et leur avertissement en même temps si cela vous plaît ou vous en débarrasser.

Mais pour le reste du code, nous devons vérifier cela par nous-mêmes pour nous assurer que nous n'avons pas ces codes indésirables.

Si vous ne l'utilisez pas - vous n'en avez pas besoin - supprimez-le.

Le code inutilisé est source de confusion et sans oublier qu'il augmente votre temps de défilement vers le code nécessaire lorsqu'il se trouve au milieu du code de votre programme.

04 : Vous n'êtes pas obligé d'avoir toujours raison.

"Un homme qui a commis une erreur et ne la corrige pas, commet une autre erreur."
— Confucius

La principale raison pour laquelle les noobs se précipitent immédiatement sur le Forum pour faire glisser leur code et fournir moins de descriptions non claires de quoi et pourquoi ils codaient de cette façon et ce qu'ils voulaient, c'est parce qu'ils ont trop peur de s'exposent à plus de problèmes. Ce n'est pas sage, mes chers noobs !

La carrière de codage est pleine de problèmes et de défis sans fin, et il n'y a pas de meilleur moyen de devenir excellent si ce n'est de résoudre autant de problèmes que possible. Je ne veux pas dire que vous ne devriez pas poster vos problèmes sur le forum (ne vous méprenez pas). Mais assurez-vous d'avoir essayé un peu de le résoudre par vous-même, c'est pourquoi c'est une bonne pratique avant de commencer un sujet, vous décrivez les choses que vous avez essayées. La raison derrière cela est de concentrer votre esprit dessus et en vous mettant au défi avec différentes méthodes par vous-même, non seulement vous pourriez résoudre le casse-tête, mais vous pourriez également découvrir des choses que vous ne saviez pas la première fois et en apprendre davantage.

Une fois l'erreur corrigée, assurez-vous de bien la comprendre et de savoir comment l'éviter la prochaine fois.


05 : Abandonnez l'idée du succès du jour au lendemain

"Si vous regardez de près, la plupart des succès du jour au lendemain ont pris beaucoup de temps."
— Steve Jobs

Ok je comprends que vous codez depuis un moment déjà mais vous avez l'impression de ne pas progresser, vous n'avez pas l'impression d'aller nulle part. N'est-ce pas ?

Ce sentiment arrive souvent aux noobs, car la plupart d'entre eux s'attendaient à ce que les résultats soient immédiats, mais le monde ne fonctionne pas de cette façon.

Asseyez-vous, détendez-vous et profitez du processus. Vous faites réellement des progrès ; vos doutes ne sont qu'une partie du voyage mais ils ne doivent pas vous arrêter. Je recommanderais de travailler sur vos projets préférés afin que vous puissiez vous amuser tout en apprenant, mais ne restez pas coincé là-bas. Assurez-vous de rester ouvert aux nouvelles idées et possibilités comme je l'ai expliqué sur le deuxième point.

Mettez le travail dedans, et le progrès viendra automatiquement en tant que produit final.

  • Lisez autant de codes sources que possible, sur Codebase.
  • Lisez autant d'articles que possible dans Articles.
  • Passez plus d'heures sur le Forum à aider les autres.
  • Expérimentez avec beaucoup de choses pour trouver celle qui vous convient le mieux.

Souvenez-vous

Le succès ne vient pas de ce que vous faites occasionnellement. Il vient de ce que vous faites régulièrement.

 

Conclusion

Pour être honnête, je ne suis pas aussi magnifique, pas parfait en programmation MQL5 ou dans ma carrière de développeur web. Je suis encore étudiant dans ce truc de codage et il n'y a pas de fin , car ça ne s'arrête jamais. Je m'efforce toujours de m'améliorer et de devenir meilleur chaque jour. La raison pour laquelle j'ai le courage de partager cela avec vous (enseigner tout en étant étudiant) est d'aider les personnes ayant la même passion que moi à devenir un meilleur programmeur.

Faisons ce voyage ensemble !

Traduit de l’anglais par MetaQuotes Ltd.
Article original : https://www.mql5.com/en/articles/9711

Better Programmer (Partie 03): Abandonnez ces 5 choses pour devenir un programmeur MQL5 performant Better Programmer (Partie 03): Abandonnez ces 5 choses pour devenir un programmeur MQL5 performant
Ceci est l'article incontournable pour quiconque souhaite améliorer sa carrière en programmation. Cette série d'articles vise à faire de vous le meilleur programmeur possible, quelle que soit votre expérience. Les idées discutées fonctionnent aussi bien pour les débutants en programmation MQL5 que pour les professionnels.
Better Programmer (Partie 01): Vous devez arrêter de faire ces 5 choses pour devenir un programmeur MQL5 performant Better Programmer (Partie 01): Vous devez arrêter de faire ces 5 choses pour devenir un programmeur MQL5 performant
Il y a beaucoup de mauvaises habitudes que prennent les débutants et même les programmeurs avancés qui les empêchent de devenir le meilleur possible dans leur carrière de codage. Nous allons en discuter et les aborder dans cet article. Cet article est une lecture incontournable pour tous ceux qui souhaitent devenir un développeur à succès dans MQL5.
Better Programmer (Partie 04): Comment devenir un développeur plus rapide Better Programmer (Partie 04): Comment devenir un développeur plus rapide
Chaque développeur veut pouvoir écrire du code plus rapidement, et être capable de coder plus rapidement et efficacement n'est pas une sorte de capacité spéciale avec laquelle seules quelques personnes sont nées. C'est une compétence qui peut être apprise par chaque codeur, indépendamment des années d'expérience sur le clavier.
Conseils pour l'achat d'un produit sur le marché. Guide détaillé Conseils pour l'achat d'un produit sur le marché. Guide détaillé
Ce guide détaillé fournit des astuces pour mieux comprendre et rechercher un produit requis. L'article tente de découvrir différentes méthodes de recherche d'un produit approprié, de tri des produits indésirables, de détermination de l'efficacité et de l'essentialité du produit pour vous.