Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 165
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
Ja, ich habe Geschichte zum Lesen dabei.
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Bibliotheken: Easy Canvas
Nikolai Semko, 2020.02.17 05:15
Ich möchte einen wichtigen Punkt für interessierte Programmierer klären, wenn sie den Kanvas im Tester-Modus betreiben.
Ein bekannter Programmierer in dieser Gemeinschaft kam mit dieser Frage zu mir:
- Warum wird im Testmodus mein auf Objekten erstelltes Panel viel schneller neu gezeichnet als auf der Leinwand, während im normalen Modus mein Panel mit normaler Geschwindigkeit auf der Leinwand gezeichnet wird?
Ich habe den Grund dafür verstanden und habe die Lösung für das Problem gefunden.
Das Problem ist, dass das Neuzeichnen von Objekten mit dem Neuzeichnen des gesamten Bildschirms einhergeht, während der Bildschirm im Testgerät nicht häufiger als 30 Bilder pro Sekunde neu gezeichnet wird.
Objekte sind letztlich die gleiche Leinwand (intern), aber wenn Sie die Eigenschaften des Objekts zu ändern, ist das Objekt Leinwand nicht generiert (nicht neu berechnet), sondern nur dann, wenn der Bildschirm aktualisiert wird (ChartRedraw), die in der Tester (und im normalen Modus, auch) nicht öfter als unser Auge kann Änderungen unterscheiden, dh nicht öfter als ~ 32 Frames pro Sekunde auftritt.
Angenommen, das Panel ändert sich bei jedem Tick. Dann wird auch die Standard-Leinwand bei jedem Tick neu gezeichnet, aber das Neuzeichnen ist im Testgerät immer noch nicht häufiger als ~30 ms (~30 fps).
Mit anderen Worten: Die Leinwand wird viel häufiger neu berechnet, als sie tatsächlich auf dem Bildschirm angezeigt wird, was zu einem unverhältnismäßig hohen Ressourcenverbrauch führt.
Die Lösung für dieses Problem wäre, sicherzustellen, dass die Leinwand nicht öfter als alle 15-30 Millisekunden neu berechnet und gezeichnet wird, so dass es keine unnötigen Zyklen leerer Neuberechnungen gibt.
Zum Beispiel so:
Wenn ich zum Beispiel die Datei "EURUSD.txt" (große Symbole) erstellen möchte und auf der Festplatte bereits die Datei "eurusd.txt" (kleine Symbole) vorhanden ist, wird die Datei denselben Namen wie zuvor haben.
Wenn ich außerdem EURUSD TicksLongOpt.set speichere, wird eurusd tickslongopt.set gespeichert. Ich muss sie anschließend umbenennen. Es gibt eine Menge lästiger Kleinigkeiten wie diese.
Wenn ich außerdem EURUSD TicksLongOpt.set speichere, wird eurusd tickslongopt.set gespeichert. Ich muss sie anschließend umbenennen. Ich muss sie anschließend umbenennen. Es gibt viele solcher lästigen Kleinigkeiten.
Ich denke, wenn ich sie erst lösche und dann neu erstelle, wird alles gut gehen.
Ich denke, wenn Sie erst löschen und dann erstellen, wird das kein Problem sein.
Nein, ich spreche von der Erstellung einer neuen Datei, insbesondere beim Speichern aus dem Terminal-Dialog. Wenn es nicht bei allen funktioniert, dann hängt es von etwas anderem ab. Ich habe Win7, wenn überhaupt.
Nein, ich meine das Erstellen einer neuen Datei, und zwar genau dann, wenn Sie im Terminaldialog speichern. Wenn es nicht bei allen funktioniert, dann hängt es von etwas anderem ab. Ich habe Win7, wenn überhaupt.
Ich meinte die Funktionen FileOpen und FileSave.
Ich meinte die Funktionen FileOpen und FileSave.
Ja, erst jetzt habe ich gemerkt, dass es fehl am Platz ist, das Thema handelt von Sprache...
Einfaches Sortieren einer Reihe von Strukturen
Anmeldung
Ergebnis
Es funktioniert nicht, können Sie es aktualisieren? Sets Template-Deklarationen sind in lokalen Klassen nicht erlaubt TestarrSort.mq5 81 3
Funktioniert nicht, können Sie es aktualisieren? Schreibvorlagen-Deklarationen sind in lokalen Klassen nicht erlaubt TestarrSort.mq5 81 3
Leider wurde die Sprache abgeschnitten. Dieser Code funktioniert nicht.
Sie können aber auch eine andere Variante ausprobieren.
SZZ Hier ein weiteres Beispiel für die Verwendung.