Markt geschlossen - Seite 8

 
fxsaber:

Das Skript im Chart-Kommentar zeigt diesen Fehler

Gibt es eine Anwendung für dieses Problem in der SD? Haben Sie nicht mehr als hundert davon, die noch nicht verschlossen sind?
 

Vasiliy Pushkaryov:
В СД есть заявка по этой проблеме?

Support-Team2018.01.24 07:13

Sie müssen bedenken, dass Windows (und auch Unix) noch nie ein Echtzeitbetriebssystem war. Dies bedeutet, dass die Zeitmessung in einem solchen System keine Priorität hat und Ungenauigkeiten zulässt.

Zweitens basiert der Zeitgeber im System auf Nachrichten und deren Warteschlangen. In einer Windanwendung werden alle Nachrichten im Hauptthread verarbeitet. Sie werden sequentiell verarbeitet. Mit allen Konsequenzen.

In Ihrem Fall sollten Sie eine kritische Zeitstichprobe wählen. Wenn Sie den kleinsten Wert - 1 Millisekunde - wählen, müssen Sie damit rechnen, dass Sie 1000 Mal mehr Zeit für die Erzeugung, den Abruf und die Verarbeitung von Nachrichten verschwenden, als wenn Sie einen Wert von 1000 msec wählen. Suchen Sie also nach einem vernünftigen Kompromiss.

Haben Sie nicht noch mehr als hundert davon offen?

Ja.

 

fxsaber:

Versucht, die Synchronisierung wie folgt durchzuführen

Funktioniert nicht. Und ich habe schlechte Gedanken gegenüber MT5 lag. Sehen Sie selbst, wie sich Ihr Skript mit diesen Änderungen verhalten wird.

Ich habe es mit Ihrem Code versucht, aber es hakt immer noch. Warten wir darauf, dass sich mehr Leute oder einflussreichere Mitarbeiter des Unternehmens damit befassen, denn SD schreibt, dass Verzögerungen die Norm sind.


 
Vasiliy Pushkaryov:

Ich habe es mit Ihrem Code versucht, aber er hinkt immer noch hinterher. Wir werden darauf warten, dass mehr Leute oder einflussreichere Mitarbeiter des Unternehmens darauf aufmerksam werden, da die SD schreibt, dass Verzögerungen die Norm sind.

Nun, es scheint logisch, in der Market Watch die Zeit des letzten Ticks auf ein beliebiges Symbol, und im Symbol-Fenster - die Zeit des Ticks auf das Symbol. Deshalb gibt es Unstimmigkeiten, weil die Zecken nicht zur gleichen Zeit kommen.

 
Vitaly Muzichenko:

Nun, es scheint Sinn zu machen, in der Marktübersicht die Zeit des letzten Ticks für ein beliebiges Symbol, und im Symbolfenster - die Zeit des Ticks für das Symbol. Deshalb gibt es Unstimmigkeiten, weil die Zecken nicht zur gleichen Zeit kommen.

TimeCurrent - siehe Hilfe.

 
fxsaber:

TimeCurrent - siehe Hilfe.

Ja, das stimmt: die neueste Serverzeit. Kein Tick - keine Zeit, aber es gibt immer einen Tick in der Marktübersicht für ein Paar, so dass die Zeit nicht mit der Zeit auf dem Symbol übereinstimmt, wo der Tick "vor langer Zeit" war.

 
Vitaly Muzichenko:

Das ist richtig: die neueste Serverzeit. Kein Tick - keine Zeit, aber es gibt immer einen Tick in der Marktübersicht für ein Paar, so dass die Zeit nicht mit der Zeit auf dem Symbol übereinstimmt, wo der Tick "vor langer Zeit" war.

TimeCurrent gibt für jedes MQL-Prog die gleichen Werte zu jedem beliebigen Zeitpunkt aus.

 
Vitaly Muzichenko:

Das ist richtig: die neueste Serverzeit. Kein Tick - keine Zeit, aber es gibt immer einen Tick in der Marktübersicht für ein Paar, so dass die Zeit nicht der Zeit auf dem Symbol entspricht, wo der Tick "vor langer Zeit" war

Daran habe ich mich auch erinnert. Aber der Verweis dort hinzugefügt:

"In anderen Fällen (Aufruf in den Handlern OnInit(), OnDeinit(), OnTimer() usw.) ist dies die Ankunftszeit der letzten Notierung für jedes im Fenster Market Watch verfügbare Symbol, dieselbe Zeit, die im Titel dieses Fensters angezeigt wird."

Im Code ist es OnTimer mit einem Intervall von 0,5 Sekunden. Wie Sie im obigen Screenshot sehen können, kann ich leicht manuell auf PrintScreen abfangen, wenn die im Fenstertitel angezeigte Zeit nicht mit TimeCurrent() übereinstimmt.

 
Vasiliy Pushkaryov:

Daran habe ich mich auch erinnert. Aber da kam die Hilfe hinzu:

"In anderen Fällen (Aufruf in den Handlern OnInit(), OnDeinit(), OnTimer() usw.) ist dies die Zeit des Eintreffens der letzten Notierung eines beliebigen im Fenster Market Watch verfügbaren Symbols, die gleiche Zeit, die im Titel dieses Fensters angezeigt wird."

Die Hilfe hat ursprünglich gelogen:

ImOnTick()-Handler gibt diese Funktion die Ankunftszeit des behandelten Ticks zurück

Das ist natürlich nicht wahr. Das Drehbuch, um sicher zu sein
void OnTick()
{
  Print(TimeCurrent());
  
  Sleep(10000);

  Print(TimeCurrent());  
}
 
fxsaber:

Das Zertifikat hat zunächst gelogen:

Das war es sicher nicht. Ein Skript, das sicherstellt, dass
Es ist nicht ganz klar, was hier falsch ist.
Grund der Beschwerde: