Tiki en temps réel - page 18

 
prostotrader:

Pendant que le débat se poursuit, j'ai fait une autre expérience.

Je veux dire, pendant l'initialisation, je le chronomètre d'une microseconde,

et avant chaque impression, je perce à nouveau le temps.

Idéalement, il devrait en être ainsi

Mais très souvent, il en est ainsi (expositions logarithmiques) :

Mais ça ne colle pas avec 4 secondes...

oh, ils ont finalement trouvé comment le chronométrer, le progrès !)

s.s. pour confirmer que le temps n'est pas exactement écrit sur le disque je vais vous donner un test simple, entre les opérations dans le Test sont effectués quelques calculs, prenant en moyenne 7 microsecondes.

En même temps, nous voyons qu'avec le même temps en microsecondes, les impressions sont sorties en dizaines + telles opérations, et les impressions sont sorties chaque microseconde. Je pense que tout cela a un sens.

ap : si vous placez la première impression juste avant la seconde, alors le delta est déjà de 0-1, donc l'impression est la plus longue dans cette chaîne.

   for(int count=0;count<10000;count++) 
     { 
         ul=GetMicrosecondCount();         
         Print("MicrosecondCount ",ul);
         Test(); 
         ul_cur=GetMicrosecondCount(); 
         Print("MicrosecondCount ", ul_cur, " delta ",ul_cur-ul);
     }     



 
Aleksey Mavrin:

Oh, ils ont enfin trouvé comment le chronométrer, le progrès !).

Qu'est-ce qui vous arrive, monsieur ? Tu n'as rien de mieux à faire ?

C'est là que tout a commencé !

 
prostotrader:

N'est-ce pas, monsieur ? Tu n'as rien de mieux à faire ?

C'est ici que tout a commencé !

Ajouté par

De plus, ne savez-vous pas queGetMicrosecondCount() a une erreur pouvant aller jusqu'à 16 ms ! :)

La fonction qui donne les microsecondes, a une erreur allant jusqu'à 16 millisecondes, c'est-à-dire que l'erreur est d'un ordre de grandeur supérieur à son nom, bon, bon)) pouvez-vous aussi confirmer avec un pruf ?

 
Aleksey Mavrin:

Une fonction qui donne des microsecondes a une erreur allant jusqu'à 16 millisecondes, c'est-à-dire une erreur d'un ordre de grandeur supérieur à son nom, bon, bon)) pouvez-vous aussi confirmer avec un pruff ?

Je me suis trompé.

 
prostotrader:

Mauvais

Eh bien, bravo à vous pour avoir admis l'erreur tout de suite ;)

Le décalage de 4 secondes est très probablement vrai, à un moment donné, le terminal s'est embrouillé, cela semble se produire lorsque l'antivirus commence à scanner, etc. cas.

Et 4 secondes signifie que Print est apparu 4 secondes plus tard dans le cache du journal, pas que OnBook est apparu 4 secondes plus tard (même si je pense que c'est possible en fonction de la façon dont l'ordinateur est chargé à ce moment-là).

s.w. car Print va d'abord dans la file d'attente et de là dans le journal.
 
Aleksey Mavrin:

Eh bien, bravo à vous pour avoir admis l'erreur tout de suite ;)

Le décalage de 4 secondes est probablement vrai , à un moment donné, le terminal s'est embrouillé, cela semble arriver lorsque l'antivirus commence à scanner, etc.

Et 4 secondes signifie exactement que Print est apparu 4 secondes plus tard dans le cache du journal, pas que OnBook est apparu 4 secondes plus tard (bien que je pense que ce soit possible en fonction de la façon dont vous chargez l'ordinateur à ce moment-là).

s.w. car Print va d'abord dans la file d'attente et de là dans le journal.

Oui, c'est possible.

 
Aleksey Mavrin:

Et 4 secondes signifie exactement que Print est apparu 4 secondes plus tard dans le cache du journal, et non que OnBook est apparu 4 secondes plus tard (bien que je suppose que cela soit possible en fonction de la façon dont l'ordinateur est chargé à ce moment-là).

s.w. L'impression va d'abord dans la file d'attente et de là dans le journal.

Eh bien oui, qu'en est-il ?

Un graphique fonctionnait en OnBook et l'autre en OnTick.

//+------------------------------------------------------------------+
//|                                                   Ticks_test.mq5 |
//|                                      Copyright 2019 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
bool is_book;
enum ENUM_BOOK_OR_TICK
{
        USE_BOOK,       // Use OnBookEvent
        USE_TICK        // Use OnTick
};

input ENUM_BOOK_OR_TICK Mode = USE_BOOK;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  if(Mode == USE_BOOK) is_book = MarketBookAdd(Symbol());
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  if(Mode == USE_BOOK)
  {
    if(is_book == true) MarketBookRelease(Symbol());
  }  
}
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
  if((Symbol() != symbol) || (Mode != USE_BOOK)) return;
  Print(__FUNCTION__, "; Time: ", GetTickCount(), " ms");
}
void OnTick()
{
  if(Mode != USE_TICK) return;
  Print(__FUNCTION__, "; Time: ", GetTickCount(), " ms");
}
//+------------------------------------------------------------------+


56 ms de différence entre OnTick et OnBook

et la même différence en impression :)

2020.02.04 22:37:48.212 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205482644 ms
2020.02.04 22:37:49.268  Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 20548369 0 ms

2020.02.04 22:37:50.354 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205484782 ms
2020.02.04 22:37:50.354 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205484782 ms

2020.02.04 22:37:51.064 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205485484 ms
2020.02.04 22:37:51.064 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205485484 ms

2020.02.04 22:37:52.833 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205487262 ms
2020.02.04 22:37:52.833 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205487262 ms

2020.02.04 22:38:01.932 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205496357 ms
2020.02.04 22:38:01.932 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205496357 ms

2020.02.04 22:38:05.310 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205499742 ms
2020.02.04 22:38:05.310 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205499742 ms

2020.02.04 22:38:07.706 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205502129 ms
2020.02.04 22:38:07.706 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205502129 ms

2020.02.04 22:38:09.426 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205503845 ms
2020.02.04 22:38:09.426 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205503845 ms

2020.02.04 22:38:10.035 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205504453 ms
2020.02.04 22:38:10.035 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205504453 ms

2020.02.04 22:38:14.225 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205508650 ms
2020.02.04 22:38:14.225 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205508650 ms

2020.02.04 22:38:14.252 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205508681 ms
2020.02.04 22:38:14.252 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205508681 ms

2020.02.04 22:38:14.593 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205509024 ms
2020.02.04 22:38:14.593 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205509024 ms

2020.02.04 22:38:15.105 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205509523 ms
2020.02.04 22:38:15.105 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205509523 ms

2020.02.04 22:38:15.584 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205510007 ms
2020.02.04 22:38:16.226 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205510647 ms

2020.02.04 22:38:16.232 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205510662 ms
2020.02.04 22:38:16.232 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205510662 ms

2020.02.04 22:38:21.476 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205515904 ms
2020.02.04 22:38:21.477 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205515904 ms

2020.02.04 22:38:22.403 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205516824 ms
2020.02.04 22:38:22.404 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205516824 ms

2020.02.04 22:38:23.582 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205518010 ms
2020.02.04 22:38:23.583 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205518010 ms

2020.02.04 22:38:24.707 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205519133 ms
2020.02.04 22:38:24.708 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205519133 ms

2020.02.04 22:38:30.962 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205525389 ms
2020.02.04 22:38:30.962 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205525389 ms

2020.02.04 22:38:31.188 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205525607 ms
2020.02.04 22:38:31.189 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205525607 ms

2020.02.04 22:38:31.989 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205526418 ms
2020.02.04 22:38:31.989 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205526418 ms

2020.02.04 22:38:32.048 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205526481 ms
2020.02.04 22:38:32.048 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205526481 ms

2020.02.04 22:38:32.140 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205526559 ms
2020.02.04 22:38:32.140 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205526559 ms

2020.02.04 22:38:32.153 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205526574 ms
2020.02.04 22:38:32.153 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205526574 ms

2020.02.04 22:38:32.589 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205527011 ms
2020.02.04 22:38:32.590 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205527011 ms

2020.02.04 22:38:39.930 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205534359 ms
2020.02.04 22:38:39.931 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205534359 ms

2020.02.04 22:38:40.009 Ticks_test_2 (GOLD-3.20,M1)     OnTick; Time: 205534437 ms
2020.02.04 22:38:40.009 Ticks_test_2 (GOLD-3.20,M1)     OnBookEvent; Time: 205534437 ms
 
prostotrader:

Bon, et ça ?

Un graphique fonctionnait en OnBook et l'autre en OnTick.


56 ms de différence entre OnTick et OnBook

Et la même différence en impression :)

Encore une fois, je ne suis pas tout à fait sûr, car j'ai sommeil et les doutes sont le lot des personnes expérimentées et sages).

Mais je pense que c'est juste élémentaire queSymbol() mange du temps ;))

tellement vrai test - check - je suis trop paresseux)

c'est un long globe. perm.

void OnBookEvent(const string &symbol)
{
ul=GetTickCount();
  if((Symbol() != symbol) || (Mode != USE_BOOK)) return;
  Print(__FUNCTION__, "; Time: ", ul, " ms");
}
void OnTick()
{
ul=GetTickCount();
  if(Mode != USE_TICK) return;
  Print(__FUNCTION__, "; Time: ", ul, " ms");
}
//+------------------------------------------------------------------+
 
Aleksey Mavrin:

Encore une fois, je ne suis pas sûr, parce que j'ai sommeil et que les doutes sont le lot des personnes expérimentées et sages).

Mais je pense que c'est juste élémentaire queSymbol() bouffe du temps ;)))

tellement vrai test - check - je suis trop paresseux)

c'est un long globe. perm.

:), bonne nuit

 
Aleksey Mavrin:

Encore une fois, je ne suis pas sûr, car j'ai sommeil et les doutes sont le lot des expérimentés et des sages).

Mais je pense que c'est juste élémentaire queSymbol() bouffe du temps ;)))

tellement vrai test - check - je suis trop paresseux)

c'est un long globe. perm.

string gSymbol;
int OnInit()
{
gSymbol = Symbol(); 
return 0;
}

void OnBookEvent(const string &symbol)
{
ul=GetTickCount();
  if((Symbol() != symbol) || (Mode != USE_BOOK)) return;
  Print(__FUNCTION__, "; Time: ", ul, " ms");
}
void OnTick()
{
ul=GetTickCount();
  if((Symbol() != gSymbol) || (Mode != USE_TICK)) return;  // можно попробовать привести оба обработчика к одинаковому коду
  Print(__FUNCTION__, "; Time: ", ul, " ms");
}
//+------------------------------------------------------------------+

Alternativement, pour éliminer les inquiétudes que Symbol() mange du temps, laissez les deux gestionnaires "se nourrir" également.

Raison: