FORTS. Questions relatives à l'application de la loi - page 107

 
Aleksey Vyazmikin:

Le problème est que toutes les preuves ne peuvent provenir que du courtier ou de la bourse, ce qui signifie que je ne pourrai pas les obtenir. Je vais donc continuer à gérer la situation pour l'instant.

J'ai reçu une réponse du courtier

"

Bonjour Alexey Vyacheslavovich ! La réponse des développeurs -

On dirait des retards de réseau du côté client, voici comment s'est déroulée l'exécution du côté serveur de négociation :

"

D'après ce que je comprends du journal :

1. Le temps d'exécution est approximativement le même

2. l'information d'exécution provenait du serveur et était traitée par le programme avec un délai de 3 secondes

Parler d'un retard de 3 secondes de ma part semble assez étrange, car mon internet est assez bon jusqu'au routeur sur le fil, le canal n'était pas surchargé. Les cœurs de l'ordinateur n'étaient pas chargés à 100%, mais peut-être que certains d'entre eux l'étaient.

Puis il s'avère que :

1. Les développeurs n'ont pas prévu une gestion appropriée des priorités des tâches (threads) qui doivent être traitées en premier par le CPU et le noyau MT5 aurait pu être forcé à toujours occuper le noyau CPU le moins chargé. Et à une charge de 100 %, réduisez la priorité d'exécution du calcul pour les indicateurs et autres codes utilisateurs.

2) Les journaux de MT5 ne sont pas fiables.

Oui, maintenant vous ne pouvez plus faire confiance à personne.

La punition pour ce qui a été fait, en Russie, n'a jamais été à la hauteur.

Vous pouvez voler une boîte d'allumettes et aller en prison pour 3 ans, mais si vous volez des allumettes par wagon entier,

vous n'aurez rien !

Selon les journaux de votre MT5 :

2018.04.25 16:49:28.972 Trades  '***': exchange buy 10.00 Si-6.18 at market                                       - терминал отдал приказ серверу МТ5 на покупку
2018.04.25 16:49:29.186 Trades  '***': accepted exchange buy 10.00 Si-6.18 at market                              - сервер МТ5 проверил ордер и утвердил его правильность 
2018.04.25 16:49:29.387 Trades  '***': exchange buy 10.00 Si-6.18 at market placed for execution                  - сервер МТ5 отправмл ордер на Биржу
2018.04.25 16:49:30.002 Trades  '***': order #87849076 buy 10.00 / 10.00 Si-6.18 at market done in 1030.179 ms    - сервер МТ5 рапортовал, что ордер исполнился

et ceux-ci sont

2018.04.25 16:49:30.405 Trades  '***': deal #48508923 buy 1.00 Si-6.18 at 62788 done (based on order #87849076)
2018.04.25 16:49:30.819 Trades  '***': deal #48508924 buy 1.00 Si-6.18 at 62788 done (based on order #87849076)
2018.04.25 16:49:31.032 Trades  '***': deal #48508925 buy 5.00 Si-6.18 at 62788 done (based on order #87849076)
2018.04.25 16:49:31.635 Trades  '***': deal #48508926 buy 1.00 Si-6.18 at 62789 done (based on order #87849076)
2018.04.25 16:49:32.058 Trades  '***': deal #48508927 buy 1.00 Si-6.18 at 62789 done (based on order #87849076)
2018.04.25 16:49:32.264 Trades  '***': deal #48508928 buy 1.00 Si-6.18 at 62789 done (based on order #87849076)

est juste une transcription des échanges.

Ajouté par

A partir des journaux du SERVEUR montre que le noyau de l'échange, tous exécutés instantanément, des retards de 3-4 ms, ce retard du courtier au noyau de l'échange, parce que les transactions dans Plaza 2 sont un flux distinct,

qui est obtenu par le serveur n'est pas en temps réel, mais en "tranches".

En bref, vous devez secouer le courtier et les développeurs.

La "latence du réseau" ne dépend pas de vous ou de moi, mais d'eux !

Ajouté

Chaque matin (et parfois l'après-midi), pendant quelques secondes, la commande n'est pas exécutée.

2018.04.26 10:02:35.202 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:36.208 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:37.222 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:38.236 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:39.250 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:40.263 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:41.277 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:42.291 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:43.305 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:44.319 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:45.333 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:46.348 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:47.362 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:48.376 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:49.390 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
 
Aleksey Vyazmikin:

J'ai reçu une réponse du courtier

Oui, j'ai pensé à la bourse.) 10ms pour exécuter un ordre. mais ce n'est pas 2 secondes de toute façon.
 
prostotrader:

Les "retards de réseau" ne sont pas avec vous et moi, ils le sont !

Ajouté

Chaque matin (et parfois l'après-midi), pendant quelques secondes, la commande n'est pas exécutée.

Ce que je veux savoir, c'est où est réglée l'heure, dans le journal de mon terminal, c'est l'heure de mon ordinateur et dans le journal, c'est l'heure du serveur MT5 ?

J'ai la synchronisation du temps - toutes les 10 minutes par le serveur approprié (ntp2.stratum2.ru), j'ai changé la batterie de ma carte mère, cela signifie que l'heure devrait être exacte. Mais sur l'écran, je vois souvent que le temps sur mon horloge est déjà passé, mais que la barre continue à s'agiter - c'est ça ? Le temps à l'échange est une sorte de gaucher ?

 
Aleksey Vyazmikin:

Je suis également intéressé par l'heure indiquée - dans mon terminal, dans le journal, c'est l'heure de mon ordinateur, et ils ont l'heure du serveur MT5 ?

Je synchronise simplement mon heure toutes les 10 minutes avec le serveur approprié (ntp2.stratum2.ru), j'ai changé la batterie de ma carte mère, c'est-à-dire que l'heure devrait être exacte. Mais sur l'écran, je vois souvent que le temps sur mon horloge est déjà passé, mais que la barre continue à s'agiter - c'est ça ? L'échange a une sorte de temps mort ?

Je ne sais pas comment MQ a mis en œuvre la synchronisation de l'heure du serveur MT5 avec l'heure d'Exchange.

Mais comme nous tradons sur le bmrz, donc peu importe l'heure de votre ordinateur ou du serveur MT5, ce qui est important c'est l'heure de la bourse !

La synchronisation doit être effectuée en utilisant l'heure de la bourse.

//+------------------------------------------------------------------+
//| Expert Check Market Time function                                |
//+------------------------------------------------------------------+
bool CheckMarketTime()
{
  sv_time.year = 0;
  TimeCurrent(sv_time); //Возвращает последнее известное время сервера
  if(sv_time.year > 0)
  {
    MqlDateTime cur_time;
    cur_time.year = 0;
    TimeTradeServer(cur_time); //Возвращает расчетное текущее время торгового сервера.
    if(cur_time.year > 0)
    {
      if((cur_time.day_of_week == int(FirstDay)) ||
         (cur_time.day_of_week == int(SecondDay))) return(false); //Проверка на выходные
      if(cur_time.day_of_week == sv_time.day_of_week)
      {
        ulong tr_time = sv_time.hour * 3600 + sv_time.min * 60 + sv_time.sec;
        if(((tr_time >= time_st_mon) && (tr_time < 50370)) ||  //10:00:01 - 13:59:30
           ((tr_time >= time_st_day) && (tr_time < 67470)) ||  //14:05:01 - 19:44:30 
           ((tr_time >= time_st_evn) && (tr_time < 85770)))    //19:05:01 - 23:49:30
        {
          return(true);
        }  
      }   
    }   
  }
  return(false);
} 
TimeCurrent(sv_time); //Возвращает последнее известное время сервера

C'est-à-dire queTimeCurrent() n'est PAS l'heure exacte.

TimeTradeServer(cur_time) ; //renvoie l'heure actuelle estimée du serveur de commerce.

Le TimeTradeServer n'est pas l'heure exacte

Le fait est que depuis l'année dernière, la Bourse diffuse TOUTES les informations nécessaires aux opérations de change,

jusqu'à certains calculs.

Dans la spécification du protocole Plaza 2, il est dit que

horloge de serveur table de service

Et voici à quoi sert cette table



A l'origine, mt5 "s'asseyait" sur p2gate de plaza 2, qui est "mort" et MQ a eu besoin d'une aide.

pour réécrire rapidement le serveur en CGate, mais tant qu'il est déjà écrit et fonctionne, pourquoi s'embêter ?

Ajouter-corriger quelque chose.

Ajouté

Le problème de latence est le résultat d'un grave bug.

Le terminal ne peut pas envoyer plus de 60 transactions en une seconde (c'est-à-dire 2 plaza, 2 logins).

Par de simples calculs, vous pouvez déterminer quelle "vitesse" devrait être le courtier qui

qui connecte le serveur МТ5 et la passerelle.

 
prostotrader:

Je ne sais pas comment MQ a mis en œuvre la synchronisation de l'heure du serveur MT5 avec l'heure d'Exchange.

Mais comme nous tradons sur bmrz, l'heure de votre ordinateur ou de votre serveur MT5 importe peu, ce qui est important c'est l'heure de la bourse !

La synchronisation doit être effectuée au moment de l'échange.

Et que se passe-t-il réellement ? Peut-être que l'Exchange dispose d'un serveur pour synchroniser l'heure des utilisateurs de PC ?

 
Aleksey Vyazmikin:

Que se passe-t-il réellement ? Peut-être que l'échange dispose d'un serveur pour synchroniser l'heure des PC des utilisateurs ?

J'ai ajouté l'information à mon message précédent.

 
Aleksey Vyazmikin:

Je suis également intéressé de savoir quelle heure il est - dans le journal de mon terminal, c'est l'heure de mon ordinateur, et ils ont l'heure du serveur MT5 ?

Quel est le résultat de ce script ?

#define  PRINT(A) Print(#A + " = " + (string)(A))

string TimeMscToString( const ulong time )
{
  return(TimeToString(time / 1000, TIME_DATE | TIME_SECONDS) + "." + IntegerToString(time % 1000, 3, '0'));
}

void OnStart()
{
  if (HistorySelect(0, LONG_MAX))
  {
    PRINT(TimeMscToString(HistoryDealGetInteger(48508923, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508924, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508925, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508926, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508927, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508928, DEAL_TIME_MSC)));
    
    PRINT(TimeMscToString(HistoryOrderGetInteger(87849076, ORDER_TIME_DONE_MSC)));
    PRINT(TimeMscToString(HistoryOrderGetInteger(87849076, ORDER_TIME_SETUP_MSC)));
  }
}
 
fxsaber:

Que donne ce script ?

2018.04.26 16:59:58.686 Test_sr (Si Splice,M15) arrK=0.2021591274299704

Qu'est-ce que c'est ?
 

 
Aleksey Vyazmikin:

2018.04.26 16:59:58.686 Test_sr (Si Splice,M15) arrK=0.2021591274299704

Qu'est-ce que c'est ?

Je ne sais pas, ça n'a rien à voir avec le script ci-dessus. Montrez-moi ce que cela donne sur le compte de trading où le problème s'est produit.