Gerçek zamanlı keneler - sayfa 18

 
prostotrader :

Tartışmalar devam ederken 1 deney daha yaptım.

Yani, başlatma sırasında mikrosaniye süre algılıyorum,

ve her baskıdan önce tekrar zaman deliyorum

İdeal olarak böyle olmalı

Ancak çoğu zaman şöyle çıkıyor (günlük alıntıları):

Ama 4 saniyeye sığmaz...

oh, sonunda fark etme zamanını buldum, ilerleme!)

ps saatin kesinlikle diske yazılmadığını doğrulamak için en basit testi vereceğim, Test'teki işlemler arasında ortalama 7 mikrosaniye süren bazı hesaplamalar yapılıyor.

Aynı zamanda, aynı anda mikrosaniye cinsinden bir düzineden fazla işlem için baskıların görüntülendiği ve baskıların her mikrosaniyede bir çıktı alındığı açıktır. Bence her şey herkes için açık.

yukarı: ilk baskı ikinciden hemen önce yerleştirilirse, delta zaten 0-1'dir, bu da Baskının bu zincirdeki en uzun olduğu anlamına gelir.

   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, sonunda fark etme zamanı geldi, ilerleme!)

ne istiyorsun canım Yapacak bir şey yok?

Burası herşeyin başladığı yer!

 
prostotrader :

ne istiyorsun canım Yapacak bir şey yok?

Burası herşeyin başladığı yer!

Katma

Dahası , GetMicrosecondCount ()'un 16ms'ye kadar bir hataya sahip olduğunu henüz bilmiyorsunuz! :)

Mikrosaniye veren bir fonksiyonun 16 milisaniyeye kadar hatası vardır, yani. hata, adından daha büyük bir büyüklük mertebesidir, peki, peki)) ayrıca bir kanıtla onaylayabilir misiniz?

 
Aleksey Mavrin :

Mikrosaniye veren bir fonksiyonun 16 milisaniyeye kadar hatası vardır, yani. hata, adından daha büyük bir büyüklük mertebesidir, peki, peki)) ayrıca bir kanıtla onaylayabilir misiniz?

karmakarışık

 
prostotrader :

karmakarışık

Eh, hatanı hemen kabul etmene saygı duy ;)

4 saniyelik gecikme, büyük olasılıkla, terminalin düşündüğü bir noktada, bu, virüsten koruma yazılımı taramaya başladığında vb. vakalar.

Ve 4 saniye bu, tam olarak Print'in günlük önbelleğinde 4 saniye sonra çıktığı ve OnBuk'un 4 saniye sonra geldiği anlamına gelmez (bunun, bilgisayarın o anda nasıl yükleneceğine bağlı olarak mümkün olduğunu düşünmeme rağmen)

ps çünkü Baskı önce kuyruğa, oradan da günlüğe gider.
 
Aleksey Mavrin :

Eh, hatanı hemen kabul etmene saygı duy ;)

4 saniyelik gecikme büyük olasılıkla gerçekten bir noktada terminalin düşündüğü , bu, virüsten koruma yazılımı kontrol etmeye başladığında vb. vakalar.

Ve 4 saniye bu, tam olarak Print'in günlük önbelleğinde 4 saniye sonra ortaya çıktığı anlamına gelir ve OnBuk'un 4 saniye sonra gelmesi değil (bunun bilgisayarın o anda nasıl yükleneceğine bağlı olarak mümkün olduğunu düşünüyorum)

ps çünkü Baskı önce kuyruğa, oradan da günlüğe gider.

Evet mümkün

 
Aleksey Mavrin :

Ve 4 saniye bu, tam olarak Print'in günlük önbelleğinde 4 saniye sonra çıktığı ve OnBuk'un 4 saniye sonra geldiği anlamına gelmez (bunun, bilgisayarın o anda nasıl yükleneceğine bağlı olarak mümkün olduğunu düşünmeme rağmen)

ps çünkü Baskı önce kuyruğa, oradan da günlüğe gider.

Evet, ama nasıl?

Bir grafikte OnBook, diğerinde OnTick başlatıldı

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


OnTick ve OnBook arasındaki 56 ms fark

ve baskıda aynı fark :)

 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 :

Evet, ama nasıl?

Bir grafikte OnBook, diğerinde OnTick başlatıldı


OnTick ve OnBook arasındaki 56ms fark

ve baskıda aynı fark :)

Yine, tam olarak emin değilim, çünkü. Uyumak ve şüphe etmek istiyorum - birçok deneyimli ve bilge)

Ancak, buradaki nokta, Sembolün () zaman yediğinde) yalnızca temel olduğu görülüyor)))

bu doğru test - kontrol edin - çok tembelim)

ul bir ulong küresidir. değişken

 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 :

Yine, tam olarak emin değilim, çünkü. Uyumak ve şüphe etmek istiyorum - birçok deneyimli ve bilge)

Ama görünüşe göre buradaki nokta, Sembol () zaman yiyor)))

bu doğru test - kontrol edin - çok tembelim)

ul bir ulong küresidir. değişken

:), İyi geceler

 
Aleksey Mavrin :

Yine, tam olarak emin değilim, çünkü. Uyumak ve şüphe etmek istiyorum - birçok deneyimli ve bilge)

Ancak, buradaki nokta, Sembolün () zaman yediğinde) yalnızca temel olduğu görülüyor)))

bu doğru test - kontrol edin - çok tembelim)

ul ulong bir küredir. değişken

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

bir seçenek olarak, Symbol() 'ün zaman yediği korkularını ortadan kaldırmak için, ardından her iki işleyicinin de aynı şekilde "yemesine" izin verin.