Es tut das Gleiche - es gibt den Funktionswert zurück. Sie führt aber auch Kontrollen im Vorfeld durch. Innerhalb der Funktion selbst gibt es auch Überprüfungen für den übergebenen Wert des Symbolnamens, und von ihm - entweder "wenn ein einfacher String-Parameter anstelle von Symbol(), _Symbol oder NULL, dann prüft für das vollständige Programm und mehr Eigenschaft Anfrage", oder verwendet Werte des aktuellen Symbols aus dem Cache ohne zusätzliche Prüfungen. Warum machen Sie sie noch einmal und behaupten immer noch, dass sie den Datenabruf beschleunigen? Ich verstehe die Logik einer solchen Argumentation nicht.
Übrigens tue ich das immer in meinen Funktionen, aber ich glaube nicht, dass es den Datenabruf irgendwie beschleunigt, sondern ihn eher verlangsamt, weil der Wert des übergebenen Symbolnamens in meiner Funktion überprüft wird.
Dann haben Sie die Erklärung nicht verstanden. Die Geschwindigkeit der beiden Anrufe ist unterschiedlich.
Ich scheine alles verstanden zu haben. Natürlich ist es anders. Wie haben Sie es beschleunigt? In einem Fall übergeben Sie einen Wert, der nicht das aktuelle Symbol ist, an die Funktion - wenn er not_Symbol ist.
In diesem Fall, in dem Sie den oben genannten Wert an die Funktion übergeben, führt die Funktion keine Prüfungen durch und nimmt den Wert des aktuellen Symbols aus dem Cache.
In anderen Fällen werden die Daten des angegebenen Symbols mit einer Prüfung auf "volles Programm" und seine Präsenz in der Marktübersicht abgefragt. Ihre "schnelle" Funktion wird diese Prüfungen nicht los, wenn sie Daten von einem nicht-nativen Symbol anfordert. Wo liegt also die Beschleunigung?
Nur zwei Optionen in Ihrer Funktion, wenn diese aufgerufen wird if(SymbolInfoTickFast(Symbol(), tick_array)) {}
Daten des aktuellen Symbols abrufen - Aufruf von SymbolInfoTick mit Parameter _Symbol (quick)
andere Symboldaten abrufen - SymbolInfoTick mit String-Parameter aufrufen (langsam)
Eine andere Sache, wenn Sie (in Ihrer Gewohnheit, alles zu definieren, was sich bewegt) eine String-Variable für das aktuelle Symbol erstellen, dann ja - Sie müssen hier Überprüfungen durchführen und Ihre Makro-Ersetzung durch eine vordefinierte Variable ersetzen, oder Symbol() aufrufen
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Schneller.
Es tut das Gleiche - es gibt den Funktionswert zurück. Sie führt aber auch Kontrollen im Vorfeld durch.
Innerhalb der Funktion selbst gibt es auch Überprüfungen für den übergebenen Wert des Symbolnamens, und von ihm - entweder "wenn ein einfacher String-Parameter anstelle von Symbol(), _Symbol oder NULL, dann prüft für das vollständige Programm und mehr Eigenschaft Anfrage", oder verwendet Werte des aktuellen Symbols aus dem Cache ohne zusätzliche Prüfungen.
Warum machen Sie sie noch einmal und behaupten immer noch, dass sie den Datenabruf beschleunigen? Ich verstehe die Logik einer solchen Argumentation nicht.
Übrigens tue ich das immer in meinen Funktionen, aber ich glaube nicht, dass es den Datenabruf irgendwie beschleunigt, sondern ihn eher verlangsamt, weil der Wert des übergebenen Symbolnamens in meiner Funktion überprüft wird.
Warum machen Sie sie noch einmal, obwohl Sie behaupten, dass die Daten dadurch schneller werden?
Sie haben die Erklärung selbst zitiert.
Symbol(), _Symbol-Einträge sind äquivalent zu NULL (wobei NULL anstelle des Symbolnamens zulässig ist)
Ist das bei MT4 auch so? Und was ist mit MT5 Tester?
Übrigens, ich mache das immer in meinen Funktionen
Zeigen Sie es mir bitte.
Sie haben die Erklärung selbst zitiert.
Genau - das wird alles innerhalb der regulären Funktion erledigt. Warum sollte man sie auch auf der Außenseite duplizieren?
Genau - das wird alles innerhalb der regulären Funktion erledigt. Warum sollte man sie auch auf der Außenseite duplizieren?
Dann haben Sie die Erklärung nicht verstanden. Die Geschwindigkeit der beiden Anrufe ist unterschiedlich.
Bitte zeigen Sie es mir.
Alle Funktionen und Methoden, bei denen dies mit mir gemacht wird?
Es gibt zu viele von ihnen.
Alle Funktionen und Methoden, bei denen ich dies tue?
Einer ist genug.
Dann haben Sie die Erklärung nicht verstanden. Die Geschwindigkeit der beiden Anrufe ist unterschiedlich.
Ich scheine alles verstanden zu haben. Natürlich ist es anders. Wie haben Sie es beschleunigt? In einem Fall übergeben Sie einen Wert, der nicht das aktuelle Symbol ist, an die Funktion - wenn er not_Symbol ist.
In diesem Fall, in dem Sie den oben genannten Wert an die Funktion übergeben, führt die Funktion keine Prüfungen durch und nimmt den Wert des aktuellen Symbols aus dem Cache.
In anderen Fällen werden die Daten des angegebenen Symbols mit einer Prüfung auf "volles Programm" und seine Präsenz in der Marktübersicht abgefragt. Ihre "schnelle" Funktion wird diese Prüfungen nicht los, wenn sie Daten von einem nicht-nativen Symbol anfordert. Wo liegt also die Beschleunigung?
Nur zwei Optionen in Ihrer Funktion, wenn diese aufgerufen wird if(SymbolInfoTickFast(Symbol(), tick_array)) {}
Eine andere Sache, wenn Sie (in Ihrer Gewohnheit, alles zu definieren, was sich bewegt) eine String-Variable für das aktuelle Symbol erstellen, dann ja - Sie müssen hier Überprüfungen durchführen und Ihre Makro-Ersetzung durch eine vordefinierte Variable ersetzen, oder Symbol() aufrufen
Wie haben Sie es beschleunigt?