Benutzerdefinierte Symbole. Fehler, Bugs, Fragen, Vorschläge. - Seite 12
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Fehler 16.
Zuvor erzeugte CustomTicksAdd Balken aus Ticks, die sich auf den aktuellen Tag bezogen. Dies ist auch jetzt nicht der Fall.
Dieser Fehler scheint mit Fehler #14 zusammenzuhängen.
Die Entfernung des Symbols aus der Marktübersicht ist aus folgendem Grund möglich. Der aufeinanderfolgende Aufruf von CustomSymbolCreate - CustomSymbolDelete - CustomSymbolCreate mit demselben benutzerdefinierten Symbolnamen führte dazu, dass die Symbol-ID getroffen wurde. Daher wurde bei der Prüfung, ob ein Symbol aus der Marktübersicht entfernt werden kann, die Grafik dieses Symbols nicht gefunden (die Kennung ist beschädigt), und das Symbol wurde sicher entfernt. Dies wurde behoben.
Bei der Anwendung eines Ticks auf ein Diagramm ist das Gleiche möglich - die Suche nach dem Diagramm über die Symbolkennung ergab kein Ergebnis
Fehler 15.
Wir lassen den folgenden Indikator auf das Symbol dieses EAs laufen (ohne ChartSetSymbolPeriod-row)
Er produziert nur Nullen.
Das stimmt.
Der Aufruf von CustomRatesUpdate setzt alle Änderungszähler zurück und berechnet die Indikatoren von Null an neu
Und das völlig zu Recht.
Wenn Sie CustomRatesUpdate aufrufen, werden alle Änderungszähler zurückgesetzt und die Indikatoren werden von Null an neu berechnet.
Was ist die Logik hinter dieser Entscheidung? Schließlich gibt es auf der linken Seite unveränderte Balken.
Was ist die Logik hinter dieser Lösung? Immerhin gibt es auf der linken Seite unveränderliche Balken.
prev_calculated enthält einen Wert, der beim vorherigen OnCalculate-Aufruf zurückgegeben wurde
Der Indikator kann auf der Grundlage seiner eigenen Logik einen beliebigen Wert zurückgeben. Es macht daher keinen Sinn, alle Indikatoren durchzugehen und den Wert von prev_calculated in seinen eigenen berechneten Wert zu ändern , wobei der Zeitrahmen berücksichtigt wird. Und sie ist ressourcenintensiv, vielleicht sogar unangemessen ressourcenintensiv.
Es ist viel ehrlicher, den Wert auf 0 zu setzen, wie am Anfang, als noch nichts gezählt wurde.
prev_calculated enthält den Wert, der beim letzten Aufruf von OnCalculate zurückgegeben wurde
Der Indikatorschreiber kann auf der Grundlage seiner eigenen Logik jeden beliebigen Wert zurückgeben. Es macht daher keinen Sinn, alle Indikatoren durchzugehen und den Wert von prev_calculated in seinen eigenen berechneten Wert zu ändern , wobei der Zeitrahmen berücksichtigt wird. Und sie ist ressourcenintensiv, vielleicht sogar unangemessen ressourcenintensiv.
Es ist viel ehrlicher, den Wert auf 0 zu setzen, wie am Anfang, als noch nichts gezählt wurde.
Was ist dann zu tun, wenn Indikatoren für ein benutzerdefiniertes Symbol nach jedem Tick-Rollover aufgrund dieses Nullwerts komplett neu berechnet werden?
Die Indikatoren sind speziell dafür geschrieben, das Terminal nicht zu verlangsamen, und hier beginnt es im Gegenteil.
Was ist dann, wenn bei einem benutzerdefinierten Symbol nach jedem Tick-Rollover die Indikatoren aufgrund dieses Nullwerts vollständig neu berechnet werden?
Das sollte nicht der Fall sein. Siehe
So sollte es nicht sein. Siehe
Lassen Sie mich klarstellen, dass es sich nicht nur um CustomTicksAdd, sondern auch um RatesUpdate handelt, das ein Tick-Through aus der Vergangenheit ist. Sogar das funktionierende TicksAdd hat die Balken nicht vor dem aktuellen Tag gebildet. Wir müssen sie selbst gestalten. Und deshalb bekommen wir null prev_calculated.
Lassen Sie mich klarstellen, dass der Tick-Rollover aus der Vergangenheit nicht nur CustomTicksAdd, sondern auch RatesUpdate ist. Sogar das funktionierende TicksAdd hat die Balken nicht vor dem aktuellen Tag gebildet. Wir müssen sie selbst erzeugen. Und deshalb bekommen wir null prev_calculated.
In jedem Fall werden beim Ersetzen, Aktualisieren oder Löschen von Balken alle Indikatoren von Null an neu errechnet. Das kommt nicht in Frage.
Das Hinzufügen von Ticks sollte wie gewohnt funktionieren, d.h. Ticks sind frische, aktuelle Ticks, aber nicht Ticks von gestern/vorgestern.
Ich habe Ihren Expert Advisor aus der Bug 11 Beschreibung ausgeführt und dann den Indikator mit einem Druck auf jedem OnCalculate ausgeführt
Hier sind die Protokolle.
Es bedeutet, dass alles in einer normalen Situation ordnungsgemäß funktioniert (Zecken sind heute, wie immer, von Bedeutung). Die Häkchen werden hinzugefügt, und der Indikator wird sparsam eingesetzt
In jedem Fall werden beim Ersetzen, Aktualisieren oder Löschen von Balken alle Indikatoren von Grund auf neu errechnet. Das kommt nicht in Frage.
Das Hinzufügen von Zecken sollte wie üblich funktionieren, d.h. die Zecken sind frisch, also von heute, nicht von gestern - von vorgestern.
Führen Sie Ihren Expert Advisor aus der Beschreibung des Fehlers 11 aus, dann führen Sie den Indikator mit dem Druck auf jedem OnCalculate
Hier sind die Protokolle.
Es bedeutet, dass alles in einer normalen Situation ordnungsgemäß funktioniert (Zecken sind heute, wie immer, von Bedeutung). Die Häkchen werden hinzugefügt, und der Indikator wird sparsam eingesetzt
Ist dies eine korrekte Aussage?
Wenn es 00:00:01 ist, können wir außerdem nicht CustomTicksAdd verwenden, um einen Balken umzuformen, der erst vor zwei Sekunden war.
Ist diese Aussage richtig?
Für einen Prüfer ist der Tick von vorgestern frisch, der heutige Tick von vorgestern.
Ich verstehe, was Sie meinen. Ihre Übung mit den benutzerdefinierten Tics von vor sechs Monaten hat eindeutig Testercharakter. Ihre Situation ist nicht normal (im Sinne der normalen Praxis)