Diskussion zum Artikel "Besser Programmieren (Teil 01): Diese 5 Dinge müssen Sie unterlassen, um ein erfolgreicher MQL5-Programmierer zu werden" - Seite 2

 

Guter Artikel. Das Konzept, was zu tun und was zu lassen ist, wird gut erklärt.

Fehler bei den konkreten Beispielen schmälern in diesem Fall nicht den Wert des Artikels, denn seine Aufgabe ist es, den Menschen zu helfen, ihren Arbeitsstil zu optimieren. Diese Aufgabe ist glänzend gelöst, alles ist so einfach und klar wie möglich geschrieben.

Vielen Dank, Omega!

 
fxsaber #:

  • Der erste Wert der Variablen in der Schleife ist falsch.
  • Statt einem if gibt es zwei.
  • Der String-Vergleich (Zeichen) muss am Ende stehen.
  • bool-Ausdrücke sind nicht eingeklammert.
  • Die magische Variable fehlt in den Eingabefunktionen.
  • Das Positionsobjekt wurde nicht erstellt.
Der Fehler ist mir erst bei der Veröffentlichung aufgefallen, weil ich ihn nicht im Meta-Editor, sondern erst beim Schreiben kodiert habe, aber das ist kein großes Problem, denn alle verwendeten Kodierungsbeispiele hätten nur
 

Interessant...

fxsaber #:

  • Der erste Variablenwert in der Schleife ist falsch.
  • Anstelle eines if gibt es zwei ifs.
  • Der String-Vergleich (Symbol) sollte am Ende stehen.
  • bool-Ausdrücke sind nicht mit Klammern gekennzeichnet.
  • Die magische Variable fehlt in den Eingabefunktionen.
  • Das Positionsobjekt wird nicht erzeugt.

Ein guter Programmierer werden (Teil 1): fünf Gewohnheiten loswerden, um ein besserer MQL5-Programmierer zu werden

 
Aliaksandr Hryshyn #:

Interessant....


:)
 
Aliaksandr Hryshyn #:

Interessant...

Ein guter Programmierer werden (Teil 1): fünf Gewohnheiten loswerden, um ein besserer MQL5-Programmierer zu werden

Das ist Freiberuflichkeit, die Kunden verstehen den Code meistens überhaupt nicht, und schlechte Kritiken sind nicht für die Qualität des Codes. Ich habe es geschrieben, das Programm hat keinen Gewinn abgeworfen, also hier ist die Rezension.

 

Eine Pflichtlektüre für alle (und für den Autor des Artikels erst recht): 97 Dinge, die jeder Programmierer wissen sollte

GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitioners.
GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitioners.
  • github.com
Pearls of wisdom for programmers collected from leading practitioners. - GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitio...
 
Quelle:
int CountPosByType(ENUM_POSITION_TYPE type)
  {
   int counter = 0;
   for(int i=PositionsTotal(); i>=0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type)
            { 
                counter++; 
            }
   return counter;
  }

Die Variante arbeitet schneller und ist meiner Meinung nach übersichtlicher:

int PositionsByType(ENUM_POSITION_TYPE type)
  {
   int counter = 0;
   for(int i=PositionsTotal()-1; i>=0; i--)
   {
      if(!m_position.SelectByIndex(i))
         return (INVALID_HANDLE);

      if(m_position.PositionType()!=type ||
         m_position.Magic()!=MagicNumber ||
         m_position.Symbol()!=Symbol())
         continue;

      counter++; 
   }
   return counter;
  }

1. Der Fehler in der Schleifeninitialisierung ist, dass 1 von der Menge abgezogen werden muss, wenn wir das Backtracking machen.

2. Wenn man die Position nicht durch den Index aus der Bibliotheksfunktion erhalten konnte, muss man die Schleife mit einem Fehler verlassen und dann, wenn nötig, die Funktion erneut verarbeiten oder wiederholen, sonst besteht die Gefahr, einen unzuverlässigen Betrag zu erhalten, und man arbeitet immer noch mit Finanzen, und manchmal gibt es große Beträge in der Position, und so eine Kleinigkeit kann zu einem Verlust führen.

3. Zuerst sollten Sie bool-Variablen prüfen, dann ENUM-Aufzählungen und erst danach int, double, string, wenn die Prüfung fehlschlägt, dann sofort zum nächsten Element der Schleife gehen.

Wenn Sie Vergleichsoperationen über && durchführen, wird das Programm zwangsläufig jede Bedingung prüfen.

4. Der Name für die Funktion ist auch wichtig, es sieht besser aus PositionsByType, es scheint eine Kleinigkeit zu sein, aber wenn Sie diese Funktion benutzen wollen, brauchen Sie nicht in die Bibliothek und ihr Inhaltsverzeichnis zu gehen, sondern geben Sie einfach den Standardnamen Positions ein, und Sie werden mehrere Möglichkeiten haben, PositionsTotal, PositionsByType.....

5. Achten Sie auf die Breite des Codes, damit Sie keinen horizontalen Bildlauf verwenden, da dies die Lesbarkeit und die Geschwindigkeit der Entwicklung stark beeinträchtigt.


 
Das ist falsch:
"Wenn Sie Vergleichsoperationen mit && durchführen, prüft das Programm zwangsläufig jede Bedingung.".
Der Vergleich wird der Reihe nach bis zur ersten falschen Bedingung durchgeführt.
Übrigens können Sie in solchen Situationen auch die Wahrscheinlichkeit berücksichtigen, dass die Bedingung nicht erfüllt ist.

 
Aliaksandr Hryshyn #:
Das ist falsch:
"Wenn Sie Vergleichsoperationen mit && durchführen, prüft das Programm zwangsläufig jede Bedingung.".
Der Vergleich wird der Reihe nach bis zum ersten Falsch durchgeführt.
Übrigens können Sie in solchen Situationen auch die Wahrscheinlichkeit berücksichtigen, dass die Bedingung nicht erfüllt ist.

Ja, Sie haben mich richtig korrigiert, die Prüfung wird bis zum ersten False durchgeführt, die Hauptsache ist, dass kleine Datentypen an erster Stelle stehen sollten.

Wenn die Bedingungen aus Funktionen bestehen, sollte die kleinste Funktion die erste sein und bis zur größten vom Standpunkt der verbrauchten Ressourcen, aber ohne die Programmlogik zu brechen...

Ich verwende diese Technik in allen meinen Projekten, der Geschwindigkeitsgewinn ist für einen Tester im Optimierungsmodus spürbar.

[Gelöscht]  
Vitaly Muzichenko #:

Das ist Freiberuflichkeit, die Kunden verstehen den Code meistens überhaupt nicht, und schlechte Kritiken sind nicht für die Qualität des Codes. Sie haben ihn geschrieben, das Programm hat Ihnen keinen Gewinn gebracht, das ist die Kritik.

Sagen Sie dem Kunden das im Voraus, oder ist Geld wichtiger?