Die Zukunft von MQL5 ist MQL5+ oder sogar MQL6 - Seite 10

 
Ich würde gerne goto sehen, Sie könnten den Code erheblich vereinfachen, ganz zu schweigen von der Lesbarkeit. schließlich ist eine Schleife mit einer Bedingung im Wesentlichen auch ein vorzeitiges Verlassen der Schleife.
 
dimka8:
Ich würde gerne goto sehen, Sie könnten den Code erheblich vereinfachen, ganz zu schweigen von der Lesbarkeit. in der Tat, eine Schleife mit einer Bedingung ist auch ein vorzeitiges Verlassen der Schleife.
Nein, das will ich nicht :)
 
dimka8:
Ich würde gerne sehen, goto, können Sie den Code erheblich vereinfachen, nicht auf die Lesbarkeit zu erwähnen. in der Tat, eine Schleife mit einer Bedingung ist auch ein vorzeitiges Verlassen der Schleife.

Woher kommst du...

 

Ein oder zwei Worte:

Obligatorisch plattformübergreifend ....

 
Vasiliy Sokolov:

Woher kommst du...

von BASIC
 
Alexander Bereznyak:
von BASIC.

noch einfachere Hiasm.

Was ist mit den Klassikern?

for(...) {
for (...) {
while (...) {
if (...) goto stop;
...
}
}
}
printf("error in program\n");
 

Es wäre gut, das Konzept eines Projekts einzuführen. Mit der Einführung von OOP begannen alle Programme aus mehreren Dateien zu bestehen. Es ist lästig, vor dem Kompilieren immer wieder auf die Registerkarte mit der Hauptdatei zu wechseln, wenn man ein Plugin bearbeitet. Oder eine Krücke: Führen Sie eine programmierbare Schaltfläche Kompilieren ein, an die Sie die Masterdatei des Projekts, mit dem Sie arbeiten, binden können.

EMPTY_VALUE kann auf alle Typen erweitert werden, die dies zulassen (int, double, string usw.). Es ist eine kleine Sache, aber man kann sie an vielen Stellen verwenden und muss sich nicht selbst etwas ausdenken.

Erstellen Sie im Prüfgerät ein Fadenkreuz wie in MT.

Sicherlich können Sie die Variante mit der Überlagerung mehrerer Indikatoren in einem Indikatorfenster unter dem Kurschart erfinden.


Der Komfort besteht aus kleinen Details. Die Entwickler wollen diese Idee nicht wirklich akzeptieren und sind ständig dabei, etwas zu globalisieren. Vielleicht sollten wir manchmal innehalten und Zeit für kleine Verbesserungen aufwenden - Benutzerkomfort? ))))))

Beispiele: Um etwas in einem Diagramm dreimal zu messen, müssen Sie dreimal auf die Fadenkreuzschaltfläche klicken (oder eine Tastenkombination drücken). Indikatorfenster in ME unter dem Diagramm können nicht vertauscht werden: alle Indikatoren müssen entfernt werden, dann müssen sie in der richtigen Reihenfolge gesetzt werden. Um mehrere Indikatoren zu setzen, ist es wiederum notwendig, mehrmals in das Menü-Untermenü-Indikator auswählen zu gehen. Und aus irgendeinem Grund gibt es ein Tool Liste der Indikatoren, das dies nicht vereinfacht und nichts Neues.... Ich denke, jeder wird solche Beispiele in MQL, in ME, in MT, im Tester geben, ohne zu denken.... Die Hölle! Eine Menge Aufhebens! Trotz der Klarheit und Einfachheit des Pakets ist es sehr unangenehm und unterentwickelt.

https://www.mql5.com/ru/docs/basis/types/integer/enumeration ist der Hilfeartikel zu Überweisungen. Es ist klar, was sie sind und wie sie aussehen... Aber wie kann man es nutzen und was ist der Vorteil? Geben Sie mir ein einfaches Beispiel, wenn Sie zu faul sind, es in Worte zu fassen.

Ich denke, wenn man etwas wirklich verbessern will, sollte man Kontakt zu regelmäßigen Gruppen von Nutzern aufnehmen, die das Paket aktiv in verschiedenen Richtungen nutzen (Programmierung, manueller Handel, Tests usw.), und von ihnen vernünftige Vorschläge zur Verbesserung dessen, was man hat, sammeln, anstatt in einer Masse zu fragen, wo jeder alles haben will. Andernfalls wird alles in Buchstaben bleiben.

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Auf dem Debugger:

Zum Beispiel gibt es einen Ausdruck der Form

(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle));

in der aktuellen Debugging-Implementierung ist das Ergebnis der Berechnung des Ausdrucks im Debugger verfügbar, wenn Sie

CandleNumber=(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle));

und mit Umschalt+F9 die Variable CandleNumber zur Beobachtungsliste hinzufügen

Wenn ich ein Ergebnis aus der Berechnung eines Teils des Ausdrucks erhalten möchte, z. B. MathFloor(i/ticks_in_candle), füge ich diesen Ausdruck zur Beobachtungsliste hinzu

Ich erhalte die Meldung Expression could not be evaluated.

Vielleicht mache ich etwas falsch, teilen Sie Ihre Erfahrung, aber der Punkt ist, dass in der Fehlersuche kann ich nicht sehen, nicht nur deklariert Variablen Werte, sondern auch Ergebnisse der Berechnung von beliebigen Ausdrücken (natürlich, ich spreche über die Ausdrücke, wo alle Variablen im aktuellen Moment der Beobachtung bereits initialisiert sind).

Außerdem möchte ich beim Debuggen Informationen über Arrays sehen. Wir haben zum Beispiel das Array UpTick[] und nur ein Arrayelement ist im Moment zur Überwachung verfügbar.

Warum nicht die Möglichkeit implementieren, ein Array zur Überwachung hinzuzufügen, wobei ein separates modales Fenster geöffnet wird, in dem alle Elemente mit ihren Indizes verfügbar sind?

Index-Typ-Wert

0 int 1

1 int 2 usw.

Wenn das Array groß ist und viel Speicherplatz benötigt, sollten Sie das Sampling begrenzen.

Und in der Regel als Ergebnis - zu realisieren breitere Funktionalität des Debuggers in Bezug auf die Möglichkeit, beliebige Ausdrücke, Variablen, Arrays zu überwachen.

 
agvozdezkiy:
Erweitern SieEMPTY_VALUE auf alle Typen, die dies zulassen (int, double, string, etc.). Es ist eine kleine Sache, aber sie kann an vielen Stellen verwendet werden und man muss sie nicht selbst erfinden.

Jeder hat es bereits erfunden. NULL-Konstante verwenden.

Erstellen Sie im Prüfgerät ein Fadenkreuz, wie in MT.

Beispiele: Um etwas im Diagramm dreimal zu messen, müssen Sie dreimal auf die Fadenkreuzschaltfläche klicken (oder eine Tastenkombination drücken).

Ich verrate Ihnen ein Geheimnis - es ist bereits umgesetzt. Sie müssen auf das Mausrad klicken, und es wird zu einem Fadenkreuz.

Sie können wahrscheinlich eine Möglichkeit finden, mehrere Indikatoren in einem Indikatorfenster unter dem Preisdiagramm zu überlagern.

Das ist schon seit langem möglich. Sie ziehen den Indikator aus dem Navigator in das Fenster mit dem bereits angehängten Indikator.

Indikatorfenster in ME unter dem Diagramm können nicht vertauscht werden: alle Indikatoren müssen entfernt werden, dann setzen Sie sie in der richtigen Reihenfolge.

Meiner Meinung nach ist das nicht sehr nützlich.

Sie müssen mehrmals auf Menü - Menü - Indikator wählen gehen, um mehrere Indikatoren zu setzen. Darüber hinaus gibt es aus irgendeinem Grund ein Tool Liste der Indikatoren, das nicht vereinfacht und in diesem Fall nichts Neues bietet ....

Es gibt einen Navigator, Favoriten, Vorlagen und Profile. Alles kann eingerichtet werden. Lesen Sie die Hilfe des Terminals, Sie werden viele neue Dinge entdecken!

https://www.mql5.com/ru/docs/basis/types/integer/enumeration - Hilfeartikel über Überweisungen. Es ist klar, was sie sind und wie sie aussehen... Aber wie kann man sie nutzen und was ist der Vorteil? Nennen Sie ein einfaches Beispiel, wenn Sie zu faul sind, es in Worte zu fassen.

Aufzählungen werden verwendet, um den Code lesbarer zu machen und um Konstanten zu entfernen und sie durch Entitäten zu ersetzen, die den Menschen vertraut sind.

Zum Beispiel können die Werte der Aufzählung ENUM_DAY_OF_WEEK zum Vergleich mit dem Wert day_of_week der Struktur MqlDateTime verwendet werden. Das heißt, Sie können es wie folgt schreiben

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == 0 )
           {
            // Что-то делаем в воскресенье
           }

Oder Sie können es anders schreiben:

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == SUNDAY )
           {
            // Что-то делаем в воскресенье
           }

SUNDAY ist eine benannte Konstante vom Typ int mit dem Wert 0.

Wie wäre es Ihrer Meinung nach für eine Person, die den Code liest, klarer?
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Kozitsyn:

Listen werden verwendet, um den Code lesbarer zu machen

Es gibt eine weitere unendlich nützliche Anwendung. Zum Beispiel:

enum ENUM_OPEN_DIRECTION {
     OPEN_BUY,       // только Buy
     OPEN_SELL,      // только Sell
     OPEN_BOTH,      // Buy + Sell
     OPEN_NONE       // не торговать
};
input ENUM_OPEN_DIRECTION  Trade_Direction = OPEN_BOTH;    // Направление торговли:

Und der Nutzer erhält eine Dropdown-Liste mit einer Auswahl von 4 Punkten, die Sie in den Kommentaren angegeben haben - "Nur kaufen", "Nur verkaufen" usw. Sehr nützlich für die Auflistung einer Reihe von Indikatoren, Zeitrahmen, einer Reihe von Bedingungen usw. im Fenster mit den Benutzereinstellungen