Wie kann ich die Ausgabe in einem Diagramm in einer einzeiligen Schriftart gestalten? - Seite 6

 
Nikolai Semko:

Bei MT4 hingegen ist das Bild völlig anders.
Während auf MT5 die Arbeit von Comment und Canvas ungefähr gleich ist, ist Comment auf MT4 1000 Mal schneller. Ich schließe daraus, dass im MT5 der Kommentar durch die interne BitMap implementiert ist, während er im MT4 anders funktioniert. Der Unterschied ist beeindruckend. Ich denke, ich werde diese Frage in das Bug-Forum verschieben.

Ausführliche Erklärung hier: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

Der Kommentar in MT4 ist im Wesentlichen eine Fälschung und führt nicht dazu, dass der Chart neu gezeichnet wird.

 
Renat Fatkhullin:

Ausführliche Erklärung hier: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

Der Kommentar in MT4 ist im Grunde eine Fälschung und führt nicht dazu, dass der Chart neu gezeichnet wird.


Und nun zu den praktischen Schlussfolgerungen

1. Es wäre schön, die Reihe von Funktionen, die die Leistung beim Testen beeinträchtigen, durch ihre #define-Entsprechungen zu ersetzen

2. 90 % der hier anwesenden Damen/Menschen sind in Definitionen wie in Orangen pinkeln.

4. Es gibt ein definiertes Monster im Forum fxsaber

5. Vielleicht sollte man ihn bitten, eine Bibliothek mit ähnlichen Definitionen zu erstellen und zu pflegen, so dass Normalsterbliche nicht darüber nachdenken müssen, in welchem Modus das Programm arbeitet?

Was halten die Community und fxsaber von einem solchen Vorschlag?

 

Was haben Definitionen damit zu tun, wenn Leute das Tool nicht verstehen und versuchen, auf Geschwindigkeit zu testen, was nicht getestet werden kann.

Einen Kommentar aufzurufen, um ihn sich anzusehen, ist normal.

Der Aufruf von 1000-10000 Mal pro Sekunde ist sowohl logisch (man kann nicht darauf schauen) als auch technologisch abnormal - es verursacht hohe Kosten, das gesamte Diagramm (nicht nur Ihre Linie) nicht anzuzeigen/neu zu zeichnen.

Sie müssen verstehen, was Sie tun. Genau darüber habe ich in meiner Antwort ausführlich geschrieben.

 
Renat Fatkhullin:

Was haben Definitionen damit zu tun, wenn Leute das Tool nicht verstehen und versuchen, auf Geschwindigkeit zu testen, was nicht getestet werden kann.

Einen Kommentar aufzurufen, um ihn sich anzusehen, ist normal.

Der Aufruf von 1000-10000 Mal pro Sekunde ist sowohl logisch (man kann es nicht sehen) als auch technologisch abnormal - es verursacht hohe Kosten, das gesamte Diagramm (nicht nur Ihre Linie) nicht anzuzeigen/neu zu zeichnen.

Sie müssen verstehen, was Sie tun. Genau darüber habe ich in meiner Antwort ausführlich geschrieben.

Und stattdessen schlagen Sie vor: "Geben Sie mir ein Stück Code, damit ich weiterdenken kann", ohne zu erklären, warum es falsch ist, es so zu machen.

Renat, ich habe hier einen funktionierenden EA. Ich bin ein Trottel und weiß nichts über diese Zeichnungen. Es funktioniert, und es ist großartig. Ich schicke es zum Testen ein und sehe die Leistungseinbußen aufgrund der beschriebenen Probleme.

Wäre es nicht sinnvoll, eine Definition vorzunehmen, die festlegt, in welchem Modus wir arbeiten? Und im Test-/Optimierungsmodus gibt er einfach nichts aus?

 
Alexey Volchanskiy:

Renat, ich habe hier einen funktionierenden EA. Ich bin ein Trottel und weiß überhaupt nichts über diese Zeichnungen. Es funktioniert, und es ist großartig. Ich teste es und stelle einen Leistungsabfall aufgrund der von mir beschriebenen Probleme fest.

Wäre es nicht sinnvoll, eine Definition vorzunehmen, die festlegt, in welchem Modus wir arbeiten? Und im Test-/Optimierungsmodus gibt er einfach nichts aus?


Man sollte nicht erwarten, dass die Leute alles so verstehen. Gott bewahre, dass 20% der Leute in diesem Forum OOP verstehen. Man kann es mit dem Wissen über ein Auto vergleichen. Alle fahren sie, aber nur sehr wenige verstehen, wie derselbe Verbrennungsmotor funktioniert, und ein Bruchteil von % kann irgendwie etwas reparieren.

Aber sie sind alle Ihre Kunden.)

 
Alexey Volchanskiy:

Renat, ich habe hier einen funktionierenden EA. Ich bin ein Trottel und weiß überhaupt nichts über diese Zeichnungen. Es funktioniert, und es ist großartig. Ich teste es und stelle einen Leistungsabfall aufgrund der von mir beschriebenen Probleme fest.

Wäre es nicht sinnvoll, eine Definition vorzunehmen, die festlegt, in welchem Modus wir arbeiten? Und im Test-/Optimierungsmodus gibt er einfach nichts aus?

Und was ist das Problem, wenn man über alles nachdenkt und alles drastisch verbessert?

Es gibt bereits eine MQL4-MQL5-Bibliothek im Modus "es funktioniert und ist großartig", deshalb müssen wir uns die Haare raufen. Die Leute nutzen es ernsthaft, um die Geschwindigkeit der beiden Plattformen zu vergleichen.

Und jetzt bieten Sie an, nicht zu denken, sondern ein weiteres handgefertigtes Produkt herzustellen, das mit dem Spruch "MT5 ist langsamer" herumgeschleppt werden soll.

 
Renat Fatkhullin:

Es gibt bereits eine MQL4-MQL5-Bibliothek im Modus "funktioniert und ist großartig", die einem die Haare zu Berge stehen lässt. Die Leute nutzen es ernsthaft, um die Geschwindigkeit der beiden Plattformen zu vergleichen.

Dies ist keine gut begründete Aussage.

 
Alexey Volchanskiy:

Ist es nicht logisch, eine Definition vorzunehmen, die bestimmt, in welchem Modus wir arbeiten? Und im Test-/Optimierungsmodus wird einfach nichts ausgegeben?

Es gibt ein universelles Tool, mit dem Sie die Codeleistung im Tester mit einer Zeile messen können. Wir können dort eine Menge Dinge sehen. Insbesondere, dass ein einzelner Lauf langsamer ist als ein Optimierungslauf.

Die Entwickler gaben ihre Antwort auf die Frage nach dem Kommentar. Bisher habe ich selbst die Optimierung um das 1,5-2fache durch eine einzige Zeile beschleunigt.

Und der SD erzählte mir von einer wichtigen Nuance für die Leistung.


Die Sorge um Mikrosekunden der Funktionsausführung ist nur in Optimierungsmodi sinnvoll. In Echtzeit macht das keinen Unterschied. Und der Kommentar spielt keine Rolle für die Leistung des Expert Advisors in Echtzeit, auch wenn er um eine Größenordnung langsamer ist.


Aber es ist eine Tatsache, dass fast niemand EAs so schreibt, dass sie im Tester möglichst schnell laufen.

 
Renat Fatkhullin:

Was haben Definitionen damit zu tun, wenn Leute das Tool nicht verstehen und versuchen, etwas zu testen, das nicht auf Geschwindigkeit getestet werden kann.

Renat Fatkhullin:

Es gibt bereits eine MQL4-MQL5-Bibliothek im Modus "es funktioniert und ist großartig", die einem die Haare zu Berge stehen lässt. Die Menschen nutzen es ernsthaft, um die Geschwindigkeit der beiden Plattformen zu vergleichen.


Und mir persönlich tut die geleistete Arbeit nicht leid. Diese scheinbar nutzlosenBenchmarks erwiesen sich als gar nicht nutzlos. Dank Ihrer ausführlichen Erklärungen sind viele nützliche Dinge ans Licht gekommen, und dadurch haben sich einige Puzzlesteine zusammengefügt. Nirgendwo sonst steht es geschrieben, also muss ich es ausknipsen :)).

Ich schäme mich zwar, es zuzugeben, aber ich wusste zum Beispiel nicht, dass die Funktion Update() von Kanvas das gesamte Fenster unabhängig von seiner Größe neu aufbaut. Aber um es zu verstehen, musste ich mir die CCanvas-Innereien ansehen. Und zumindest diese Tatsache zu kennen, wird die Logik der Arbeit verändern und mich vor unnötigen Gesten in einigen grafikbezogenen Implementierungen bewahren. Und der Kommentar hatte nichts damit zu tun, er war nur ein "um der Sache auf den Grund zu gehen". Nochmals vielen Dank!

Was unklar bleibt, ist, dass die Funktion Update(false) in MT5 nichts auf den Bildschirm zeichnet, während die MT4-Funktion nicht das gesamte Fenster, sondern nur den Canvas selbst zeichnet. Das bedeutet, dass die Funktion ResourceCreate in MT5 kein Array von Pixeln ohne ChartRedraw() zeichnet, in MT4 aber schon. Ich denke, dass es auch im MT5 nützlich wäre.

 
Nikolai Semko:

ResourceCreate in MT5 zeigt ein Array von Pixeln nicht ohne ChartRedraw() an, aber in MT4 schon.

Und sie macht es richtig. Es ist so logisch, wie ChartRedraw nach der Änderung der Objekteigenschaften nicht durchzuführen. Unter Verwendung der Terminologie von

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Fehler, Irrtümer, Fragen

Renat Fatkhullin, 2017.12.05 02:51

  • MT5 hat ein korrekteres System zum Ändern von Objekten auf dem Chart, und Sie müssen die Konsequenzen der Vermischung von Lese- und Schreibbefehlen klar verstehen
    Es wird empfohlen, Lese- und Schreibbefehle nicht zu mischen, sondern einen separaten Massenlese- und Massenschreibvorgang durchzuführen.

ChartRedraw sollte nach dem Massenschreiben aufgerufen werden, nicht nach jedem Schreiben.

Grund der Beschwerde: