English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
Besser Programmieren (Teil 02): Hören Sie auf, diese 5 Dinge zu tun, um ein erfolgreicher MQL5-Programmierer zu werden

Besser Programmieren (Teil 02): Hören Sie auf, diese 5 Dinge zu tun, um ein erfolgreicher MQL5-Programmierer zu werden

MetaTrader 5Handelssysteme | 9 August 2021, 08:08
734 1
Omega J Msigwa
Omega J Msigwa

Einführung


Ich verwende in dieser Artikelserie häufig das Wort noob (Neuling), um jemanden mit weniger Erfahrung in der MQL5-Programmierung zu beschreiben (nehmen Sie mir das nicht übel). Das macht es einfach, sich darauf zu beziehen. Das bedeutet aber nicht, dass dieser Artikel nur für Anfänger geeignet ist. Ganz und gar nicht! Er ist für alle gedacht, unabhängig von der Programmiererfahrung, die Sie haben, denn was Sie zu einem Anfänger macht oder nicht, sind Ihre Programmiergewohnheiten und Ihr Verhalten... nicht die Jahre des Programmierens.

noobs_vs_professionelle Programmierer 


Der erste Artikel ist hier für diejenigen, die ihn nicht gelesen haben, also lasst mich diese Mission fortsetzen, Noobs zu Profis zu machen.

01: Hören Sie auf zu denken, Sie seien besser als andere


Sie programmieren jetzt schon eine Weile und haben es geschafft, mehrere großartige EAs und Indikatoren für sich selbst und Ihre Kunden auf der Freelance, Codebase oder so zu erstellen, also sind Sie jetzt gut !! Richtig. Es ist gut, wenn Sie Ihre Fortschritte bemerken und diese nutzen, um Ihr Selbstvertrauen zu stärken, um große Herausforderungen anzugehen, um sich weiter zu verbessern und dies nicht in einer arroganten Art und Weise zu nutzen. Beachten Sie Folgendes:

"Ein arroganter Mensch hält sich für perfekt. Dies ist das Hauptproblem der Unwissenheit. Es behindert die Hauptaufgabe einer Person im Leben — ein besserer Mensch zu werden."

— Leo Tolstoy

Es ist so einfach, sich superschlau zu fühlen und den Code eines anderen zu kritisieren, ohne ihn vollständig zu verstehen, oder auf dessen Fragen im Forum in beleidigender Weise zu antworten, um zu zeigen, dass man ein knallharter Programmierer ist und die Person, die die Frage im Forum gestellt hat, keine Ahnung von Programmierung hat. Ich habe oft erlebt, dass Leute, die eine Frage im Forum stellen, ihren Code posten und beschreiben, was sie schon versucht haben, das aber nicht funktioniert hat. Dann taucht plötzlich ein Anfänger mit einer Erklärung auf, dass diese Person furchtbar falsch liegt, ohne eine Lösung anzubieten oder eine Lösung (Code in diesem Fall) anzubieten, die weniger genau ist als der Code, den der Themenstarter in erster Linie bereitgestellt hat. Um Himmels willen!


Des Neulings Antwort


Anstatt direkt zu beschreiben, dass der Themenstarter furchtbar falsch liegt, und dann Code zu liefern, der nicht einmal das richtige Format hat, warum nicht mit Erklärungen beginnen, warum es ein Problem gibt, und dann detailliert und klar erklären, was getan werden muss?

Es macht keinen Spaß, im Forum Themen zu eröffnen. Ich bin sicher, dass jeder, der ein Thema im Forum eröffnet, bereits weiß, dass er in irgendeiner Weise falsch liegt und deshalb nicht die gewünschten Ergebnisse erzielt. Die Chancen sind hoch, dass der Themenstarter ein Neuling ist und sich schon seit Stunden, wenn nicht sogar Tagen, mit einem Problem herumschlägt (Ich weiß, wie es sich anfühlt).

Selbst wenn man sofort loslegt und nicht erklärten oder unklaren Code herunterzieht, wird das Problem auf Dauer nicht gelöst. Das ist so, als würde man jemandem, der operiert werden muss, ein Schmerzmittel geben. Auf diese Weise bringt man Neulingen die schlimmste Angewohnheit bei, die ich im ersten Artikel dieser Serie beschrieben habe — die Gewohnheit Copy and Paste — indem man sie dazu bringst, zu denken: "So funktioniert das hier, ich habe ein Problem, ich poste meinen Code im Forum und ich bekomme den Code, um den schlechten zu ersetzen ... das ist cool!"

Achten Sie immer darauf, dass Sie die Lösung klar, detailliert und anfängerfreundlich erklären, denn das sind die meisten von ihnen. Denken Sie auch daran, dass es viele Anfänger gibt, die in der Zukunft über das gleiche Problem stolpern werden, so dass sie wahrscheinlich eine Lösung aus diesem Thema brauchen werden. 

Abgesehen von diesem Beispiel führt das Denken, man sei besser als andere, zu falschen Antworten im Forum und falschen Bewertungen der Codebasis. Wenn man denkt, man sei besser als der Autor dieses bestimmten Systems, nur weil man sieht, dass der Code nicht so kompliziert ist, wie man denkt, dass er sein sollte, oder wie man ihn mag und mit ihm vertraut ist, neigen wir dazu, uns zu weigern, vollständig zu verstehen, wie und warum der Code überhaupt geschrieben wurde, was zu Unwissenheit führt.

02: Vermeiden Sie eine fixe Denkweise 


Hören Sie auf zu denken, dass es keine Möglichkeit gibt, in einem bestimmten Bereich gut zu werden.

"Wahnsinn ist, immer wieder das Gleiche zu tun und andere Ergebnisse zu erwarten."
— Albert Einstein


Lassen Sie sich nicht darauf festnageln, die gleiche Art von Expert Advisors, Indikatoren, Skripten oder was auch immer zu erstellen. Das zerstört Ihre Kreativität und hält Sie an der gleichen Stelle fest. Zu denken, man sei nicht dazu geboren, in einem bestimmten Programmierbereich gut zu sein, nur weil er zu komplex oder zu schwierig ist, ist eine Selbstbeschränkung. Machen Sie sich bewusst, dass Ihr Gehirn flexibel ist. Es ist darauf ausgelegt, sich an neue Reize anzupassen und sich zu verändern. Je mehr Sie sich herausfordern, desto besser werden Sie in diesem bestimmten Bereich werden. Sie können gut werden in:

und alles, was man sich vorstellen kann. Aber man muss genug Arbeit hineinstecken, damit es klappt.

Ja, natürlich gibt es bis jetzt keinen heiligen Gral EA (ich selbst habe ihn noch nicht gesehen) oder Indikator, aber das sollte Sie nicht davon abhalten, Ihre Systeme so gut wie möglich zu verbessern, indem Sie Ihre Ansätze ändern.

In meinen Anfängen der MQL5-Programmierung war ich so erschrocken, als ich etwas wie einen einfachen gleitenden Durchschnitt aus der CodeBase herunterlud und feststellte, dass der Code über 1000 Zeilen oder mehr betrug, denn das war das erste, was ich im Code suchte. Ich dachte, das sei zu komplex. Ich glaube, das ist das gleiche Problem, das Neulinge haben.

Ich bin jetzt ein bisschen erfahren. Ich kann nur sagen, dass es jetzt vielleicht schwierig ist, aber das ist in Ordnung. Alles im Leben ist am Anfang so, aber es wird einfach werden, das wird sich erst mit der Zeit und Mühe zeigen.

03: Hören Sie auf, Code zu schreiben, der irgendwann später verwendet werden wird


Sie haben also Ihre EA(s) oder Indikatoren für Ihr Projekt erstellt. Sie haben jetzt zu viele Codezeilen richtig. Ohne viel Aufmerksamkeit und sorgfältiges Nachlesen Ihres Codes besteht eine große Chance, dass es unerwünschten und nicht verwendeten Code gibt.


"Diejenigen, die Wissen haben, machen keine Prognosen. Diejenigen, die Prognosen machen, wissen nichts."
— Lao Tzu

Weniger Code bedeutet immer: 

  • Weniger Bugs
  • Weniger Zeitaufwand fürs Lesen 
  • Einfacher zu kompilieren 
  • Schneller zu überprüfen 
  • Schneller fertig
  • Leichter zu wartbar 
  • Leichter zu debuggen
Verbringen Sie nicht viel Zeit damit, Code zu schreiben, der im Moment nicht benötigt wird.

Ich hoffe, dass Sie wenigstens einmal in der MQL5-Programmierung so etwas gesehen haben, und zwar in einem anderen Code

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);
 }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

Das Beispielbild ist zu klein — ich habe über 200 Codezeilen gesehen, die kommentiert (versteckt) wurden und im Programm nicht notwendig waren.

Der MetaEditor erkennt unnötige Variablen auf Funktionsebene, indem er Sie vor unbenutzten Variablen warnt, sodass Sie wählen können, ob Sie die Variablen und ihre Warnung beibehalten möchten oder ob Sie sie loswerden wollen.

Aber für den Rest des Codes müssen wir das selbst überprüfen, um sicherzugehen, dass wir diesen unerwünschten Code nicht haben.

Wenn Sie ihn nicht nutzen — brauchen Sie ihn nicht — dann löschen Sie ihn.

Ungenutzter Code stiftet Verwirrung, und ganz zu schweigen davon, dass er die Scrollzeit zum notwendigen Code erhöht, wenn er sich mitten im Programmcode befindet.

04: Sie müssen nicht immer Recht haben.

"Ein Mann, der einen Fehler begangen hat und ihn nicht korrigiert, macht einen weiteren Fehler."
— Konfuzius

Der Hauptgrund, warum Neulinge sofort ins Forum rennen, um ihren Code runterzuziehen und weniger unklare Beschreibungen zu liefern, was und warum sie so kodiert haben und was sie wollten, ist, weil sie zu viel Angst haben, sich weiteren Problemen auszusetzen. Das ist nicht klug, meine lieben Neulinge!

Die Programmierkarriere ist voller Probleme und nie endender Herausforderungen, und es gibt keinen besseren Weg, darin großartig zu werden, als so viele Probleme zu lösen, wie man sich ihnen aussetzen kann. Ich meine nicht, dass Sie Ihre Probleme nicht im Forum posten sollst (verstehen Sie mich nicht falsch). Aber stellen Sie sicher, dass Sie ein wenig versucht haben, es selbst zu lösen, deshalb ist es eine gute Praxis, bevor Sie ein Thema beginnen, Dinge zu beschreiben, die Sie versucht haben. Der Grund dafür ist, dass Sie sich darauf konzentrierst und durch das Ausprobieren verschiedener Methoden nicht nur das Rätsel lösen kannst, sondern auch Dinge entdeckst, die du beim ersten Mal noch nicht wusstest und dadurch mehr lernst.

Sobald der Fehler behoben ist, sollten Sie sich vergewissern, dass Sie ihn verstanden haben und wie Sie ihn beim nächsten Mal vermeiden können.


05: Gib die Vorstellung vom Erfolg über Nacht auf

"Wenn man genau hinsieht, haben die meisten Erfolge von heute auf morgen eine lange Zeit gebraucht."
— Steve Jobs

Ok, ich verstehe, dass Sie schon eine Weile programmieren, aber Sie haben das Gefühl, dass Sie keine Fortschritte machen, dass Sie nicht vorankommen, dass Sie nicht weiterkommen. Richtig?

Dieses Gefühl kommt bei Programmieranfängern häufig vor, denn die meisten von ihnen haben erwartet, dass die Ergebnisse sofort eintreten, aber so funktioniert die Welt nicht.

Lehnen Sie sich zurück, entspannen Sie sich, und genießen Sie den Prozess. Sie machen tatsächlich Fortschritte; Ihre Zweifel sind nur ein Teil der Reise, aber sie sollten Sie nicht aufhalten. Ich empfehle Ihnen, an Ihren Lieblingsprojekten zu arbeiten, damit Sie viel Spaß haben und trotzdem etwas lernen können, aber bleiben Sie nicht stecken. Stellen Sie sicher, dass Sie offen für neue Ideen und Möglichkeiten bleiben, wie ich im zweiten Punkt erläutert habe.

Wenn Sie sich anstrengen, wird sich der Fortschritt automatisch in einem Endprodukt niederschlagen.

  • Lesen Sie so viele Quellcodes, wie Sie sehen können, aus der Codebase.
  • Lesen Sie so viele Artikel wie möglich im Bereich Artikel.
  • Verbringe mehr Stunden im Forum, um anderen zu helfen.
  • Experimentiere mit vielen Dingen, um das zu finden, was für Sie am besten funktioniert.

Denken Sie daran:

Erfolg kommt nicht von dem, was man gelegentlich tut. Er kommt von dem, was man konsequent macht.

 

Schlussfolgerung

Um ehrlich zu sein, bin ich nicht so großartig, nicht perfekt in der MQL5-Programmierung oder in meiner Karriere als Webentwickler. Ich bin immer noch ein Student in dieser Programmiersache und es gibt kein Ende des Lernens, weil man nie aufhört zu lehren. Ich strebe immer danach, mich zu verbessern und jeden Tag besser zu werden. Der Grund, warum ich den Mut habe, dies mit Ihnen zu teilen (zu lehren, obwohl ich noch ein Student bin), ist, Menschen mit der gleichen Leidenschaft wie mir zu helfen, ein besserer Programmierer zu werden.

Lassen Sie uns diese Reise gemeinsam antreten!

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/9711

Letzte Kommentare | Zur Diskussion im Händlerforum (1)
Johann Kern
Johann Kern | 10 Aug. 2021 in 12:48
OH je, echt jetzt!!
Muster mit Beispielel (Taiul I): Multiple-Tops Muster mit Beispielel (Taiul I): Multiple-Tops
Dies ist der erste Artikel einer Serie, die sich mit Umkehrmustern im Rahmen des algorithmischen Handels beschäftigt. Wir werden mit der interessantesten Musterfamilie beginnen, die aus den Mustern Doppel-Top (Hochs) und Doppel-Bottom (Tiefs) hervorgegangen ist.
Grafik in der Bibliothek DoEasy (Teil 78): Animationsprinzipien in der Bibliothek. Schneiden von Bildern Grafik in der Bibliothek DoEasy (Teil 78): Animationsprinzipien in der Bibliothek. Schneiden von Bildern
In diesem Artikel werde ich die Animationsprinzipien definieren, die in einigen Teilen der Bibliothek verwendet werden sollen. Außerdem werde ich eine Klasse entwickeln, mit der ein Teil des Bildes kopiert und an einer bestimmten Stelle des Formularobjekts eingefügt werden kann, wobei der Teil des Formularhintergrunds, über den das Bild gelegt werden soll, erhalten bleibt und wiederhergestellt wird.
Besser Programmieren (Teil 03): Geben Sie diese 5 Dinge auf, um ein erfolgreicher MQL5-Programmierer zu werden Besser Programmieren (Teil 03): Geben Sie diese 5 Dinge auf, um ein erfolgreicher MQL5-Programmierer zu werden
Dieser Artikel ist ein Muss für alle, die ihre Programmierkarriere verbessern wollen. Diese Artikelserie zielt darauf ab, Sie zum besten Programmierer zu machen, der Sie sein können, unabhängig davon, wie erfahren Sie sind. Die besprochenen Ideen eignen sich sowohl für MQL5-Programmierneulinge als auch für Profis.
Besser Programmieren (Teil 01): Diese 5 Dinge müssen Sie unterlassen, um ein erfolgreicher MQL5-Programmierer zu werden Besser Programmieren (Teil 01): Diese 5 Dinge müssen Sie unterlassen, um ein erfolgreicher MQL5-Programmierer zu werden
Es gibt eine Menge schlechter Angewohnheiten, die Neulinge und sogar fortgeschrittene Programmierer tun, die sie davon abhalten, das Beste aus ihrer Programmierkarriere zu machen. Wir werden sie in diesem Artikel diskutieren und ansprechen. Dieser Artikel ist ein Muss für jeden, der ein erfolgreicher Entwickler in MQL5 werden will. Dieser Artikel ist ein Muss für jeden, der ein erfolgreicher Entwickler in MQL5 werden will.