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
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?
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.
2019.06.0708:11:34.240 CustomHistoryTick (EURUSD,H1) CustomSymbolCreate(Name,NULL,_Symbol) = true2019.06.0708:11:34.243 CustomHistoryTick (EURUSD,H1) CustomRatesDelete(Name,0,0) = 02019.06.0708:11:34.243 CustomHistoryTick (EURUSD,H1) SymbolSelect(Name,false) = true2019.06.0708:11:34.243 CustomHistoryTick (EURUSD,H1) CustomSymbolDelete(Name) = true2019.06.0708:11:34.243 CustomHistoryTick (EURUSD,H1) CustomSymbolCreate(Name,NULL,_Symbol) = true2019.06.0708:11:34.321 CustomHistoryTick (EURUSD,H1) CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,(TimeCurrent()-3600)*1000) = 11142019.06.0708:11:46.158 Custom Moving Average (EURUSD11608,M1) 13 prev_calculated=0 begin=0 data=1.1266689400636152019.06.0708:11:46.173 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=13 begin=0 data=0.29892693877551022019.06.0708:11:46.209 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.228 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892979591836732019.06.0708:11:46.246 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29893122448979592019.06.0708:11:46.271 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29893122448979592019.06.0708:11:46.305 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.399 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.427 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:46.460 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.494 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:46.521 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.561 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.586 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.614 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892979591836732019.06.0708:11:46.645 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.676 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892979591836732019.06.0708:11:46.708 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.775 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.803 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.835 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.869 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.898 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:46.930 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:46.972 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.2989240816326532019.06.0708:11:46.993 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892265306122452019.06.0708:11:47.024 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.2989240816326532019.06.0708:11:47.050 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:47.085 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=14 begin=0 data=0.41718043731778432019.06.0708:11:47.116 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.175 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.198 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.215 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.242 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.270 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717615160349852019.06.0708:11:47.302 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.335 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.370 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717615160349852019.06.0708:11:47.398 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41718043731778432019.06.0708:11:47.434 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.466 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.494 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.528 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.586 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.617 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.646 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.417174723032072019.06.0708:11:47.679 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.716 Custom Moving Average (EURUSD11608,M1) 16 prev_calculated=15 begin=0 data=0.51853792586422332019.06.0708:11:47.740 Custom Moving Average (EURUSD11608,M1) 16 prev_calculated=16 begin=0 data=0.5185364972927947
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.
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)
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)