Indikator wird beschädigt - Seite 2

 
jjc:

Wenn es z. B. gerade 8 Uhr morgens ist, ist alles im Code, was davon ausgeht, dass (a) der Balken für 7 Uhr morgens 60 Takte zurückliegt oder sogar (b) dass überhaupt ein Balken für 07:00 Uhr existiert.

Guter Punkt, ich hatte nicht bedacht, dass es sich bei den Charts um M1 handelt, als ich sie mir zum ersten Mal ansah ... es ist durchaus üblich, dass M1-Balken zu ruhigen Zeiten, z. B. über Nacht, fehlen.
 
RaptorUK:
Guter Punkt, mir war nicht klar, dass es sich bei den Charts um M1 handelt, als ich sie mir zum ersten Mal ansah ... es ist durchaus üblich, dass M1-Balken zu ruhigen Zeiten, z. B. über Nacht, nicht angezeigt werden.
In diesem Fall denke ich, es ist wahrscheinlicher, dass es sich um einen vorübergehenden Verlust der Verbindung zum Broker handelt, aber das Prinzip und die Auswirkungen sind die gleichen.
 
jjc:
In diesem Fall halte ich es für wahrscheinlicher, dass es sich um einen vorübergehenden Verlust der Verbindung zum Broker handelt, aber das Prinzip und die Auswirkungen sind die gleichen.
...Auf dem Screenshot "Move Error" fällt außerdem auf, dass die violetten Linien an dem Punkt aufhören zu zeichnen, an dem es so aussieht, als ob ein M1-Balken fehlt.
 
AnkaSoftware:

Hmm, "neue historische Daten werden in das Diagramm eingefügt", wie? Der Indikator wird gestartet und bleibt ungestört. Wir haben einen festen Lookback von 1000 Bars. Der Indikator lädt keine historischen Daten.

Kann jemand aus dem Entwicklungsteam einen Blick darauf werfen?

Sie sagten ... "Ich habe einen Indikator entwickelt, der für die ersten 16 Stunden oder so gut läuft" ... 16 Stunden x 60 Minuten = 960 Balken ... was passiert, wenn Sie Ihren Lookback auf 500 Balken reduzieren, bekommen Sie dann nach 8 Stunden Probleme?
 

Jic, vielen Dank für Ihre Beobachtungen.

Die Tests werden auf einem CNS VPS Server mit zuverlässiger Verbindung durchgeführt und das Demo-Konto, das für die Tests verwendet wird, ist mit den Brokern IBFX und VantageFX

Ich führe bei jedem Tick ein RefreshRates() aus und verwende normale Zeitreihenfunktionen für den Zugriff auf die Balkendaten. Der Code, der zur Aktualisierung der Indikatoren verwendet wird, ist in meinem früheren Beitrag angegeben, siehe Funktion DrawMoveEx. Ich glaube, die TimeSeries hat keine fehlenden Balken von 0 bis 'Bars -1'. Lassen Sie mich wissen, wenn diese Annahme falsch ist.

Anbei ein weiterer Snapshot, mit korrekter Zeitskala und ohne Scrollen nach rechts (mit aktuellen IBFX-Daten).

Konnten Sie sich die Excel-Datei in Beitrag 2011.10.07 15:30 ansehen?

 

AnkaSoftware:
I believe the TimeSeries does not have missing bars from 0 to 'Bars -1'. Let me know if this assumption is incorrect.

Diese Annahme scheint sicherlich falsch zu sein, denn Ihr ursprünglicher "Move Error"-Screenshot hat 16 Balken zwischen den einzelnen X-Achsenmarkierungen - Sie können sie selbst zählen -, aber einer der Zeiträume umfasst 21 statt 16 Minuten. Und, wie RaptorUK sagt, ist dies keine Annahme, die Sie in Ihrem Code sicher treffen können. Es wird nicht unbedingt in jeder einzelnen Minute des Tages ein Handel stattfinden - obwohl es mich überraschen würde, wenn dies beim GBPUSD außerhalb der großen Feiertage nicht der Fall wäre - und daher wird es nicht unbedingt für jede einzelne Minute einen M1-Balken geben.

Wenn Sie glauben, dass es keine fehlenden Balken gibt - obwohl es nachweislich der Fall ist, dass es in einem Ihrer Screenshots fehlende Balken gibt -, dann programmieren Sie wahrscheinlich auf der Grundlage dieser Annahme/Glaube. Ich würde Ihren letzten Screenshot nicht als Gegenbeweis betrachten, denn es könnten (a) Daten vor dem auf dem Screenshot gezeigten Zeitraum fehlen, die (b) irgendwie die Berechnungen für die auf dem Screenshot gezeigten Balken beeinflussen.

Am verdächtigsten ist, dass die lila Linien im Original-Screenshot während des Zeitraums aufhören, in dem eindeutig ein Balken fehlt. Ohne den vollständigen Code zu sehen, kann ich keine weiteren Kommentare abgeben oder eine Analyse Ihrer Kalkulationstabellen vornehmen.

 
AnkaSoftware:

Jic, vielen Dank für Ihre Beobachtungen.

Die Tests werden auf einem CNS VPS Server mit zuverlässiger Verbindung durchgeführt und das Demo-Konto, das für die Tests verwendet wird, ist mit den Brokern IBFX und VantageFX

Ich führe bei jedem Tick ein RefreshRates() aus und verwende normale Zeitreihenfunktionen für den Zugriff auf die Balkendaten.

Wahrscheinlich ist das nicht die Ursache für Ihr Problem, aber . RefreshRates() macht keinen Unterschied, wenn Sie diese Funktionen verwenden: https: //docs.mql4.com/series RefreshRates aktualisiert nur diese Variablen: https://docs.mql4.com/predefined/variables
 
jjc:

Diese Annahme scheint sicherlich falsch zu sein, denn Ihr ursprünglicher "Move Error"-Screenshot hat 16 Balken zwischen den einzelnen X-Achsenmarkierungen - Sie können sie selbst zählen -, aber einer der Zeiträume umfasst 21 statt 16 Minuten. Und, wie RaptorUK sagt, ist dies keine Annahme, die Sie in Ihrem Code sicher treffen können. Es wird nicht unbedingt in jeder einzelnen Minute des Tages ein Handel stattfinden - obwohl es mich überraschen würde, wenn dies beim GBPUSD außerhalb der großen Feiertage nicht der Fall wäre - und daher wird es nicht unbedingt für jede einzelne Minute einen M1-Balken geben.

Wenn Sie glauben, dass es keine fehlenden Balken gibt - obwohl es nachweislich der Fall ist, dass in einem Ihrer Screenshots fehlende Balken zu sehen sind - dann programmieren Sie wahrscheinlich auf der Grundlage dieser Annahme/des Glaubens. Ich würde Ihren letzten Screenshot nicht als Gegenbeweis betrachten, denn es könnten (a) Daten vor dem auf dem Screenshot gezeigten Zeitraum fehlen, die (b) irgendwie die Berechnungen für die auf dem Screenshot gezeigten Balken beeinflussen.

Am verdächtigsten ist, dass die lila Linien im Original-Screenshot während des Zeitraums aufhören, in dem eindeutig ein Balken fehlt. Ohne den vollständigen Code zu sehen, kann ich keine weiteren Kommentare abgeben oder eine Analyse Ihrer Kalkulationstabellen vornehmen.

Raptor, ich werde prüfen, was passiert, wenn man den Lookback auf 500 Balken reduziert, gibt es dann Probleme nach 8 Stunden?" und mich zurückmelden.

JIC, Bitte beachten Sie, dass das Problem nicht auf 32-Bit-Plattformen auftritt. Ich habe in einem der früheren Beiträge einen Code bereitgestellt.

 
AnkaSoftware:
Ich glaube, die TimeSeries hat keine fehlenden Balken von 0 bis 'Balken -1'. Lassen Sie mich wissen, ob diese Annahme falsch ist.

Natürlich nicht, es gibt Bars-Kerzen mit den Nummern 0 bis Bars-1. ArraySize(Close) == Bars immer.

Allerdings gibt es immer übersprungene Bars. von Fr 21:59z ist der nächste Bar Sun 22:00z. Wochenenden und Feiertage und Minuten ohne Aktivität.

Sie können nicht davon ausgehen, dass Time[x] == Time[x+1] + 60*Period() nicht auf einem übersprungenen Balken liegt.

Wenn Sie Hilfe mit IHREM Indikator wünschen, posten Sie IHREN Code - keine Gedankenleser hier.

 
AnkaSoftware:

Einige weitere Informationen -

a) Die Beschädigung der Indikatoren tritt nur auf der Windows 64-Bit-Plattform auf.

b) Ich habe einen Dump des Indikator-Arrays vor und nach der Beschädigung gemacht - die gleichen sind in der beigefügten xls-Datei mit Kommentaren verfügbar.

Schauen Sie sich die Unix-Zeitwerte in Ihrer Tabelle an, die Abstände zwischen den einzelnen benachbarten Werten sollten 60, 60 Sekunden betragen, es gibt ein paar 240-Sekunden-Lücken und mindestens eine 120-Sekunden-Lücke. Ist Ihr Code so konzipiert, dass er fehlende M1-Balken verarbeiten kann?