Synchronisierung der Windows-Ortszeit mit dem MT5-Server - Seite 14

 
Alexey Kozitsyn:
Bitte senden Sie hier die Anleitung zur Eröffnung eines echten Kontos bei BCS.
Um nicht jedes Mal suchen zu müssen, habe ich es in mein Profil aufgenommen.
 
fxsaber:
Damit ich nicht jedes Mal herumwühlen muss, habe ich sie in mein Profil aufgenommen.
Ich danke Ihnen.
 

Alexey Kozitsyn:
Спасиб

Danke, ich habe es bereits selbst getan.
Dateien:
 

Ich mache einen Abgleich, es gibt Unterschiede, aber keine großen.

Meiner Meinung nach funktioniert die Funktion der Aufzeichnung von Order-Ticks in der Historie nicht richtig (die Trades sind OK).

Ich werde 300 Zeilen erstellen und die Vergleichsdatei veröffentlichen.

Hinzugefügt

Überprüfen Sie es, ich könnte einen Fehler gemacht haben.

Dateien:
Book2.zip  671 kb
 
prostotrader:

Hat sowohl um 10:00 Uhr als auch um 14:05 Uhr genau funktioniert.

2017.01.26 10:00:00.000 Time_sync_forts (URKA-3.17,H1)  Local time sync is done. Symbol = RTS-3.17 Sync hour = 10 Sync min = 0 Sync sec = 0 Sync ms = 0
2017.01.26 14:05:00.005 Time_sync_forts (URKA-3.17,H1)  Local time sync is done. Symbol = RTS-3.17 Sync hour = 14 Sync min = 5 Sync sec = 0 Sync ms = 5

Hinzugefügt

Ich denke, ich werde den BR entfernen, so dass alles automatisch für 3 Monate geschieht :)

Und haben Sie eine Idee, wie man die Abendabrechnung "schrauben" kann, da die Auktion um 19.00 Uhr und dann um 19.05 Uhr beginnen kann?
 

Das war's also.

Und die Vormittagssitzung und nach beiden Clears.

Dateien:
 

Es wurde eine Menge sorgfältige Arbeit geleistet. Da die Zeitsynchronisierung mit der vorgeschlagenen Methode auf der Berücksichtigung des Ping-Wertes beruht, habe ich eine Frage.

Durch Abfrage der Kennung TERMINAL_PING_LAST gibt das Terminal (laut MQL-Dokumentation) den"letzten bekannten Wert des Pings zum Handelsserver in Mikrosekunden" an.

Worum handelt es sich dabei, ist sein Wert stabil und wie groß ist er? Viele Jahre lang habe ich dieses Merkmal in den Protokolldateien gesehen, aber jetzt kann ich Pings in der Liste der Server direkt im Terminal sehen. Und sie sind sehr stabil. Was ist das?

Es gibt nur zwei Varianten, die ich mir vorstellen kann.

1) Es handelt sich um eine Netzwerkcharakteristik, die von Routern zur Analyse von IP-Paketpfaden verwendet wird. Sie wird mit Hilfe des ICMP-Netzwerkprotokolls ermittelt und berücksichtigt eigentlich nur die Ausbreitung von Hardwaresignalen. Im speziellen Fall der Ping-Messungen zwischen einem Client-Computer und einem Server bedeutet dies, dass die Daten zwischen den beiden NICs hin und her gehen. Pakete mit diesem Protokoll erreichen die Anwendungen in der Regel nicht, es ist nicht notwendig https://ru.wikipedia.org/wiki/ICMP.

2. Es verdoppelt die Signallaufzeit von der Anwendung auf dem Server zur Anwendung auf dem Client.

Hat jemand eine Ahnung?

ICMP — Википедия
  • ru.wikipedia.org
ICMP Название: Уровень (по модели OSI): Семейство: Спецификация: ICMP (англ.   — протокол межсетевых управляющих сообщений[1]) — сетевой протокол, входящий в стек протоколов TCP/IP. В основном ICMP используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных, например, запрашиваемая услуга...
 
Vladimir:

Es wurde eine Menge sorgfältige Arbeit geleistet. Da die Zeitsynchronisierung mit der vorgeschlagenen Methode auf der Berücksichtigung des Ping-Wertes beruht, habe ich eine Frage.

Durch Abfrage der Kennung TERMINAL_PING_LAST gibt das Terminal (laut MQL-Dokumentation) den"letzten bekannten Wert des Pings zum Handelsserver in Mikrosekunden" an.

Worum handelt es sich dabei, ist sein Wert stabil und wie groß ist er? Viele Jahre lang habe ich dieses Merkmal in den Protokolldateien gesehen, aber jetzt kann ich Pings in der Liste der Server direkt im Terminal sehen. Und sie sind sehr stabil. Was ist das?

Es gibt nur zwei Varianten, die ich mir vorstellen kann.

1) Es handelt sich um eine Netzwerkcharakteristik, die von Routern zur Analyse von IP-Paketpfaden verwendet wird. Sie wird mit Hilfe des ICMP-Netzwerkprotokolls ermittelt und berücksichtigt eigentlich nur die Ausbreitung von Hardwaresignalen. Im speziellen Fall der Ping-Messungen zwischen einem Client-Computer und einem Server bedeutet dies, dass die Daten zwischen den beiden NICs hin und her gehen. Pakete mit diesem Protokoll erreichen die Anwendungen in der Regel nicht, es ist nicht notwendig https://ru.wikipedia.org/wiki/ICMP.

2. Es verdoppelt die Signallaufzeit von der Anwendung auf dem Server zur Anwendung auf dem Client.

Hat jemand eine Ahnung?

Nur die Entwickler können diese Frage mit Sicherheit beantworten.

Ich habe mich auf das zweite gestützt.

>Dies entspricht der doppelten Signallaufzeit von der Anwendung auf dem Server zur Anwendung auf dem Client.

 
prostotrader:

Das war's also.

Und die Vormittagssitzung und nach beiden Clears.

Alles funktioniert "wie am Schnürchen" :)

2017.01.30 10:00:00.000 Time_symc_forts (URKA-3.17,H1)  Local time sync is done. Symbol = Si-3.17 Sync hour = 10 Sync min = 0 Sync sec = 0 Sync ms = 0
2017.01.30 14:05:00.002 Time_symc_forts (URKA-3.17,H1)  Local time sync is done. Symbol = Si-3.17 Sync hour = 14 Sync min = 5 Sync sec = 0 Sync ms = 2
2017.01.30 19:00:00.003 Time_symc_forts (URKA-3.17,H1)  Local time sync is done. Symbol = Si-3.17 Sync hour = 19 Sync min = 0 Sync sec = 0 Sync ms = 3

Hinzugefügt

Ich warte nur darauf, dass das Bieten um 19-05 Uhr beginnt.

Market closed
Market closed
  • www.mql5.com
Ребята разработчики! Ну когда же Вы синхронизируете время терминала с временем Биржи...
 
prostotrader:

Alles funktioniert "wie am Schnürchen" :)

2017.01.30 10:00:00.000 Time_symc_forts (URKA-3.17,H1)  Local time sync is done. Symbol = Si-3.17 Sync hour = 10 Sync min = 0 Sync sec = 0 Sync ms = 0
2017.01.30 14:05:00.002 Time_symc_forts (URKA-3.17,H1)  Local time sync is done. Symbol = Si-3.17 Sync hour = 14 Sync min = 5 Sync sec = 0 Sync ms = 2
2017.01.30 19:00:00.003 Time_symc_forts (URKA-3.17,H1)  Local time sync is done. Symbol = Si-3.17 Sync hour = 19 Sync min = 0 Sync sec = 0 Sync ms = 3

Hinzugefügt

Ich warte nur darauf, dass die Versteigerung um 19-05 Uhr beginnt.

Hinzugefügt

Für Sergej

https://www.mql5.com/ru/forum/166646

Schalten Sie sie doch einfach mal ein, um zu sehen, wie genau die Zeit synchronisiert wird:

//+------------------------------------------------------------------+
//|                                            Delta Time Server.mq5 |
//+------------------------------------------------------------------+
struct _SYSTEMTIME
  {
   short             year;
   short             mon;
   short             day_of_week;
   short             day;
   short             hour;
   short             min;
   short             sec;
   short             msc;
  };

_SYSTEMTIME loc_time;

#import "kernel32.dll"
void GetLocalTime(_SYSTEMTIME &sys_time);
bool SetLocalTime(_SYSTEMTIME &sys_time);
#import
//---
MqlTick tick;
MqlDateTime sv_time;
int tick_msc,ping,time_server,time_local,delta=0,mdelta[10],n=0;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   loc_time.year=0;
   GetLocalTime(loc_time);
   if(loc_time.year>0)
     {
      if(!SymbolInfoTick(_Symbol,tick)) { Print("error SymbolInfoTick: ",GetLastError()); return; }
      ping=TerminalInfoInteger(TERMINAL_PING_LAST)/1000;
      tick_msc=int(tick.time_msc%1000);
      TimeToStruct(tick.time,sv_time);

      time_server=(sv_time.sec+sv_time.min*60)*1000+tick_msc;
      time_local=(loc_time.sec+loc_time.min*60)*1000+loc_time.msc;

      delta=AvgDelta(time_server-time_local);
      
     Print(
           "ping : ",ping,
           " | time server: ",sv_time.hour,":",sv_time.min,":",sv_time.sec,",",tick_msc,
           " | time local: ",loc_time.hour,":",loc_time.min,":",loc_time.sec,",",loc_time.msc,
           " | delta ms: ",delta,
           " | min max delta: ",mdelta[ArrayMaximum(mdelta)]," : ",mdelta[ArrayMinimum(mdelta)],
           "");
     }
  }
//+------------------------------------------------------------------+
int AvgDelta(int d)
  {
   int avgd=0;
   mdelta[n]=d;
   n++; if(n>=10) n=0;
   for(int i=0;i<10;i++) avgd+=mdelta[i];
   return(avgd/10);
  }
//+------------------------------------------------------------------+