Benutzerdefinierte Symbole. Fehler, Bugs, Fragen, Vorschläge. - Seite 28

 

Erst vor ein paar Tagen bin ich bei der Erstellung eines benutzerdefinierten Symbols auf diesen Fehler gestoßen. Ich habe viele Dinge noch einmal von Hand überprüft. Ich bemerkte auch einen sehr seltsamen Fehler, dass nach ArrayCopy einige Ticks zufällige Werte erhielten. Da es ziemlich schmerzhaft war, es auf saubere Maschine zu wiederholen, habe ich aus Abgüssen eine andere synthetische benutzerdefinierte generiert, und die Einstellung zu den Berichten hier in letzter Zeit ist eigenartig, nämlich völlig ignorieren, habe ich nicht begonnen, einen Bericht zu machen. Aber ich habe das Problem mit einem einzigen Aufruf vonCustomTicksAdd gelöst. D.h. alle Tics werden zunächst in ein Array gefüllt, dieses manuell kopiert und dann durch einen Aufruf des Custom Symbols. Auf diese Weise werden keine Fehler ausgelöst. Versuchen Sie es.

P.S. Ich sollte hinzufügen, dass ich mit CopyTicks auf allerlei seltsame Fehler gestoßen bin, ich bin zu CopyTicksRange übergegangen.

 
fxsaber:

Ich habe mir den Code genauer angesehen. Beim Empfang von Portionen fehlen Ihnen Häkchen. Die Situation ist möglich, wenn Ticks[Limit - 1].time_msc == Ticks[Limit + k], k >= 0.

Dementsprechend kann es vorkommen, dass beim Hinzufügen einer Auslassung die Flaggen nicht übereinstimmen.


Ich lasse sie in diesem Test absichtlich weg, um zu gewährleisten, dass es keine Überschneidungen gibt, denn die Ursache des Problems ist noch nicht klar, und es könnte durch doppelte Zecken verursacht werden (in Analogie zu Andrey habe ich beschlossen, genau diese Möglichkeit durch eine "schnelle und schmutzige" Methode auszuschließen).

Was die Flaggen angeht, bitte ich um nähere Erläuterungen. Der Inhalt der Häkchen (einschließlich der Flaggen) ändert sich nie, und ich habe nichts über einen Einfluss der Flaggen auf die Reihenfolge der Häkchen gelesen. Zumindest sagt die Beschreibung des Fehlercodes nichts über Flaggen aus.

 
Stanislav Korotky:

Was die Flaggen angeht, bitte ich um nähere Erläuterungen. Niemand ändert den Inhalt der Häkchen (einschließlich der Flaggen), und ich habe nichts über einen Einfluss der Flaggen auf die Reihenfolge der Häkchen gelesen. Zumindest die Beschreibung des Fehlercodes sagt nichts über Flaggen aus.

Was die Flaggen betrifft, so handelt es sich um eine Hypothese. Vor einiger Zeit hatte ich ein Problem mit ihnen, so dass ich vor dem Versand selbst Flaggen für externe Zecken erstellte.


Zum Beispiel, nach dem Passieren der ersten Tick hat einen anderen Geldkurs, aber es gibt keine Flagge über sie.

 

Es ist nicht klar, warum diese Zeile verwendet wird, wenn die Variable _start mit ms incremented nirgendwo anders verwendet wird.
Und wenn die Funktion beendet wird, wird sie zerstört.
So wie ich das sehe, wird die Zeitverschiebung nirgendwo verwendet oder gespeichert.
Und warum weisen Sie dieser _start-Variablen, die als Eingangsvariable dient, etwas zu.
Dieser Wert wird an die while-Funktion zurückgegeben, und seine Verwendung führt zu einem Deadlock.
Der Code ist also ziemlich verwirrend und unklar. Oder ich verstehe dieses Konstrukt nicht ))

_start = array[size - 1].time_msc + 1;
 
Roman:

Es ist nicht klar, warum diese Zeile, wenn die Variable _start mit ms inkrementiert um eins nirgendwo anders verwendet wird.
Und wenn die Funktion beendet wird, wird sie zerstört.
So wie ich das sehe, wird die Zeitverschiebung nirgendwo verwendet oder gespeichert.
Und warum weisen Sie dieser _start-Variablen, die als Eingangsvariable dient, etwas zu.
Dieser Wert wird an die while-Funktion zurückgegeben, und seine Verwendung führt zu einem Deadlock.
Der Code ist also ziemlich verwirrend und unklar. Oder vielleicht verstehe ich diese Konstruktion nicht))

Diese Variablenreferenz wird in einem Funktionsparameter "an Ort und Stelle" vom aufrufenden Code geworfen, ändert sich ständig und wird in Iterationen verwendet.

 
fxsaber:

Über Flaggen - eine Hypothese. Einmal gab es ein Problem mit ihnen, so dass ich für Drittanbieter-Zecken vor dem Versenden selbst Flaggen erstellt habe.


Zum Beispiel, nach dem Passieren der ersten Tick hat einen anderen Geldkurs, aber es gibt keine Flagge über sie.

Die Idee ist klar. Aber ohne MQs Erklärung bleibt alles auf der Ebene unserer Spekulationen (in Bezug auf den möglichen Einfluss auf das Auftreten dieses oder jenes Fehlers).

 
Stanislav Korotky:

Diese Variablenreferenz wird als Funktionsparameter "an Ort und Stelle" vom aufrufenden Code eingeworfen, ändert sich ständig und wird in Iterationen verwendet.

Ja, ich habe nicht auf den Hinweis geachtet und wollte ihn anbieten, aber er ist da.
Versuchen Sie, eine Variable explizit zuzuweisen, um mehr Zeit zu sparen.

 

Neues Rätsel. Problem mit CopyTicks auf Build 2507, funktionierte gut auf älteren Builds (insbesondere 2374).

Ich habe es auf ein einfaches Testskript in der Anwendung reduziert. Sie fragt nach neuen Ticks seit der letzten Umfrage.

Kurz nach dem ersten erfolgreichen Schleifendurchlauf beginnt das Skript mit dem Kopieren von Ticks in das Array mit der Zeit, von der bekannt ist, dass sie vor der im from-Parameter angegebenen Zeit liegt, d. h. vom Beginn des aktuellen Tages an.

Wo liegt das Problem?

Dateien:
CopyTicks.mq5  1 kb
 
Stanislav Korotky:

Neues Rätsel. Problem mit CopyTicks auf Build 2507, funktionierte gut auf älteren Builds (insbesondere 2374).

Ich habe es auf ein einfaches Testskript in der Anwendung reduziert. Sie fragt nach neuen Ticks seit der letzten Umfrage.

Kurz nach dem ersten erfolgreichen Schleifendurchlauf beginnt das Skript mit dem Kopieren von Ticks in das Array mit der Zeit, von der bekannt ist, dass sie vor der im from-Parameter angegebenen Zeit liegt, d. h. vom Beginn des aktuellen Tages an.

Wo liegt das Problem?

Ich bestätige den Fehler in 2509.

Diese Variante scheint nicht zu scheitern.

int size = CopyTicksRange(_Symbol, array, COPY_TICKS_ALL, cursor);
 
Zweideutigkeit bei benutzerdefinierten Symbolen. Es ist möglich, zwei Symbole zu erstellen, die sich nur durch die Groß- und Kleinschreibung unterscheiden (z.B. "xEURUSD" und "XEURUSD"), aber das Hinzufügen von Anführungszeichen zu "duplicate" funktioniert nicht - CustomRatesUpdate gibt 0 zurück, ohne Fehler. Wir müssen entweder die Groß- und Kleinschreibung bei Namen berücksichtigen (damit solche Zeichen vollständig funktionieren), oder die Erstellung solcher "ähnlichen" Namen nicht zulassen.