Fehler, Irrtümer, Fragen - Seite 2754
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
Es geht darum, dass die Übergabe per Referenz möglich ist.
Wie auch bei Strings haben die Entwickler die Möglichkeit (falls noch nicht geschehen), alles per Referenz zu übergeben, ohne die Variable tatsächlich zu kopieren.
Und es wird eine Lösung nicht für eine bestimmteMqlTick-Struktur sein, sondern für alle Fälle
Dies bestätigt einmal mehr, dass es keinen Sinn macht,_Digits,_Point , _Period, _LastError usw.direkt zu verwenden(und selbst _Symbol kann durch NULL ersetzt werden). Tatsächlich müssen sie als konstant flüchtig deklariert werden
Und Sie schlagen im Gegenteil vor, diesen Bereich zu erweitern
Sie haben Recht, aber sie sindfast flüchtig, mit Ausnahme des Flags IsStopped - es ist 100% flüchtig, d.h. jedes Lesen von IsStopped ist 100% Speicherlesen.
Für andere bedeutetfastvollatylе, dass der Compiler den Wert einer Variablen in einem Register beim ersten Aufruf zwischenspeichern und den zwischengespeicherten Wert beim nächsten Zugriff auf diese Variable verwenden KANN, aber nur innerhalb einer Funktion oder eines Zweigs von Aufrufen, wenn sie in einer Funktion eingefügt sind.
Dies ist möglich (und notwendig), weil die Änderung vordefinierter Variablen (außer IsStopped) nicht innerhalb eines MQL-Einstiegspunkts (OnXXX-Funktion) erfolgen kann.
Was denVARIABLE VARIABLE MODIFICATOR betrifft, so wird er von Programmierern für Programmierer verwendet.
Wie wir wissen, kann man die Konstante einer Variablen durch Konvertierung ändern, so dass man dem Compiler mit dem const-Modifikator nicht trauen kann.
Wenn der Compiler sieht, dass die Variable ihren Wert nicht geändert hat und als Konstante initialisiert ist, wird er eine solche Variable auch ohne den const-Modifikator in einen sofortigen Wert (ImmediateValue) umwandeln
. In Bezug auf _LastTick diskutieren wir aber...
Es handelt sich um eine Struktur, nicht um einen einfachen atomaren Typ, und sie kann an jeder Stelle des MQL-Programms plötzlich geändert werden, auch zum Zeitpunkt des Abrufs des Wertes.
Es hat sich herausgestellt, dass man einen Synchronisierer einführen muss, um diese Struktur anzugehen.
Wir arbeiten ständig an der Leistung, vor allem wegen der hohen Release-Rate der Builds.
Wir planen eine Menge Arbeit, um den MQL-Code zu beschleunigen
Was _LastTick betrifft, so diskutieren wir, aber...
Es handelt sich um eine Struktur, nicht um einen einfachen atomaren Typ, und sie kann an jedem Punkt des MQL-Programms plötzlich geändert werden, auch zum Zeitpunkt des Abrufs des Wertes.
Es stellt sich heraus, dass wir einen Synchronisator einführen müssen, um diese Struktur zu berücksichtigen.
aber in Tester _LastTick kann nicht an jedem Punkt der MQL-Programm ändern?
wenn ja, dann geben Sie eine solche Lösung nur für Tester, bei denen die Geschwindigkeit der Berechnungen am wichtigsten ist
aber in Tester _LastTick kann nicht an jedem Punkt der MQL-Programm ändern?
wenn ja, dann geben Sie eine solche Lösung nur für den Prüfer, bei dem die Geschwindigkeit der Berechnung am wichtigsten ist
Was hindert Sie also daran, diesen Tick einmal im OnTick-Handler anzufordern und dann mit den empfangenen Daten zu arbeiten?
Die geringe Qualifikation der EA-Ersteller, mit der Market und Cloud belastet sind, ist ein Hindernis.
Was hindert also daran, den Tick einmal im OnTick-Handler anzufordern und mit den empfangenen Daten weiter zu arbeiten? Das kostet praktisch nichts. Warum sollte man ihn 100 Mal neu anfordern (wie in den obigen Tests) und damit künstlich Bremsen erzeugen? Das Problem eines krummen EA-Codes soll also dadurch gelöst werden, dass man die interne Arbeit von MT erschwert. Oder haben Sie ein paar normale Maße?
Die von "OnTick" zu behandelnden Ereignisse werden von außen in einer Warteschlange mit Prioritäten empfangen. Bei anderen Handlern ist es sinnvoll, sich zu vergewissern, dass keine solchen neuen Ereignisse aufgetreten sind, da sonst die Daten des vorherigen Ticks ungültig/veraltet sind.
Was hindert Sie also daran, diesen Tick einmal im OnTick-Handler anzufordern und dann mit den daraus resultierenden Daten zu arbeiten? Es ist praktisch wertlos. Warum sollten Sie sich die Mühe machen, ihn 100 Mal anzufordern (wie in den obigen Tests) und so künstlich eine Bremse auf der Stelle zu erzeugen.
Das ist genau das, was ich im Testprogramm mache
D.h. das Problem eines krummen EA-Codes soll dadurch gelöst werden, dass das Innenleben von MT verkompliziert wird. Oder haben Sie ein paar normale Maße?
Nun, der Code wird durch gängige Kodierungspraktiken bestimmt, siehe QB und die Verwendung von Safelines in diesen Beispielen
Ich benutze SB nicht, ich habe monatelang mit einem Profiler gemessen und nach Lösungen gesucht, es gab einen Thread über Geschwindigkeitstests, in dem teilweise alternative Lösungen vorgestellt wurden
die Normalität der Messung? es ist ein rutschiger Hang, der ernsthaft angegangen werden muss, ich bin zufrieden mit meinem EA für die Optimierung, gab es einen Pass bei 18 Monaten 6 sec, jetzt 2,5 sec , imho habe ich einen guten Job auf mich )))) getan
nicht 0 wie bisher, d.h. effektiv REASON_PROGRAM
Wenn das Terminal neu gestartet wird, schreibt es kontinuierlich und ohne Unterbrechung in das Aufzeichnungsprotokoll
Die Zeit des Verlaufsbalkens im Protokoll nimmt ständig zu. GBPUSD Daily Chart ist geöffnet und zappelt - Null, erster und zweiter Balken werden gelöscht/erzeugt. Und so geht es immer weiter und weiter.
Ich warte hier. Wird es alle SSD mit diesen Protokollen füllen oder wird es endlich aufhören...
Das Logbuch von gestern ist im Trailer.