Bugs und Vorschläge zur Verbesserung von CopyTicks() und CopyTicksRange() nach Build 1485. - Seite 3

 
MetaQuotes Software Corp.:
Danke für die Nachricht, der Fehler wurde behoben - es funktioniert jetzt auch in den Indikatoren. Ein Update wird in Kürze veröffentlicht.
Bitte sagen Sie mir, ob die Geschwindigkeit beim Abrufen der Ticks über CopyTicksRange() erhöht wird?
 
Build 1491 - Sprachdokumentation in ME nicht aktualisiert. Informationen über CopyTicksRange() sind nur über die Website erhältlich!
 
Im Tester werden die Ticks aus dem "Pack" (mit der gleichen msec-Zeit) im Moment (Build 1495) nacheinander ausgegeben. Und der Prüfer berechnet jeden einzelnen Wert separat. In Wirklichkeit kann dies nicht der Fall sein.
 

Ich glaube, ich bin hier richtig. Liebe Forumsmitglieder, ich kämpfe schon seit langem mit diesem Problem, kann es aber nicht lösen. Ich hoffe, Sie können helfen.

Die Situation ist die folgende: Broker Finam (Whotrades), MMA-Konto. Ich arbeite mit 26 russischen Wertpapieren, d.h. ich habe 26 Fenster geöffnet und in jedem Fenster hängt eine Kopie meines Expert Advisors. Sie verwenden die gemeinsame C++-Bibliothek, die über ein gemeinsames Fenster zur Verwaltung und Anzeige von Debugging-Informationen verfügt.

Einige Strategieparameter hängen direkt vom Tick-Tape ab, daher ist es sehr wichtig, dass alle Ticks den Algorithmus durchlaufen. Natürlich war es eine Überraschung zu erfahren, dass OnTick() nicht bei jedem Tick funktioniert, und nicht immer, sogar bei einem Tick. Infolgedessen ist es notwendig geworden, die Funktionen CopyTicks und CopyTicksRange für den Zeitgeber zu verwenden. Dank großer Anstrengungen (und es steht nirgends geschrieben) habe ich herausgefunden, dass datetime*1000 genau die Anzahl der Millisekunden seit 1970 ist, aber das ist nicht der Punkt.
Das Endergebnis dessen, was wir jetzt haben, ist ein Code-Block, der, onTimer, seit 10 Uhr morgens beginnt, die neuesten Tick-Daten anzufordern.

Das Problem ist, dass, aus irgendeinem Grund ist es wichtig, am ersten Tag nach dem Metatrader Neustart, für einige Wertpapiere, Tick-Daten beginnt zu kommen nur um 11 Uhr (mehr oder weniger), am nächsten Tag - alles ist normal, es beginnt um 10 Uhr. Die Liste dieser Wertpapiere ist in keiner Weise festgelegt, an manchen ersten Tagen kann es sein, dass die Ticks für einige Wertpapiere nicht kommen, an manchen Tagen - für andere.
Ich dachte, das Problem sei die Zwischenspeicherung der Ticks. Ich dachte, es handele sich um ein Problem mit dem falschen Timing, aber das war nicht der Fall. Außerdem scheint es, dass, wenn CopyTicks(Range) die Daten nicht zurückgeben könnte, sie einen Fehler (-1) zurückgeben könnten und alles würde einen Sinn ergeben. Es wird jedoch 0 zurückgegeben, das Array ist ebenfalls Null und GetLastError gibt ERR_SUCCESS zurück. Das heißt, es ist so, als gäbe es diese Häkchen nicht, was seltsam ist, da sie in der Multifunktionsleiste im Fenster vorhanden sind.

Ich bin ratlos. Ich hoffe, Sie können mir sagen, was ich tun soll, oder zumindest, in welche Richtung ich gehen soll.

Wenn Sie den Code zur Verfügung stellen müssen, werde ich ihn mit dem nächsten Kommentar von den "zusätzlichen" Befehlen bereinigen und veröffentlichen.

Ich danke Ihnen!

 
antru:

Ja, ein Code ist wünschenswert. Handelt es sich um ein echtes oder ein Demo-Konto? Wie ist das Terminal aufgebaut?

Ehrlich gesagt, weiß ich nicht, ob jemand hier mit Ihrem Makler zusammenarbeitet. Wenn hier niemand auf Ihren Beitrag reagiert - schreiben Sie an ServiceDesk, Sie können direkt auf Ihren Beitrag verlinken. Außerdem müssen sie einen Code angeben.

 
antru:
Es ist besser, wenn Sie sich mit dem Code direkt an den Kundendienst wenden, um ihn abzuspielen.
 
Alexey Kozitsyn:

Ja, ein Code ist wünschenswert. Handelt es sich um ein echtes oder ein Demo-Konto? Wie ist das Terminal aufgebaut?

Ehrlich gesagt, weiß ich nicht, ob jemand hier mit Ihrem Makler zusammenarbeitet. Wenn hier niemand auf Ihren Beitrag reagiert - schreiben Sie an ServiceDesk, Sie können direkt auf Ihren Beitrag verlinken. Außerdem müssen sie einen Code angeben.

Das Konto ist echt, letzter Build, 1525. Ich denke, das sollten Sie tun. Erstellen Sie den nackten Tick-Taking-Code ohne den Strategiealgorithmus. Führen Sie es aus. Wenn es nicht funktioniert, sollten Sie den Service Desk anrufen. Wenn es doch funktioniert, sollte man vielleicht die Fehler im eigenen Code suchen.

Danke für den Hinweis auf den Service Desk, ich wusste nicht, dass das möglich ist. Ich habe auf der Website von metaquotes nachgesehen, alle Kontakte sind Telefonnummern in Zypern und China, keine einzige E-Mail.

 
Andrey Khatimlianskii:
Es ist besser, sich mit dem Code direkt an den Kundendienst zu wenden, um ihn abzuspielen.
Ich danke Ihnen!
 
antru:

Das Konto ist echt, der Build ist der neueste, 1525. Ich denke, das sollten wir tun. Erstellen Sie einen nackten Tick-Taking-Code ohne den Strategiealgorithmus. Führen Sie es aus. Wenn es nicht funktioniert, wenden Sie sich an den Kundendienst. Wenn es doch funktioniert, sollte man vielleicht die Fehler im eigenen Code suchen.

Danke für den Hinweis auf den Service Desk, ich wusste nicht, dass das möglich ist. Ich habe auf der Website von metaquotes nachgesehen, alle Kontakte sind Telefonnummern in Zypern und China, keine einzige E-Mail.

Genau das, was Sie brauchen, Ihre Strategie, wird in diesem Fall nur im Wege stehen, das Problem zu identifizieren. Es ist der Code, wie Sie die Zecken anfordern, der benötigt wird.
 
antru:

Ich glaube, ich bin hier richtig. Liebe Forumsmitglieder, ich kämpfe schon seit langem mit diesem Problem, kann es aber nicht lösen. Ich hoffe, Sie können helfen.

Die Situation ist die folgende: Broker Finam (Whotrades), MMA-Konto. Ich arbeite mit 26 russischen Wertpapieren, d.h. ich habe 26 Fenster geöffnet und in jedem Fenster hängt eine Kopie meines Expert Advisors. Sie verwenden die gemeinsame C++-Bibliothek, die über ein gemeinsames Fenster zur Verwaltung und Anzeige von Debugging-Informationen verfügt.

Einige Strategieparameter hängen direkt vom Tick-Tape ab, daher ist es sehr wichtig, dass alle Ticks den Algorithmus durchlaufen. Natürlich war es eine Überraschung zu erfahren, dass OnTick() nicht bei jedem Tick funktioniert, und nicht immer, sogar nicht bei dem Tick. Infolgedessen ist es notwendig geworden, die Funktionen CopyTicks und CopyTicksRange für den Zeitgeber zu verwenden. Dank großer Anstrengungen (und es steht nirgends geschrieben) habe ich herausgefunden, dass datetime*1000 genau die Anzahl der Millisekunden seit 1970 ist, aber das ist nicht der Punkt.
Das Endergebnis dessen, was wir jetzt haben, ist ein Code-Block, der, onTimer, seit 10 Uhr morgens beginnt, die neuesten Tick-Daten anzufordern.

Das Problem ist, dass, aus irgendeinem Grund ist es wichtig, am ersten Tag nach dem Metatrader Neustart, für einige Wertpapiere, Tick-Daten beginnt zu kommen nur um 11 Uhr (mehr oder weniger), am nächsten Tag - alles ist normal, es beginnt um 10 Uhr. Die Liste dieser Wertpapiere ist in keiner Weise festgelegt, an manchen ersten Tagen kann es sein, dass für einige Wertpapiere keine Ticks kommen, an manchen Tagen - für andere.
Ich dachte, das Problem sei die Zwischenspeicherung der Ticks. Ich dachte, es handele sich um ein Problem mit dem falschen Timing, aber das war nicht der Fall. Außerdem scheint es, dass, wenn CopyTicks(Range) die Daten nicht zurückgeben könnte, sie einen Fehler (-1) zurückgeben könnten und alles würde einen Sinn ergeben. Es wird jedoch 0 zurückgegeben, das Array ist ebenfalls Null und GetLastError gibt ERR_SUCCESS zurück. Das heißt, es ist so, als gäbe es diese Häkchen nicht, was seltsam ist, da sie in der Multifunktionsleiste im Fenster vorhanden sind.

Ich bin ratlos. Ich hoffe, Sie können mir sagen, was ich tun soll, oder zumindest, in welche Richtung ich gehen soll.

Wenn Sie den Code zur Verfügung stellen müssen, werde ich ihn mit dem nächsten Kommentar von den "zusätzlichen" Befehlen bereinigen und veröffentlichen.

Ich danke Ihnen!

Versuchen Sie, alle möglichen Arten von Zecken und OnTisk und CopyTicks zu verwenden, vergleichen Sie dann die Ergebnisse und verwenden Sie die geeignetste.
Grund der Beschwerde: