FORTS. Yürütme soruları - sayfa 107

 
Aleksey Vyazmikin :

Sorun şu ki, tüm kanıtlar yalnızca komisyoncudan veya borsadan gelebilir, yani. Onları alamayacağım. Bu yüzden şimdilik bu durumu anlamaya devam edeceğim.

Komisyoncudan yanıt aldım

"

İyi günler, Alexey Vyacheslavovich! Geliştiricilerin yanıtı -

İstemci tarafında ağ gecikmeleri gibi görünüyor, işlem sunucusu tarafında yürütme şu şekilde gerçekleşti:

"

Günlükten anladığım kadarıyla:

1. Yürütme süresi yaklaşık olarak aynıdır

2. Yürütme bilgisi sunucudan geldi ve program tarafından 3 saniye gecikmeyle işlendi.

3 saniyelik bir gecikmeye atıfta bulunmak çok garip geliyor, çünkü İnternetim kablodaki yönlendiriciye kadar oldukça iyi, kanal aşırı yüklenmedi. Bilgisayar çekirdekleri %100 yüklenmemişti ama belki bazı çekirdekler %100 yüklenmişti.

Sonra ortaya çıkıyor:

1. Geliştiriciler, ilk etapta CPU tarafından hesaplanması gereken görevlerin (iş parçacıklarının) uygun öncelik yönetimini sağlamadılar ve MT5 çekirdeğinin kendisi her zaman en az yüklü işlemci çekirdeğini kullanmaya zorlanabilir. Ve %100 yüklenirken, göstergeler ve diğer özel kodlar için hesaplamanın yürütme önceliğini azaltın.

2. MT5 günlüklerine güvenilemez.

Evet, şu anda kimseye güvenilemez.

Rusya'da eylemlerin cezası hiçbir zaman orantılı olmadı.

Bir kutu kibrit çalıp 3 yıl oturabilirsiniz ama kibritleri vagonlarla çalarsanız,

o zaman sana bir şey olmayacak!

MT5 günlüklerinize göre:

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 рапортовал, что ордер исполнился

ve bu

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)

sadece işlemlerin şifresinin çözülmesi

Katma

SUNUCU günlüklerinden, değişimin çekirdeğinde her şeyin anında, 3-4 ms'de yürütüldüğü görülebilir, bunlar komisyoncudan değişimin çekirdeğine kadar olan gecikmelerdir, çünkü Plaza 2'deki işlemler ayrı bir akışta ilerler. ,

sunucu tarafından gerçek zamanlı olarak değil, dilimler halinde elde edilir.

Kısacası, broer ve geliştiricileri sallamanız gerekiyor.

"Ağ gecikmeleri" seninle ve benimle değil, onlarla!

Katma

Her sabah (evet, gün içinde olur) komut birkaç saniye boyunca yürütülmez

 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 :

Komisyoncudan yanıt aldım

evet, takas hakkında daha iyi bir fikrim vardı) siparişi doldurmak için 10 ms. ama yine de 2 saniye değil.
 
prostotrader :

"Ağ gecikmeleri" seninle ve benimle değil, onlarla!

Katma

Her sabah (evet, öğleden sonra olur) komut birkaç saniye boyunca yürütülmez

Beni başka ilgilendiren şey, saatin nerede gösterildiğidir - günlükteki terminalimde bu benim bilgisayar zamanım ve MT5 sunucusunun zamanına sahipler mi?

Sadece zaman senkronizasyonum var - ilgili sunucu (ntp2.stratum2.ru) tarafından her 10 dakikada bir, anakarttaki pili değiştirdim, yani. zaman doğru olmalıdır. Ve ekranda sık sık saatimin zamanın geçtiğini ve çubuğun sürünmeye devam ettiğini görüyorum - bu mu? Değişimin bir çeşit kalan zamanı var mı?

 
Aleksey Vyazmikin :

Beni başka ilgilendiren şey, saatin nerede gösterildiğidir - günlükteki terminalimde bu benim bilgisayar zamanım ve MT5 sunucusunun zamanına sahipler mi?

Sadece zaman senkronizasyonum var - ilgili sunucu (ntp2.stratum2.ru) tarafından her 10 dakikada bir, anakarttaki pili değiştirdim, yani. zaman doğru olmalıdır. Ve ekranda sık sık saatimin zamanın geçtiğini ve çubuğun sürünmeye devam ettiğini görüyorum - bu mu? Değişimin bir çeşit kalan zamanı var mı?

MQ'nun MT5 sunucu zamanının Exchange zamanı ile senkronizasyonunu nasıl uyguladığını bilmiyorum.

Ancak borsada işlem yaptığımız için, bilgisayarınızın veya MT5 sunucunuzun saatinin ne olduğu önemli değil, önemli olan Exchange zamanı!

Senkronizasyon Exchange saatine göre yapılmalıdır.

 //+------------------------------------------------------------------+
//| 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); //Возвращает последнее известное время сервера

Yani , TimeCurrent() - TAM zaman DEĞİL

TimeTradeServer (cur_time); //Ticaret sunucusunun tahmini geçerli saatini döndürür.

TimeTradeServer - kesin zaman değil

Gerçek şu ki, Borsa geçen yıldan beri borsa ticareti için gerekli TÜM bilgileri yayınlıyor,

bazı hesaplamalara kadar.

Plaza 2 protokol spesifikasyonu diyor ki

kalp atışı - Sunucu saati servis tablosu

Bu tablo ne için?



Başlangıçta, MT5, "ölen" ve MQ'ya ihtiyaç duyulan Plaza 2 p2gate'e "oturdu"

sunucuyu CGate'de hızlı bir şekilde yeniden yazın ve zaten yazıldığından ve çalıştığından, neden rahatsız ediyorsunuz?

Bir şey ekle-düzelt.

Katma

Gecikmelerle ilgili sorun, ciddi bir kusurun sonucudur.

Terminal 1 saniye içinde olamaz. 60'tan fazla işlem gönderin (yani 2 Plaza 2 oturum açma)

Basit hesaplamalarla, bir komisyoncunun hangi "ateş hızına" sahip olması gerektiğini belirleyebilirsiniz;

MT5 sunucularını ve ağ geçidini destekler.

 
prostotrader :

MQ'nun MT5 sunucu zamanının Exchange zamanı ile senkronizasyonunu nasıl uyguladığını bilmiyorum.

Ancak borsada işlem yaptığımız için, bilgisayarınızın veya MT5 sunucunuzun saatinin ne olduğu önemli değil, önemli olan Exchange zamanı!

Senkronizasyon Exchange saatine göre yapılmalıdır.

Aslında, neler oluyor? Belki borsanın, kullanıcıların bilgisayar zamanını senkronize etmek için bir sunucusu vardır?

 
Aleksey Vyazmikin :

Aslında, neler oluyor? Belki borsanın, kullanıcıların bilgisayar zamanını senkronize etmek için bir sunucusu vardır?

Bir önceki mesajıma bilgi ekledim.

 
Aleksey Vyazmikin :

Beni başka ilgilendiren şey, saatin nerede gösterildiğidir - günlükteki terminalimde bu benim bilgisayar zamanım ve MT5 sunucusunun zamanına sahipler mi?

Bu komut dosyası ne çıktı?

 #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 :

Bu komut dosyası ne çıktı?

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

Ne olduğunu?
 

 
Aleksey Vyazmikin :

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

Ne olduğunu?

Bilmiyorum, yukarıdaki komut dosyasıyla ilgisi yok. Sorunun oluştuğu ticaret hesabında ne yayınladığını gösterin.