Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 33
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
Hervorgehoben kann 0 zurückgeben. BCS begegnete.
Ja, korrupte Makler. Sie würden dort auch negative Zahlen eingeben.
Es wäre gut, wenn die Entwickler einen Grenzwert für den Wertebereich der einzelnen Parameter festlegen würden, wenn die Makler Symbole setzen.
Was genau ist falsch? Das war die Frage - was mache ich falsch, um Indikatordaten aus einem nicht nativen Zeitrahmen zu erhalten?
Beispiel: Der Indikator wird auf M1 ausgeführt, und die Daten von AO sollen von M5 bezogen werden. Während wir also einen Grenzwert>1 haben (die Historie muss neu berechnet werden), liefert AO von M5 Nullen, ohne dass ein Datenfehler vorliegt. Sobald die Historie berechnet ist (Limit==0), beginnen die Daten von AO mit M5 zu kommen.
Zunächst einmal brauchen Sie solche Einträge nicht vorzunehmen:
Zuerst dachte ich, Sie würden einer Variablen ihren eigenen Wert zuweisen.
Nächste:
Während der Initialisierung ist das Kopieren nicht erforderlich. Die Initialisierung ist nicht für diesen Zweck gedacht. Außerdem ist dieser Datensatz nicht aussagekräftig, wenn Daten von älteren TFs angefordert werden, die zum Zeitpunkt der Anforderung von OnInit() noch nicht berechnet sind.
Dieser Eintrag muss jedoch nur einmal bei der Initialisierung vorgenommen werden.
Außerdem... ähm... Subjektiv würde ich das nicht so machen.
Ich unterteile das Programm gerne in:
1. Erster Lauf (historische Analyse);
2. Nachfolgende Läufe:
2.1. jedes Häkchen;
2.2 Der gebildete Balken;
D.h:
Und erst danach - Hauptberechnungszyklus (Funktion).
Ihre Kopierfunktionen liefern uninformative Fehler. Der Code ist nicht sehr gut.
Es gibt keine Überprüfung der Synchronisierung der Daten der älteren TF.
Und das Wichtigste dabei ist, die Reihenfolge zu verstehen. Ich rate dazu, einen Testindikator zu erstellen, der nur die Daten des Haupt-TF beim ersten Start abfragt, um zu verstehen, wie das Kopieren erfolgt. D.h., dass dies vom Anfang des Codes entfernt werden sollte:
Und heben Sie das erste und das letzte Element des Arrays auf. Und erst dann, wenn nötig, ändern Sie die Richtung der Indizierung.
Erstens brauchen Sie solche Einträge nicht vorzunehmen:
Ich dachte zuerst, Sie würden einer Variablen einen eigenen Wert zuweisen.
Nächste:
Während der Initialisierung ist das Kopieren nicht erforderlich. Die Initialisierung ist nicht für diesen Zweck gedacht. Außerdem ist dieser Datensatz nicht aussagekräftig, wenn Daten von älteren TFs angefordert werden, die zum Zeitpunkt der Anforderung von OnInit() noch nicht berechnet sind.
Dieser Eintrag muss jedoch nur einmal bei der Initialisierung vorgenommen werden.
Außerdem... ähm... Subjektiv würde ich das nicht so machen.
Ich unterteile das Programm gerne in:
1. Erster Lauf (historische Analyse);
2. Nachfolgende Läufe:
2.1. jedes Häkchen;
2.2 Der gebildete Balken;
D.h:
Und erst danach - Hauptberechnungszyklus (Funktion).
Ihre Kopierfunktionen geben uninformative Fehler. Der Code ist nicht sehr gut.
Es gibt keine Überprüfung der Synchronisierung der Daten der älteren TF.
Und das Wichtigste dabei ist, die Reihenfolge zu verstehen. Ich empfehle, einen Testindikator zu erstellen, der nur die Daten des Haupt-TF beim ersten Start abfragt, um zu verstehen, wie das Kopieren erfolgt. D.h., dass dies vom Anfang des Codes entfernt werden sollte:
Und heben Sie das erste und das letzte Element des Arrays auf. Und nur dann, wenn es notwendig ist, ändern Sie die Richtung der Indizierung.
Ich mache Variablen, die für mich auf einen Blick erkennbar sind. Wenn du sie nicht verstehst, mach sie so, dass du sie verstehst ;).
Ich beginne nicht-globale Variablen immer mit einem kleinen Buchstaben - der Grund ist einfach: Groß- und Kleinschreibung...
Dies ist der Testcode, da der Nicht-Test-Code groß genug ist, und auf MT4 fliegt er beim Umschalten des Traffics, und es gibt keine Fehler von fehlenden Daten - alles ist immer da. Aber MT5, wenn ich wechseln mtf nur für eine halbe Minute lädt die Geschichte, und dann nicht mit den Daten arbeiten, ist nicht seine TF - sagt über ihre Abwesenheit.
Deshalb habe ich darüber gesprochen, was ich falsch gemacht habe. Es stellte sich heraus, dass es notwendig ist, die Daten für alle verwendeten Clients im Init abzufragen. Ich denke, wenn Sie die geschätzte Anzahl der gebrauchten Telefone nicht im Voraus kennen, müssen Sie sie alle anfordern. Es zählt nur eine von einer halben Minute. Es gibt insgesamt 21 davon...
Stimmt wieder etwas nicht?
Im MT5 dauert es nur eine halbe Minute, um die Historie herunterzuladen, wenn ein Etf gewechselt wird.
schrieb darüber
mehr Details hier
https://www.mql5.com/ru/forum/1111/page1871#comment_4866969
https://www.mql5.com/ru/forum/1111/page1871#comment_4867939
Je mehr TF oder Symbole angefordert werden, desto langsamer wird der Start sein.
schrieb darüber
mehr Details hier
https://www.mql5.com/ru/forum/1111/page1871#comment_4866969
https://www.mql5.com/ru/forum/1111/page1871#comment_4867939
Je mehr TFs oder Zeichen abgefragt werden, desto langsamer wird der Start sein.
Es wäre gut, wenn ich den Indikator nur beim ersten Mal starten würde. Jedes Mal, wenn ich den Zeitrahmen wechsle, muss ich eine halbe Minute lang den Verlauf laden. Ich weiß, dass es nicht so sein sollte, aber... Ich mache etwas falsch... Ich versuche, in nur einem Indikator auf einen nicht-nativen Zeitrahmen zuzugreifen.
Nun, messen Sie die Geschwindigkeit des Kopierens von Daten aus einem anderen Zeitraum und sehen Sie, wo der Engpass liegt.
Wenn Sie mehrere Indikatoren von verschiedenen TFs für Berechnungen verwenden müssen, müssen Sie den Griff für jeden TF erhalten.
Wenn Sie wollen, dass es schneller geht, reduzieren Sie die Größe des Verlaufs im Terminal.
Haben Sie meinen Testindikator ausgeführt? Sammelt sie Daten?
Wenn Sie mehrere Indikatoren von verschiedenen TFs für Berechnungen verwenden müssen, müssen Sie den Griff für jeden TF erhalten.
Wenn Sie wollen, dass es schneller geht, reduzieren Sie die Größe des Verlaufs im Terminal.
Haben Sie meinen Testindikator ausgeführt? Sammelt sie Daten?
Nein, das habe ich nicht.
Es stellt sich heraus, dass, wenn ich ALLE Zeitrahmen benötigen, sollte ich 21 Griffe der AO-Indikator erstellen? Ist das nicht eine Verschwendung?
Nein, ich habe es noch nicht ausprobiert.
Es stellt sich heraus, dass Sie, wenn Sie ALLE Zeitrahmen benötigen, 21 AO-Indikator-Handles erstellen müssen? Ist das nicht eine Verschwendung?