Markt geschlossen - Seite 6

 
fxsaber:

Sie sehen, dass der Zeitpunkt nur in diesen Situationen anders ist


Es wurde bereits mehrfach diskutiert, dass MqlTick den Tick nicht unverändert zurückgibt. dass es zwei Tickströme gibt - Angebot und Abschluss. Und dass sie in CopyTicks manchmal rückwirkend zusammengeführt werden, weil die Datenströme unsynchronisiert sind. Und dass die Zeitpunkte von MqlTick und CopyTicks möglicherweise nicht übereinstimmen.


Ist es wirklich möglich, dass 10 SEK. nicht übereinstimmen?

2017.09.22 11:18:38.257 Test_time (RTS-12.17,M1)        CopyTicks time = 11:18:27; SymbolInfoTick = 11:18:37
 
prostotrader:

Kann 10 SEC. nicht mithalten?

So etwas gibt es auf Metaquotes-Demo nicht.

 
fxsaber:

Das gibt es bei Metaquotes-Demo nicht.


Es ist ein Demo-Öffner, ich werde es mit dem echten Ding ausprobieren...

Hinzugefügt

Ja, es macht mehr Spaß, wenn es nicht echt ist.

2017.09.22 11:58:03.892 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:03
2017.09.22 11:58:03.922 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:03
2017.09.22 11:58:05.186 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:04
2017.09.22 11:58:06.110 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:05
2017.09.22 11:58:06.230 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:06.350 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:06.430 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:06.430 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:07.174 Test_time (Si-12.17,M1) CopyTicks time = 11:58:07; SymbolInfoTick = 11:58:07
 
prostotrader:

nicht im wirklichen Leben ist lustiger.

Millisekunden und andere Daten sind vorhanden.

 

Für den Moment haben wir uns für Folgendes entschieden

//bool CheckMarketTime(const string a_symbol)
bool CheckMarketTime()
{
  sv_time.year = 0;
  TimeTradeServer(sv_time);
  if(sv_time.year > 0)
  {
    if((sv_time.day_of_week == int(FirstDay)) ||                 //первый выходной
       (sv_time.day_of_week == int(SecondDay))) return(false);   //Второй выходной
    sv_time.year = 0;   
    TimeCurrent(sv_time);
    if(sv_time.year > 0)
    {   
      ulong cur_time = sv_time.hour * 3600 + sv_time.min * 60 + sv_time.sec;
      if(((cur_time >= time_st_mon) && (cur_time < 50370)) ||
         ((cur_time >= time_st_day) && (cur_time < 67470)) ||
         ((cur_time >= time_st_evn) && (cur_time < 85770)))
      {
        return(true);
      }
    }
  }
}
 

Eine gute Idee ist es, einfach die Server-(Börsen-)Zeit zu übersetzen

anstelle von TimeCurrent(), die dem letzten bekannten Kurs in Market Watch entnommen wird,

eine Funktion TimeServer() erstellen, die einfach die Zeit des Austauschs umrechnet.

Dann wird der TimeTradeServer() nicht benötigt.

Die beiden Funktionen sind ausreichend

TimeLocal() und TimeServer()

 
prostotrader:

Für den Moment habe ich beschlossen, es so zu machen

Erinnert an das Verhalten von TC in diesem Thread.

Перевод string в часы и минуты
Перевод string в часы и минуты
  • 2017.09.06
  • www.mql5.com
Когда встаёт задача задать во входных параметрах время в формате ЧЧ:ММ, приходится решать дилему: удобство пользователя при вводе значений или удоб...
 

Im Bild ist die Ausgabe auf dem Chart die TimeTradeServer() Funktion, die Zeit läuft schneller.
Wenn Sie TimeCurrent() ausgeben, handelt es sich um die Zeit der letzten Notierung des aktuellen Symbols und daher auch oft um Inkonsistenz.
Wie kann ich die letzte Zeit des letzten Kurses von Market Watch erhalten, um die Zeit synchron mit der Zeit in Market Watch auszugeben?



 
Vasiliy Pushkaryov:

Wie kann ich die letzte Zeit des letzten Kurses von Market Watch erhalten, um die Zeit synchron mit der Zeit in Market Watch auszugeben?

ZeitAktuell.

 
fxsaber:

ZeitAktuell.

Ja, es ist auch nicht sehr gut. Ich verwende OnTimer, um einmal pro Sekunde auszugeben, und habe mich entschlossen, die Nachrichtenausgabe ebenfalls in den Druck einzubeziehen. Ich kann sehen, dass dort zweimal die gleiche Zeit vergeht. Jetzt habe ich nur in der Hilfe gesehen, dass TimeCurrent für OnTimer " die Zeit des letzten Kurses für ein beliebiges im Market Watch-Fenster verfügbares Symbol ist, die gleiche Zeit, die in der Kopfzeile dieses Fensters angezeigt wird".

D.h. das ist es, was gebraucht wird. Theoretisch. Aber in der Praxis stimmt da etwas nicht ganz.



Grund der Beschwerde: