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
Ein Teil des Problems ist die Art und Weise, wie Sie den Code geschrieben haben, mit langen if-Bedingungen voller &&, || und Funktionsaufrufe nach Funktionsaufrufen, was die Fehlersuche erschwert. Sie können sich glücklich schätzen, wenn Sie jemanden finden, der die Zeit hat, dieses Chaos zu entwirren. Sie sollten sich die Programmierbeispiele in der Dokumentation ansehen, um zu sehen, wie der Code in viel kürzeren Zeilen formatiert und kommentiert werden sollte.
" Macht es schwierig zu debuggen" :( Ich habe noch nie davon gehört, ist das wirklich ....
Der Compiler hat auch Schwierigkeiten, meinen Code zu debuggen :( ?
Wenn das der Grund ist, bedeutet das, dass ich meine ganze Kodierungsidee für diesen Teil überdenken muss :? Dann wird es eine ganz andere Sache ...... :( :(
Ja, es ist schwer zu debuggen. Sehen Sie sich zum Beispiel diesen Code für den Trailing-Stop an. Es ist leicht zu sehen, was jede Zeile tut daher leicht, Fehler zu erkennen.
Ich habe diesen Code nur als Beispiel für einen leicht zu lesenden Code gepostet, er sollte kein Beispiel für eine abgeschlossene eigenständige Funktion sein.
Es handelt sich um den Abschnitt für Kaufaufträge des Trailing-Stop-Codes aus dem MetaQuotes MACD-Beispiel-EA, der in MT4 enthalten ist.
1) Stimmt nicht, Sie können hoch- oder runterzählen, die Schleife ist effizienter, OrdersTotal() wird einmal aufgerufen und einer lokalen Variable zugewiesen.
Vielen Dank SDC . Danke auch für die Tipps WHRoeder . Es ist nützlich .
Ich habe versucht, OrderClosePrice() mit dem MarketInfo im vorherigen Code zu tauschen und den Code zu bearbeiten (die &&-Bedingung zuentfernen und sie als if-Anweisung nach der in der zweiten for-Schleife zu setzen), aber das Ergebnis ist immer noch manchmal funktionierend, manchmal nicht funktionierend.
Die for-Schleife für die Zählung der Gesamtbestellungen im Pool verwendet eine Countdown-Schleife, aber mit x-- . Ich verstehe nicht, warum du --x vorschlägst.
Ich habe "Kurzschlussoperatoren" gegoogelt, aber ich verstehe nicht wirklich, was das bei mql4 bedeutet, könntest du mir das ein bisschen erklären ^_^? Warum ist es schlecht, 'if' zu verketten?
Übrigens, der obige Code, den SDC vorgeschlagen hat, ist nicht der Code, den ich verwende >.< .
Es ist nicht schlecht, ifs zu verketten. Die Entwickler der MQL4 Sprache schrieb den Code, den ich oben gepostet. Es ist ein Code, den ich als Beispiel aus ihrem macd-Beispiel EA ausgeschnitten habe.
WHR bezog sich auf eine kürzlich vorgenommene Änderung der Art und Weise, wie && || Bedingungen ausgewertet werden, wodurch sie jetzt genauso effizient sind wie verkettete if-Bedingungen. Zuvor waren sie weniger effizient. Sie können beide Methoden verwenden. Verkettete if-Bedingungen sind nützlich, wenn es Abweichungen im Code gibt, so dass Sie 'else' verwenden können.
Lange Zeilen mit if( && || )-Bedingungen können Klammern verwirren, was die Fehlersuche erschwert, weshalb ich das nicht gerne mache. Außerdem gibt es einen anerkannten Standard für die Kodierung, der besagt, dass sie nicht länger als 80 Zeichen sein sollte. Viele Programmierer halten sich jedoch nicht an diesen Standard, und die MQL4-Entwickler erstellen immer wieder Aufzählungsbezeichner mit langen Namen, die in ihren Funktionsaufrufen für Funktionen mit ebenso langen Namen verwendet werden, was bei der Codeformatierung nicht gerade hilfreich ist.