Tiki in Echtzeit - Seite 18

 
prostotrader:

Während der Debatte habe ich ein weiteres Experiment durchgeführt.

Ich meine, bei der Initialisierung wird die Zeit um eine Mikrosekunde verkürzt,

und vor jedem Druck bohre ich die Zeit erneut.

Idealerweise sollte es so sein

Aber sehr oft stellt sich das so heraus (Log-Belichtungen):

Aber das passt nicht zu den 4 Sekunden...

Oh, endlich haben sie herausgefunden, wie man es zeitlich einteilt, ein Fortschritt!)

s.s. als Bestätigung, dass die Zeit nicht genau auf die Festplatte geschrieben wird, gebe ich Ihnen einen einfachen Test, zwischen den Operationen im Test sind einige Berechnungen durchgeführt, die im Durchschnitt 7 Mikrosekunden.

Gleichzeitig sehen wir, dass mit der gleichen Zeit in Mikrosekunden Drucke in Zehner- und Zehnerschritten ausgegeben werden, und dass Drucke jede Mikrosekunde ausgegeben werden. Ich denke, das macht alles Sinn.

ap: Wenn Sie den ersten Ausdruck direkt vor den zweiten setzen, dann ist das Delta bereits 0-1, also ist der Ausdruck der längste in dieser Kette.

   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, sie haben endlich herausgefunden, wie man es zeitlich einteilt, ein Fortschritt!)

Was ist mit Ihnen los, Sir? Hast du denn nichts Besseres zu tun?

Damit hat alles angefangen!

 
prostotrader:

Nicht wahr, Sir? Hast du denn nichts Besseres zu tun?

Hier hat alles angefangen!

Hinzugefügt von

Und wissen Sie nicht, dassGetMicrosecondCount() einen Fehler von bis zu 16 ms hat! :)

Die Funktion, die Mikrosekunden angibt, hat einen Fehler von bis zu 16 Millisekunden, d.h. der Fehler ist um eine Größenordnung höher als sein Name, na ja)) können Sie das auch mit einem Pruf bestätigen?

 
Aleksey Mavrin:

Eine Funktion, die Mikrosekunden angibt, hat einen Fehler von bis zu 16 Millisekunden, d.h. einen Fehler, der um eine Größenordnung größer ist als sein Name, nun ja)) können Sie auch mit einem Pruff bestätigen?

Falsch verstanden

 
prostotrader:

Falsch

Nun, Hut ab, dass Sie den Fehler sofort zugeben ;)

Die Verzögerung von 4 Sekunden ist höchstwahrscheinlich wahr, irgendwann kam das Terminal durcheinander, es scheint zu passieren, wenn Antivirus mit dem Scannen beginnt usw. Fälle.

Und 4 Sekunden bedeutet, dass Print 4 Sekunden später im Log-Cache ist, nicht dass OnBook 4 Sekunden später kam (obwohl ich denke, dass es möglich ist, je nachdem, wie der Computer im Moment geladen ist)

s.w. as Print geht zuerst in die Warteschlange und von dort in das Protokoll.
 
Aleksey Mavrin:

Nun, Hut ab, dass Sie den Fehler sofort zugeben ;)

Die 4-Sekunden-Verzögerung ist höchstwahrscheinlich wahr , irgendwann kam das Terminal durcheinander, es scheint zu passieren, wenn Antiviren-Scans usw. beginnen.

Und 4 Sekunden bedeutet genau, dass Print 4 Sekunden später im Log-Cache erschien, nicht dass OnBook 4 Sekunden später erschien (obwohl ich denke, dass es möglich ist, je nachdem, wie man den Computer zu diesem Zeitpunkt lädt)

s.w. as Print geht zuerst in die Warteschlange und von dort in das Protokoll.

Ja, das ist möglich.

 
Aleksey Mavrin:

Und 4 Sekunden bedeutet genau, dass Print 4 Sekunden später im Log-Cache erschien, nicht dass OnBook 4 Sekunden später erschien (obwohl ich denke, dass es möglich ist, je nachdem, wie der Computer zu diesem Zeitpunkt geladen ist)

s.w. Der Druck geht zuerst in die Warteschlange und von dort in das Protokoll.

Nun ja, wie wäre es damit?

Ein Diagramm lief mit OnBook und das andere mit 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 Unterschied zwischen OnTick und OnBook

und der gleiche Unterschied im Druck :)

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:

Gut, wie wäre es damit?

Ein Diagramm wurde mit OnBook und das andere mit OnTick ausgeführt.


56 ms Unterschied zwischen OnTick und OnBook

Und der gleiche Unterschied im Druck :)

Auch hier bin ich mir nicht ganz sicher, denn ich bin müde und Zweifel sind das Los der Erfahrenen und Weisen).

Aber ich denke, es ist einfach elementar, dassSymbol() Zeit frisst )))

so wahr Test - Check - ich bin zu faul)

es ist ein langer Globus. 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:

Auch hier bin ich mir nicht sicher, denn ich bin müde und Zweifel sind das Los der Erfahrenen und Weisen).

Aber ich denke, es ist einfach elementar, dassSymbol() Zeit verschlingt )))

so wahr Test - Check - ich bin zu faul)

Es ist eine lange Dauerwelle.

:), gute Nacht

 
Aleksey Mavrin:

Auch hier bin ich mir nicht sicher, denn ich bin müde und Zweifel sind das Los der Erfahrenen und Weisen).

Aber ich denke, es ist einfach elementar, dassSymbol() Zeit verschlingt )))

so wahr Test - Check - ich bin zu faul)

Es ist eine lange Dauerwelle.

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");
}
//+------------------------------------------------------------------+

Alternativ kann man auch beide Handler gleichermaßen "füttern" lassen, um die Bedenken zu beseitigen, dass Symbol() Zeit frisst.