MT5 ve iş başında hız - sayfa 65

 
fxsaber :
Bilgisayar başındaydı, herhangi bir hesaplama yapmadı. CPU'ya hiçbir şey yüklenmedi.

SymbolInfoTick yürütme 19 ve 48 ms sürdü. Sürenin yüzlerce mikrosaniye olduğu birkaç düzine vaka. Ama onları getirmedi.


Görünüşe göre, oynatma için bir gün boyunca savaş danışmanları çalıştırmanız ve ardından sadece izlemeniz gerekiyor. Benim düşünceme göre, bu tür gecikmelerin başlatıcısının ne olduğunu bulmak gerçekçi değil.

Bazen bilgisayar güncellemeleri indirebilir veya bazı servis görevlerini gerçekleştirebilir. Başka bir voltaj düşüşünün etkisi olabilir. Bu şekilde, donanım seviyesinde botun tüm mantığının kablolu olduğu programlanabilir ağ kartlarına ulaşabilirsiniz :) ancak kuantum alan dalgalanmalarıyla ilişkili gecikmeler de olacaktır.
 
Maxim Dmitrievsky :
Bazen bilgisayar güncellemeleri indirebilir veya bazı servis görevlerini gerçekleştirebilir. Başka bir voltaj düşüşünün etkisi olabilir. Bu şekilde, donanım seviyesinde botun tüm mantığının kablolu olduğu programlanabilir ağ kartlarına ulaşabilirsiniz :) ancak kuantum alan dalgalanmalarıyla ilişkili gecikmeler de olacaktır.

Geliştiriciler ellerinden gelen her şeyi yaptılar. Ve bu olmadan, iş parçacığı, sipariş defterinin Piyasa İzleme'nin gerisinde kaldığını ve bunun tersini gösteren bir kod sağlar. Kenelerin geliş sırasının nasıl ihlal edildiği ve muhtemelen başka bir şey. Genel olarak, diğer durumları yeniden oluşturmak için kötü geçerli kod düzenlenir.

 
Anton :

SymbolInfoTick, aracının sunucusundan alınan verileri döndürür. Sunucunun gönderdiği şey, aldığınız şeydir.

Söylemek,   SymbolInfoTick() işlevi   Engelleme modunda mı yoksa engellenmeyen modda mı çalışıyor?

Örneğin while döngüsünün gövdesinde olduğu ve hafta sonu için bağlantının koptuğu veya piyasanın kapalı olduğu,
o zaman bloke edecek, döngüyü durduracak mı? Yoksa asenkron olarak mı çalışacak?

 
fxsaber :

sipariş defterinin nasıl Piyasa İzleme'nin gerisinde kaldığı ve tam tersi.

yani SymbolInfoTick yeni bir onay işareti yakalar ve sipariş defterini yoklayarak (sipariş defteri değiştirme olayını beklemeden) başka bir Ask and Bid alırız? Yaklaşık bir yıl önce bu mümkün değildi. SymbolInfoTick ve CopyTick ve Pazar Derinliği anketi her zaman aynı onay işaretiyle sonuçlandı. Her türlü OnXXX işlevi aracılığıyla onay işareti alırsanız, elbette bazı işlevler aracılığıyla bir şeyler elde edersiniz, diğerleri aracılığıyla bir şeyler...

 
pivomoe :

yani SymbolInfoTick yeni bir onay işareti yakalar ve sipariş defterini yoklayarak (sipariş defteri değiştirme olayını beklemeden) başka bir Ask and Bid alırız?

Burada.

 
fxsaber :

Burada.

Tahmin ettiğim gibi, MarketBookGet ve SymbolInfoTick'i değil, OnBookEvent ve OnTick'i test ediyorsunuz. Bu şemaya göre test yapıyor olsaydınız, her şeye aynı şekilde sahip olurdunuz:

While( 1 )
{
 Sleep ( 1 )
 Запрос тика через SymbolInfoTick
 Запрос тика через стакан MarketBookGet
 Проверка на совпадение. 
}

ps Aşağıdaki yazılarınızı okuyun. Seni görüyorum ve sen anlıyorsun. Neden OnBookEvent ve OnTick'e ihtiyacınız var? Benim örneğimde Sleep(1) 1-2 milisaniye sürer. SymbloInfoTick ile istek ve onay, bir mikrosaniyeden daha kısadır. Kene yoksa işlemci zaten zamanın %99,9'unu dinlendiriyor. OnBookEvent ve OnTick kullanmanın faydası nedir?

 
pivomoe :

Tahmin ettiğim gibi, MarketBookGet ve SymbolInfoTick'i değil, OnBookEvent ve OnTick'i test ediyorsunuz. Bu şemaya göre test yapıyor olsaydınız, her şeye aynı şekilde sahip olurdunuz:

ps Aşağıdaki yazılarınızı okuyun. Seni görüyorum ve sen anlıyorsun. Neden OnBookEvent ve OnTick'e ihtiyacınız var? Benim örneğimde Sleep(1) 1-2 milisaniye sürer. SymbloInfoTick ile istek ve onay, bir mikrosaniyeden daha kısadır. Kene yoksa işlemci zaten zamanın %99,9'unu dinlendiriyor. OnBookEvent ve OnTick kullanmanın faydası nedir?

Bir diplomasi ipucu olmadan, saçma sapan konuşuyorsunuz. Uyku(1) on milisaniyedir. Sadece bir tane teori görüyorum.

OnTick'teki kullanıcılar, bir süre önce Terminal'e gelen onay işaretini değil, yeni bir onay işareti görmek ister. SymbolInfoTick'i MarketBookGet'ten hemen sonra kaynak koduna gönderebilirsiniz.


Geliştiriciler, sessizlikleriyle, iki sorunun varlığını tamamen kabul ettiler.

 
fxsaber :

Bir diplomasi ipucu olmadan, saçma sapan konuşuyorsunuz. Uyku(1) on milisaniyedir. Sadece bir tane teori görüyorum.

OnTick'teki kullanıcılar, bir süre önce Terminal'e gelen onay işaretini değil, yeni bir onay işareti görmek ister. SymbolInfoTick'i MarketBookGet'ten hemen sonra kaynak koduna gönderebilirsiniz.


Geliştiriciler, sessizlikleriyle, iki sorunun varlığını tamamen kabul ettiler.

Her zaman ve her yerde on milisaniye değil. Basit bir komut dosyası ile kontrol edildi

 //+------------------------------------------------------------------+
//|                                                    TestSleep.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

#define ITERATIONS 10000
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   ulong t1= GetMicrosecondCount ();
   for ( int i= 0 ; i<ITERATIONS; i++)
     {
       Sleep ( 1 );
     }
   ulong t2= GetMicrosecondCount ()-t1;
   PrintFormat ( "total %I64u microseconds (%.3f ms per iteration)" ,t2, double (t2)/(ITERATIONS* 1000.0 ));
  }
//+------------------------------------------------------------------+

İşte günlüğüm

 2020.11 . 04 13 : 14 : 31.590 TestSleep (EURUSD,H1)   total 17058138 microseconds ( 1.706 ms per iteration)

OnTick kullanıcıları her zaman en son onay işaretini görür.

OnBookEvent kullanıcıları her zaman en son onay işaretini görür.

Ancak OnTick'te alınan ve OnBookEvent'te alınan onay işaretlerini karşılaştırmak istiyorsanız , olayların işlenmesi paralel olarak değil sırayla gerçekleştirildiğinden hayal kırıklığına uğrarsınız. Pivomoe kullanıcısının size söylemeye çalıştığı şey

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
Slava :

Her zaman ve her yerde on milisaniye değil. Basit bir komut dosyası ile kontrol edildi

İşte günlüğüm

İşte benim günlüğüm.

 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnStart ()
{
   for ( int i = 0 ; i < 5 ; i++)
    _BV( Sleep ( 1 ), 1 );
}

Sonuç.

 2020.11 . 04 15 : 19 : 32.565 Alert : Bench_Stack = 0 , 1 <= Time[Test9.mq5 93 in OnStart : Sleep ( 1 )] = 5326 mcs.
2020.11 . 04 15 : 19 : 32.580 Alert : Bench_Stack = 0 , 1 <= Time[Test9.mq5 93 in OnStart : Sleep ( 1 )] = 14928 mcs.
2020.11 . 04 15 : 19 : 32.596 Alert : Bench_Stack = 0 , 1 <= Time[Test9.mq5 93 in OnStart : Sleep ( 1 )] = 15930 mcs.
2020.11 . 04 15 : 19 : 32.611 Alert : Bench_Stack = 0 , 1 <= Time[Test9.mq5 93 in OnStart : Sleep ( 1 )] = 14910 mcs.
2020.11 . 04 15 : 19 : 32.627 Alert : Bench_Stack = 0 , 1 <= Time[Test9.mq5 93 in OnStart : Sleep ( 1 )] = 15941 mcs.

OnTick kullanıcıları her zaman en son onay işaretini görür.

OnBookEvent kullanıcıları her zaman en son onay işaretini görür.

Expert Advisor'ı hiçbir şeyle meşgul olmayan bir makineden tek bir çizelge üzerinde çalıştırmanın sonucu.

 2020.11 . 04 15 : 31 : 19.151 Test9 (EURUSD,H1)       Alert : OnBook-lag! - 6564 mcs.
2020.11 . 04 15 : 31 : 19.151 Test9 (EURUSD,H1)             [bid]   [ask] [onTick] [Interval]
2020.11 . 04 15 : 31 : 19.151 Test9 (EURUSD,H1)       [ 0 ] 1.17192 1.17192      true      108150
2020.11 . 04 15 : 31 : 19.151 Test9 (EURUSD,H1)       [ 1 ] 1.17192 1.17192      false          30
2020.11 . 04 15 : 31 : 19.151 Test9 (EURUSD,H1)       [ 2 ] 1.17189 1.17191      true        88210
2020.11 . 04 15 : 31 : 19.151 Test9 (EURUSD,H1)       [ 3 ] 1.17189 1.17191      false        6564
2020.11 . 04 15 : 31 : 30.260 Test9 (EURUSD,H1)       Alert : OnBook-lag! - 3888 mcs.
2020.11 . 04 15 : 31 : 30.260 Test9 (EURUSD,H1)             [bid]   [ask] [onTick] [Interval]
2020.11 . 04 15 : 31 : 30.260 Test9 (EURUSD,H1)       [ 0 ] 1.17192 1.17192      false      117471
2020.11 . 04 15 : 31 : 30.260 Test9 (EURUSD,H1)       [ 1 ] 1.17192 1.17192      true          11
2020.11 . 04 15 : 31 : 30.260 Test9 (EURUSD,H1)       [ 2 ] 1.17192 1.17193      true      882710
2020.11 . 04 15 : 31 : 30.260 Test9 (EURUSD,H1)       [ 3 ] 1.17192 1.17193      false        3888
2020.11 . 04 15 : 31 : 31.519 Test9 (EURUSD,H1)       Alert : OnTick -lag! - 4653 mcs.
2020.11 . 04 15 : 31 : 31.519 Test9 (EURUSD,H1)             [bid]   [ask] [onTick] [Interval]
2020.11 . 04 15 : 31 : 31.519 Test9 (EURUSD,H1)       [ 0 ] 1.17195 1.17195      true        86660
2020.11 . 04 15 : 31 : 31.519 Test9 (EURUSD,H1)       [ 1 ] 1.17195 1.17195      false          11
2020.11 . 04 15 : 31 : 31.519 Test9 (EURUSD,H1)       [ 2 ] 1.17194 1.17194      false      220122
2020.11 . 04 15 : 31 : 31.519 Test9 (EURUSD,H1)       [ 3 ] 1.17194 1.17194      true        4653

Uygun yöntemlerle farklı On-fonksiyonlarında elde edilen aynı onay işaretlerini işaretler. Örneğin, bir grafikte değil, altıda çalıştırırsanız, gecikme onlarca milisaniyeye ulaşabilir.

Ancak OnTick'te alınan ve OnBookEvent'te alınan onay işaretlerini karşılaştırmak istiyorsanız , olayların işlenmesi paralel olarak değil sırayla gerçekleştirildiğinden hayal kırıklığına uğrarsınız. Pivomoe kullanıcısının size söylemeye çalıştığı şey

Neredeyse boş bir OnBookEvent/OnTick, karşılık gelen neredeyse boş OnTick/OnBookEvent'ten 20 milisaniye sonra tetikleniyorsa, bu normal mi?


Tehdit Bir kere şubeye dikkat ettiğinizde, o zaman bir tane daha çoğalan kod var. Orada, keneler Market Watch'a daha önceki Market Watch zamanından daha erken bir zamanda gelir.

 
fxsaber :

Neredeyse boş bir OnBookEvent/OnTick, karşılık gelen neredeyse boş OnTick/OnBookEvent'ten 20 milisaniye sonra tetikleniyorsa, bu normal mi?


Uzman kuyruğu engellenebilir bir kaynaktır. Kuyruğa bir olay yazıldığında, EA bekler (elbette, EA şu anda herhangi bir olayı işlemediği sürece)

Expert Advisor için olaylar, karşılık gelen sembolün işlem döngüsünden gelen ilgili grafiğin olay kuyruğundan gelir. Ve bu işleme döngüsü, olayları yalnızca tablolarına dağıtmakla kalmaz, aynı zamanda bir sürü farklı şey de yapar.

Windows'un gerçek zamanlı bir işletim sistemi olmadığını zaten söylemiştim.