![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Veuillez envoyer ici les instructions sur la façon d'ouvrir un compte réel chez BCS.
Pour éviter d'avoir à fouiller à chaque fois, je l'ai mis sur mon profil.
Alexey Kozitsyn:
Merci, je l'ai déjà fait moi-même.Спасиб
En faisant une correspondance, il y a des différences, mais pas significatives.
A mon avis, la fonction d'enregistrement des ticks des ordres dans l'historique ne fonctionne pas correctement (les transactions sont OK).
Je vais faire 300 lignes et poster le fichier de comparaison.
Ajouté
Vérifiez, j'ai peut-être fait une erreur.
A fonctionné avec précision à 10h00 et à 14h05.
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
Ajouté
Je pense que je vais supprimer le BR pour que tout se passe automatiquement pendant 3 mois :)
C'est donc ça.
Et la session du matin et après les deux effacements.
Un travail minutieux a été effectué. Puisque la synchronisation temporelle utilisant la méthode suggérée est basée sur la prise en compte de la valeur ping, j'ai une question.
En demandant l'identifiant TERMINAL_PING_LAST, le terminal donne (selon la documentation MQL) la"Dernière valeur connue du ping vers le serveur de commerce en microsecondes".
Qu'est-ce que c'est, sa valeur est-elle stable et quelle est sa taille ? Pendant de nombreuses années, j'ai vu cette caractéristique dans les fichiers journaux, mais maintenant je peux voir les pings dans la liste des serveurs directement dans le terminal. Et ils sont très stables. Qu'est-ce que c'est ?
Seulement deux variantes que je peux imaginer.
1) Il s'agit d'une caractéristique du réseau utilisée par les routeurs pour analyser les chemins des paquets IP, qui est obtenue à l'aide du protocole de réseau ICMP et qui ne tient en fait compte que de la propagation du signal matériel. Dans le cas particulier des mesures de ping entre un ordinateur client et un serveur, cela signifie des allers-retours entre leurs NIC. Les paquets avec ce protocole n'atteignent généralement pas les applications, il n'est pas nécessaire https://ru.wikipedia.org/wiki/ICMP.
2. il double le temps de parcours du signal entre l'application sur le serveur et l'application sur le client.
Quelqu'un a une idée ?
Un travail minutieux a été effectué. Puisque la synchronisation temporelle utilisant la méthode suggérée est basée sur la prise en compte de la valeur ping, j'ai une question.
En demandant l'identifiant TERMINAL_PING_LAST, le terminal donne (selon la documentation MQL) la"Dernière valeur connue du ping vers le serveur de commerce en microsecondes".
Qu'est-ce que c'est, sa valeur est-elle stable et quelle est sa taille ? Pendant de nombreuses années, j'ai vu cette caractéristique dans les fichiers journaux, mais maintenant je peux voir les pings dans la liste des serveurs directement dans le terminal. Et ils sont très stables. Qu'est-ce que c'est ?
Seulement deux variantes que je peux imaginer.
1) Il s'agit d'une caractéristique du réseau utilisée par les routeurs pour analyser les chemins des paquets IP, qui est obtenue à l'aide du protocole de réseau ICMP et qui ne tient en fait compte que de la propagation du signal matériel. Dans le cas particulier des mesures de ping entre un ordinateur client et un serveur, cela signifie des allers-retours entre leurs NIC. Les paquets avec ce protocole n'atteignent généralement pas les applications, il n'est pas nécessaire https://ru.wikipedia.org/wiki/ICMP.
2. il double le temps de parcours du signal entre l'application sur le serveur et l'application sur le client.
Quelqu'un a une idée ?
Seuls les développeurs peuvent répondre à cette question avec certitude.
Je me basais sur le second.
>Cela représente le double du temps de parcours du signal entre l'application sur le serveur et l'application sur le client.
C'est donc ça.
Et la session du matin et après les deux effacements.
Tout fonctionne "comme sur des roulettes" :)
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
Ajouté
J'attends juste que les enchères commencent à 19-05.
Tout fonctionne "comme sur des roulettes" :)
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
Ajouté
J'attends juste que les enchères commencent à 19-05.
Ajouté
Pour Sergey
https://www.mql5.com/ru/forum/166646
Juste pour le plaisir, allumez-le si vous le voulez bien, voyons avec quelle précision l'heure est synchronisée :
//| 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);
}
//+------------------------------------------------------------------+