![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
"Apotheose" halte ich für einen Ausdruck von fxsaber, zu dem er selbst nicht sagen konnte, wie er funktioniert, sondern nur sagte, dass "der Code wiederholt getestet wurde und er funktioniert". Das sollte meiner Meinung nach nicht der Fall sein:
Dieser Code prüft, obein otfFilingType-Auftrag ausgeführt werden kann, und gibt ihn zurück, wenn er auf strSymbol verfügbar ist, andernfalls ist er korrekt.
Ich habe absolut keine Ahnung, wie das funktioniert. Und verlassen Sie sich nur auf die Autorität von fxsaber.
Vielleicht kann das jemand erklären?
Um das zu verstehen, zerlegen Sie diesen sperrigen Rückgabewert in seine Bestandteile.
Ihr Beispiel von "der Zweck heiligt die Mittel"
Übrigens ist dieser Code wie Spaghetti, aber wenn man bedenkt, dass er wahrscheinlich der nützlichste Autor in kodobase im Moment ist und ich selbst seine Codes so verwende, wie sie sind, sollte jemand anderes Kritik üben
Übrigens ist dieser Code wie Spaghetti, aber angesichts der Tatsache, dass er wahrscheinlich der nützlichste Autor in kodobase im Moment ist und ich selbst seine Codes so benutze, wie sie sind, lassen Sie jemand anderen Kritik üben
es geht nicht um Kritik, ich versuche herauszufinden, was sie tun kann.... Aber wie das Interview zeigt, und@fxsaber selbst zugab - nichts als Kopfschmerzen
SZZ: es ist höchstwahrscheinlich, dass die erste Variante des kleinen Monsters deutlicher aussah ;)
ZS: die Wahrscheinlichkeit ist groß, dass die Originalversion des kleinen Monsters offensichtlicher aussah ;)
Entnommen aus ZIP (enthält die allererste Version).
Danach wurden jedoch immer mehr Funktionen benötigt, und der Code wurde langsam erweitert. Anders war es bei der Funktion Füllen. Dort wurde nichts ausgearbeitet, es wurde sofort geschrieben.
Nur der Compiler weiß genau, was er tun wird. Moderne Compiler haben eine erstaunliche Euristik. Sie stellen sich auf den durchschnittlichen Codierer ein und wissen bereits besser, was er oder sie braucht. Das Beste, was ein Compiler tun kann, ist, einfachen, überschaubaren Code mit kurzen Funktionen zu schreiben. Für den Compiler ist es einfacher und effizienter, den aus vielen Funktionsknoten bestehenden Quellcodegraphen zu analysieren, um das resultierende Programm zu erstellen. Dies wird sich nur positiv auf die Produktivität auswirken, da die benötigten Funktionen an den richtigen Stellen untergebracht werden.
Sie haben völlig Recht.
Wenn wir über MQL5 sprechen, können Sie die "Optimierungs"-Methoden von vor 10-20-30 Jahren vergessen. Sie müssen einen möglichst lesbaren Code schreiben. Das ist es, und nicht das Hacker-Zeug und reine Klugscheißerei.
Warum?
Da der Compiler 5-10 Zyklen der Code-Neuordnung durchläuft, ist er erstaunlich klar und prägnant, ganz zu schweigen von der Verwendung von Dutzenden von Optimierungsmustern.
Der MQL5-Compiler ist amüsiert über menschliche Versuche, +2% Geschwindigkeit zu erreichen.
Das ist wirklich ein Kunstwerk. 8 Wurzeln wurden in 4 Aufrufen des Assembler-Befehls berechnet. Es wurden zwei Doppelnummern in einem Aufruf berechnet.Wenn es Sie interessiert, sehen Sie sich an, wie mathematische Berechnungen erfolgen ohne Verzweigung und ein Befehl (128 Bit Daten) berechnet zwei Wurzeln auf einmal
Dieser Code wird zu folgendem Assembler-SSE-Code:
Die allgemeine Schlussfolgerung: Die Mathematik hat in MQL5 dank der perfekten Optimierung gewonnen. Nicht die Arrays verlieren hier, sondern die Mathematik gewinnt.
Warum ist das so?
Im Gegenteil, mit zwei "Wenns" ist es viel einfacher als mit dem "Oder"-Operator.
Es ist einfacher, zuerst eine Bedingung zu prüfen und die Funktion zu verlassen, wenn sie wahr ist, und dann die andere Bedingung zu prüfen und ebenfalls zu verlassen, wenn sie wahr ist, als das Ergebnis einer komplexen Bedingung mit logischem "oder" (das leicht mit "und" verwechselt werden kann) zu erraten und beide Rückgabeoptionen zu prüfen.
Es ist ziemlich lustig, unten zu lesen, dass "die Rechtfertigung für solche ist Debugging", weil es bedeutet, dass solche Code ist viel verständlicher (sonst warum ist es in Debugging?).
"Apotheose" halte ich für einen Ausdruck von fxsaber, zu dem er selbst nicht sagen konnte, wie er funktioniert, sondern nur sagte, dass "der Code wiederholt getestet wurde und er funktioniert". Das sollte meiner Meinung nach nicht der Fall sein:
Dieser Code prüft, obein otfFilingType-Auftrag ausgeführt werden kann, und gibt ihn zurück, wenn er auf strSymbol verfügbar ist, ansonsten ist er korrekt.
Ich habe absolut keine Ahnung, wie das funktioniert. Und verlassen Sie sich nur auf die Autorität von fxsaber.
Vielleichtkann das jemand erklären?
Ich habe mich einmal hingesetzt und es Schritt für Schritt auseinandergenommen, anscheinend brauchte ich einen Stift und Papier)
Warum dieses Parsing nützlich war - ich habe verstanden, dass bei einer Änderung der Enum-Struktur alles kaputt geht), da ganzzahlige Beziehungen von Enum-Werten verwendet werden (die gemäß der Idee von Enumerationen selbst gekapselt sein sollten). Ich selbst versuche, dies zu vermeiden, höchstens das Verhältnis mehr - weniger. Denjenigen, die sich mit WinAPI beschäftigen, ist dies wahrscheinlich bekannt.
Um das zu verstehen, muss man nur diesen sperrigen Ausdruck "Rückkehrer" auseinandernehmen.
Ja, genau das habe ich versucht. Aber ich war nicht motiviert genug, es auseinander zu nehmen...
Völlig richtig.
Wenn wir über MQL5 sprechen, können Sie die "Optimierungs"-Methoden von vor 10-20-30 Jahren vergessen. Sie müssen einen möglichst lesbaren Code schreiben. Das ist es, und nicht das Hacker-Zeug und reine Klugscheißerei.
Ganz genau. Zu diesem Schluss bin ich schon vor langer Zeit gekommen. Aber nicht, weil ich glaube, dass der Compiler es besser machen wird. Aber da die Hauptquelle für Probleme im Code der Mensch selbst ist, sollte man den Code so schreiben, dass er so einfach und transparent wie möglich ist.
Wenn es nicht "transparent" sein kann, müssen Sie detaillierte Kommentare schreiben, warum es so und nicht anders ist.
Und der Compiler... Selbst wenn es nicht effizient genug arbeitet, ist das weniger ein Problem als ein potenzieller Fehler, der darauf zurückzuführen ist, dass Sie einige Aspekte des Programms nicht berücksichtigen.
Der Code ist sehr einfach und kurz(Beschreibung). Wenn Sie es auf FP schreiben, wäre es interessant zu vergleichen.
Ich bitte Sie. C# im FP-Stil:
FP ist natürlich ziemlich krumm (da es von einem krummen FP-Programmierer in der unvollständigen FP-Sprache C# geschrieben wurde), aber das Ziel ist zu zeigen, dass man mit modernem OOP-Jargon auch in FP arbeiten kann. Natürlich ist es begrenzt, es ist nicht F# oder Haskell, aber niemand verbietet es, im FP-Stil zu schreiben. Verwenden Sie Unveränderlichkeit, Funktionen höherer Ordnung, Abschlüsse, Zuordnungen usw. - Sie können gerne alles machen. Aber das macht den Code aus irgendeinem Grund nicht perfekt.
s.w. Die Gesamtstruktur des Codes ist absichtlich dem Original nachempfunden. Obwohl es in FP eigentlich ganz anders sein sollte, ohne komplexe Objekte und ohne jede nachahmende Karte, hat der Künstler doch gemalt, was er konnte.
Ich bitte Sie. C# im FP-Stil:
Ich verstehe, dass es eine Frage der Gewohnheit und der Syntaxkenntnisse ist, aber es fällt mir sehr schwer, den Code zu verstehen, obwohl ich der ursprüngliche Autor bin.
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Interessante Meinung über OOP
fxsaber, 2021.01.29 13:39
Eine Lappalie.
Technisch gesehen ist es wahrscheinlich ein OOP. Aber der primitivste Teil davon. Ich könnte es aber nicht ohne sie machen. Möglicherweise, dumme Gehirnumstellung und Nieten das.