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

 
fxsaber :

@Anton , birçok normal işlevde karakter yerine NULL belirtebilirsiniz. Yürütme hızını etkiler mi?

Veya Terminal/Test için fark yok mu?

Girişler Symbol(), _Symbol - NULL'a eşdeğer (burada sembol adı yerine NULL'a izin verilir)

Bu durumda, mevcut sembolün özellikleri önbelleğe alındığından, mevcut sembolün varlığı, Piyasa İzleme'deki mevcut sembolün varlığı ve mevcut sembolün özelliklerine gereksiz bir çağrı için gereksiz bir kontrol yapılmaz.

Yani, Symbol(), _Symbol veya NULL yerine normal bir dize parametresi belirtilirse, tam program kontrolleri gerçekleştirilir ve başka bir özellik sorgusu yapılır.

 
Slava :

Girişler Symbol(), _Symbol - NULL'a eşdeğer (burada sembol adı yerine NULL'a izin verilir)

Bu durumda, mevcut sembolün özellikleri önbelleğe alındığından, mevcut sembolün varlığı, Piyasa İzleme'deki mevcut sembolün varlığı ve mevcut sembolün özelliklerine gereksiz bir çağrı için gereksiz bir kontrol yapılmaz.

Slava, yorum yapabilirsin: hisse senetlerinde, sembol belirtimindeki kene fiyatı '0' olarak ayarlanmıştır. Ve işte destek ne diyor:

"Teknik departmandan onay aldık. Hisseler için "Tick price" parametresinin doldurulamadığını size bildiririz. Değer varsayılan olarak - 0 olarak gösterilecektir.
Bize ulaştığınız için teşekkürler!"


Gerçekten doğru mu? Hisse senetleri için bir kene fiyatının sıfır olduğu sembolün Spesifikasyonunda var mı?

 
Vladimir Karputov :

Slava, yorum yapabilirsin: hisse senetlerinde, sembol belirtimindeki kene fiyatı '0' olarak ayarlanmıştır. Ve işte destek ne diyor:

"Teknik departmandan onay aldık. Hisseler için "Tick price" parametresinin doldurulamadığını size bildiririz. Değer varsayılan olarak - 0 olarak gösterilecektir.
Bize ulaştığınız için teşekkürler!"


Gerçekten doğru mu? Hisse senetleri için bir kene fiyatının sıfır olduğu sembolün Spesifikasyonunda var mı?

Evet. Nüanslar var.

Sıfıra ayarlandığında, kendinizi saymanız gerekir. Brokerinize formülü sorun

 
fxsaber :

Boşluklar olmadan TAZE tik alma sorunu artık yalnızca CopyTicks* ile çözülmektedir. Bu, bu ortak görev için çok hantal bir mekanizmadır.

Bu arada, MT5'in en son yayınlanan sürümünün bugünün yeni günlüklerinden:

Time[Main.mqh 162 in ProcessTicks: CopyTicksRange ( _Symbol ,OldTicks, COPY_TICKS_INFO ,LastTickParsed.time_msc)] = 704931 mcs.
Time[Main.mqh 162 in ProcessTicks: CopyTicksRange ( _Symbol ,OldTicks, COPY_TICKS_INFO ,LastTickParsed.time_msc)] = 704684 mcs.
Time[Main.mqh 162 in ProcessTicks: CopyTicksRange ( _Symbol ,OldTicks, COPY_TICKS_INFO ,LastTickParsed.time_msc)] = 704425 mcs.

Bunlar, her biri kendi tablosunda olan 1 sembolde 3 danışmandı. İsteğin her kene üzerine gittiği göz önüne alındığında. Tabii ki, bu tür aykırı değerler nadiren olur, ancak aslında son tıklamadan gelen 1 yeni tıklama talebi 700 ms sürdü.

 
Renat Fatkhullin :

Değil.

Herhangi bir programın herhangi bir yerinde her zaman rastgele gecikmeleri yakalarsınız. Her şeyi izlemeye başlayın ve Windows'un gerçekleri karşısında dehşete kapılın. Bunu zaten birkaç kez ayrıntılı olarak açıkladım.

Sistem WinAPI fonksiyonlarında 0 ms yerine 60-80 ms'lik rastgele emisyonları yakaladığımızda da şaşırmıştık.


Artık Windows çözümlerimizin çoğunu toplu olarak özel olarak yağdan arındırılmış Windows Server 2019 Core sürümlerine ve .NET Core web projelerini Linux'a aktarıyoruz. Bu, sistem kaynaklarında büyük tasarruf sağlar ve sistem gecikmesini büyük ölçüde azaltır.

MataTrader 5 terminallerinin yağdan arındırılmasının ilk aşaması olarak, anında kaynak tüketimini izlemek için bir görev yöneticisi sunmaya başladık. Kendimiz için daha fazla bilgi topluyoruz.

Şunlar netleşti:

  • fazla akışları çok uzun süre tutuyoruz
  • aşırı ölçekleme
  • önbellekleri aşırı açığa çıkarmak
Bir sonraki sürüm için, bazı kaynak sorunlarını adım adım çözeceğiz.

Bu hala fena değil ve kadife altındaki terminal)))

 
Slava :

Evet. Nüanslar var.

Sıfıra ayarlandığında, kendinizi saymanız gerekir. Brokerinize formülü sorun

SymbolInfoXXXX aracılığıyla her şey doğru. Soru, neden hisseler için Spesifikasyonda '0' ayarlanmış olduğunu söyledikleriydi. Söylediklerini söylüyorlar ve bu yüzden açıktır - bir kene bir sente eşittir. Ama sonuçta, '0' Spesifikasyonunda kalıp yapmak için bir neden değil mi?

 
fxsaber :

İşlevin içinde yine de ilgili onay işaretine atlamanız gerekir. Bu, dize değişkenini ayrıştırma zamanıdır. NULL ile bu gereksizdir.

Daha sonra kontrol ettim - performansta önemli bir fark bulamadım. kendin kontrol edebilirsin

 
Slava :

Symbol(), _Symbol veya NULL yerine normal bir dize parametresi belirtilirse, tam program kontrolleri yapılır ve başka bir özellik sorgusu yapılır.

Bilgi için teşekkürler! Bunu yapmanın daha iyi olduğu ortaya çıktı:

 // Быстрый SymbolInfoTick.
bool SymbolInfoTickFast( const string &Symb, MqlTick &Tick )
{
   return ((Symb == _Symbol ) ? SymbolInfoTick ( _Symbol , Tick)
                           : SymbolInfoTick (Symb, Tick));
}
 
fxsaber :

Bilgi için teşekkürler! Bunu yapmanın daha iyi olduğu ortaya çıktı:

Teknik detaylar olmadan bile, fonksiyonlarımda nasıl daha farklı yapılabileceğini hayal bile edemezdim...

Bu yapı neden standart SymbolInfoTick()'ten daha hızlı olsun?

 
Artyom Trishkin :

Bu yapı neden standart SymbolInfoTick()'ten daha hızlı olmalıdır?

Daha hızlı.