Hatalar, hatalar, sorular - sayfa 2747

 

Tünaydın! MT5 günlüğünde aşağıdaki mesaj açılır: 2020.05.21 05:49:44.364 Sanal Barındırma, sanal ana bilgisayarların listesini alamadı (www.mql5.com:443 gönderme isteği başarısız oldu [12002])

Söyleyin bana, iyi insanlar, bu ne anlama geliyor ve bununla ne yapmalı?

Teşekkür ederim!

 
fxsaber :
time of [Bench1()] = 1483377
100000000
time of [Bench2()] = 1725035
100000000
time of [Bench1()] = 1523441
100000000
time of [Bench2()] = 1712777
100000000
time of [Bench1()] = 1416779
100000000
time of [Bench2()] = 1452093
100000000
time of [Bench1()] = 1399366
100000000
time of [Bench2()] = 1449939
 
Mihail Matkovskij :

Projelerimden birindeki hata ayıklayıcı benim için çalışmayı reddediyor. Ayrıca, davranışını tahmin etmek zordur. Bazen sadece kesme noktalarına ulaşmayı reddediyor. Ayrıca bazı işlevlere girmeyi de reddediyor. İlk başta sebebin güncellemeler olduğunu düşündüm (birdenbire hata ayıklamada bir şeyler ters gitti). Ancak diğer daha basit programlarda her şey çalışıyor gibi görünüyor. Ana projem üzerinde çalıştığımdan beri çok detaylı kontrol etmedim. Oldukça karmaşık olduğu ortaya çıktı ve sadece tasarımımın 15 modülünü içeriyor (standart modüllerin sayısını saymadım). Ana modül 2000 satıra kadar içerir. Belki projenin karmaşıklığındandır diye düşündüm... Ayrıca, bazı yerlerde tekrarlayan kod parçacıkları için makrolar kullanıyorum. Ayrıca programımın işlevselliği için yeniden yazdığım CAppDialog, CCheckGroup, CComboBox, CButton vb. gibi standart UI öğelerini de kullanıyorum. Belki hata ayıklama onlar yüzünden çalışmıyor... Örneğin, hata ayıklama benim tarafımdan özel olarak yazılmış CCheckGroup::itemCheckState(const string item) yöntemine girmiyor. Yöntem, onay kutusu öğesini bulur ve seçili olup olmadığını kontrol eder (Durumu):

İşte bitirdiğim kullanıcı arayüzü:

Bazı UI öğeleri geçici olarak sınıflandırılır. Ve burada CAppDialog öğesinin Show() ve Hide() yöntemlerini nasıl geçersiz kıldığım hakkında konuştuğum başlık: https://www.mql5.com/ru/forum/338301 . Sonra derleyici yemin etti, kritik bir hata vardı.

Sonuç olarak, projenin normal bir şekilde derlendiği ortaya çıkıyor, derleyici herhangi bir hata üretmiyor. Ancak hata ayıklama sorunludur ve yalnızca bazı kod parçacıklarının, işlevlerin, yöntemlerin vb. yürütülmesini göstermez.

Anladığım kadarıyla, birkaç nedeni olabilir.

  1. Karmaşık proje kodu, makro kullanımı
  2. CAppDialog, CCheckGroup, CComboBox, CButton gibi standart UI öğelerini kullanarak kodu karmaşıklaştırma (buna yeni yöntemler de yazdım ve mevcut olanlardan bazılarını geçersiz kıldım)
  3. Yeni yapıyla ilgili hata ayıklayıcı hatası (olası, ancak olası değil)

Yapı ve sistem bilgisi:

Hata ayıklayıcıyla benzer sorunları kim yaşadı ve nedeni ne olabilir?

https://www.mql5.com/ru/forum/1111/page2746#comment_16481481

CCheckGroup::itemCheckState yönteminde (hata ayıklayıcının ulaşamadığı), şöyle bir şey yazdım:

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CCheckGroup::itemCheckState( const string item) {
   int total = m_strings.Total();
  
   if (total != m_states.Total())
     return - 1 ;
    
   int i = 0 ;
   for (; i < total; i++) {
     if (m_strings.At(i) == item) {
       Alert ( __FUNCTION__ + " item: " + item  + " state: " + ( string )m_states.At(i));
       return m_states.At(i);
    }
  }
  
   return - 1 ;
}

Ve aşağıdaki mesajı aldı:

2020.05.21 13:20:44.229 CCheckGroup::itemCheckState öğesi: 39 durum: 32

Yöntemin düzgün çalıştığı ortaya çıkıyor, ancak bir nedenden dolayı hata ayıklayıcı onu görmeyi bırakıyor. Hata ayıklayıcının normal çalışması olmadan, proje üzerindeki çalışma uzun süre sürüklenebilir. Geliştiricilerin, büyük olasılıkla hata ayıklayıcıyla ilgili olan bu hataya dikkat etmelerini istiyorum.
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.05.21
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Mihail Matkovskij :

https://www.mql5.com/ru/forum/1111/page2746#comment_16481481

Yöntemin düzgün çalıştığı ortaya çıkıyor, ancak bir nedenden dolayı hata ayıklayıcı onu görmeyi bırakıyor.
Hata ayıklayıcının normal çalışması olmadan, proje üzerindeki çalışma uzun süre sürüklenebilir. Geliştiricilerin, büyük olasılıkla hata ayıklayıcıyla ilgili olan bu hataya dikkat etmelerini istiyorum.

Çok fazla metin var, hepsini okumadım.
Ancak, hata ayıklama sürümünde sizin için bir şey çalışıyorsa ve yayın sürümünde çalışmıyorsa veya bunun tersi olursa, özellikle sınıf/yapıdaki tüm değişkenlerin ve alanların başlatılıp başlatılmadığını kontrol edin.

 
Mihail Matkovskij :
belki yöntem satır içidir, o zaman bu hata ayıklayıcının değil, hata ayıklama modu için derleyicinin sorunudur
 
TheXpert :
 input int Range = 0 ;

double Res = 0 ;

#define GETCURRENTTICK GetCurrentTick1(Tick)
//#define GETCURRENTTICK GetCurrentTick2(Tick, !i)
//#define GETCURRENTTICK GetCurrentTick3(Tick)

void OnTick ()
{
   MqlTick Tick;
    
   for ( int i = 0 ; i < 100 ; i++)
     if (GETCURRENTTICK)
      Res += Tick.bid;
}

double OnTester ()
{
   return (Res);
}

bool GetCurrentTick1( MqlTick &Tick )
{
   return ( SymbolInfoTick ( _Symbol , Tick));
}

bool GetCurrentTick2( MqlTick &Tick, const bool NewTick = false )
{
   static MqlTick CurrentTick;
  
   if (NewTick)
     SymbolInfoTick ( _Symbol , CurrentTick);
  
  Tick = CurrentTick;
  
   return ( true );
}

bool GetCurrentTick3( MqlTick &Tick )
{
   static MqlTick _Tick; // Аналог Bid в MT4
  
  _Tick.bid += _Point ;   // Хоть какой-то расход вычислительный ресурсов.
  
  Tick = _Tick;
  
   return ( true );
}
 #define GETCURRENTTICK GetCurrentTick1(Tick)
 #define GETCURRENTTICK GetCurrentTick2(Tick, !i)
 #define GETCURRENTTICK GetCurrentTick3(Tick)
 2020.05 . 21 14 : 19 : 52.450 Core 1   pass 0 returned result 693275970.165784 in 0 : 00 : 08.925
2020.05 . 21 14 : 19 : 59.980 Core 1   pass 1 returned result 693275970.165784 in 0 : 00 : 07.529
2020.05 . 21 14 : 20 : 07.370 Core 1   pass 2 returned result 693275970.165784 in 0 : 00 : 07.390
2020.05 . 21 14 : 20 : 14.694 Core 1   pass 3 returned result 693275970.165784 in 0 : 00 : 07.323
2020.05 . 21 14 : 20 : 21.688 Core 1   pass 4 returned result 693275970.165784 in 0 : 00 : 06.994
2020.05 . 21 14 : 20 : 29.114 Core 1   pass 5 returned result 693275970.165784 in 0 : 00 : 07.425
2020.05 . 21 14 : 20 : 36.133 Core 1   pass 6 returned result 693275970.165784 in 0 : 00 : 07.019
2020.05 . 21 14 : 20 : 43.557 Core 1   pass 7 returned result 693275970.165784 in 0 : 00 : 07.424
2020.05 . 21 14 : 20 : 49.580 Core 1   pass 8 returned result 693275970.165784 in 0 : 00 : 06.022
2020.05 . 21 14 : 20 : 57.273 Core 1   pass 9 returned result 693275970.165784 in 0 : 00 : 07.693
2020.05 . 21 14 : 21 : 03.993 Core 1   pass 10 returned result 693275970.165784 in 0 : 00 : 06.719
2020.05 . 21 14 : 21 : 03.993 Tester  optimization finished, total passes 11
2020.05 . 21 14 : 21 : 04.003 Statistics      optimization done in 1 minutes 22 seconds
2020.05 . 21 14 : 21 : 04.003 Statistics       shortest pass 0 : 00 : 06.022 , longest pass 0 : 00 : 08.925 , average pass 0 : 00 : 07.314
2020.05 . 21 14 : 21 : 04.003 Statistics      local 11 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)
 2020.05 . 21 14 : 21 : 49.346 Core 1   pass 0 returned result 693275970.165784 in 0 : 00 : 03.050
2020.05 . 21 14 : 21 : 51.108 Core 1   pass 1 returned result 693275970.165784 in 0 : 00 : 01.761
2020.05 . 21 14 : 21 : 52.903 Core 1   pass 2 returned result 693275970.165784 in 0 : 00 : 01.795
2020.05 . 21 14 : 21 : 54.731 Core 1   pass 3 returned result 693275970.165784 in 0 : 00 : 01.827
2020.05 . 21 14 : 21 : 56.536 Core 1   pass 4 returned result 693275970.165784 in 0 : 00 : 01.803
2020.05 . 21 14 : 21 : 58.341 Core 1   pass 5 returned result 693275970.165784 in 0 : 00 : 01.805
2020.05 . 21 14 : 22 : 00.135 Core 1   pass 6 returned result 693275970.165784 in 0 : 00 : 01.793
2020.05 . 21 14 : 22 : 01.912 Core 1   pass 7 returned result 693275970.165784 in 0 : 00 : 01.777
2020.05 . 21 14 : 22 : 03.663 Core 1   pass 8 returned result 693275970.165784 in 0 : 00 : 01.750
2020.05 . 21 14 : 22 : 05.458 Core 1   pass 9 returned result 693275970.165784 in 0 : 00 : 01.794
2020.05 . 21 14 : 22 : 07.274 Core 1   pass 10 returned result 693275970.165784 in 0 : 00 : 01.815
2020.05 . 21 14 : 22 : 07.274 Tester  optimization finished, total passes 11
2020.05 . 21 14 : 22 : 07.284 Statistics      optimization done in 0 minutes 21 seconds
2020.05 . 21 14 : 22 : 07.284 Statistics       shortest pass 0 : 00 : 01.750 , longest pass 0 : 00 : 03.050 , average pass 0 : 00 : 01.906
2020.05 . 21 14 : 22 : 07.284 Statistics      local 11 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)
 2020.05 . 21 14 : 23 : 00.873 Core 1   pass 0 returned result 661757660284.981689 in 0 : 00 : 02.859
2020.05 . 21 14 : 23 : 02.704 Core 1   pass 1 returned result 661757660284.981689 in 0 : 00 : 01.830
2020.05 . 21 14 : 23 : 04.488 Core 1   pass 2 returned result 661757660284.981689 in 0 : 00 : 01.783
2020.05 . 21 14 : 23 : 06.227 Core 1   pass 3 returned result 661757660284.981689 in 0 : 00 : 01.737
2020.05 . 21 14 : 23 : 07.778 Core 1   pass 4 returned result 661757660284.981689 in 0 : 00 : 01.550
2020.05 . 21 14 : 23 : 09.517 Core 1   pass 5 returned result 661757660284.981689 in 0 : 00 : 01.738
2020.05 . 21 14 : 23 : 11.288 Core 1   pass 6 returned result 661757660284.981689 in 0 : 00 : 01.771
2020.05 . 21 14 : 23 : 12.997 Core 1   pass 7 returned result 661757660284.981689 in 0 : 00 : 01.708
2020.05 . 21 14 : 23 : 14.815 Core 1   pass 8 returned result 661757660284.981689 in 0 : 00 : 01.817
2020.05 . 21 14 : 23 : 16.621 Core 1   pass 9 returned result 661757660284.981689 in 0 : 00 : 01.805
2020.05 . 21 14 : 23 : 18.313 Core 1   pass 10 returned result 661757660284.981689 in 0 : 00 : 01.691
2020.05 . 21 14 : 23 : 18.313 Tester  optimization finished, total passes 11
2020.05 . 21 14 : 23 : 18.323 Statistics      optimization done in 0 minutes 21 seconds
2020.05 . 21 14 : 23 : 18.323 Statistics       shortest pass 0 : 00 : 01.550 , longest pass 0 : 00 : 02.859 , average pass 0 : 00 : 01.844
2020.05 . 21 14 : 23 : 18.323 Statistics      local 11 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)

Ücretsiz SymbolInfo -fonksiyonları konusunda.

 
TheXpert :
belki yöntem satır içidir, o zaman bu hata ayıklayıcının değil, hata ayıklama modu için derleyicinin sorunudur

Hemen hemen, projenin hem benim hem de standart modüllerden gelen yukarı ve aşağı makrolarla dolu olduğu ortaya çıktı. Belki de bu yüzden hata ayıklayıcı her zaman *.ex5 hata ayıklama dosyasındaki komutları *.mq5 kaynak dosyasındaki ve diğer modüllerdeki satırlarla eşleştiremez...

 
fxsaber :
Ücretsiz SymbolInfo fonksiyonları konusunda.

yani bu, işlevin kendisinin maliyetidir ve dizeyi referansa göre değil, değere göre iletmez!

dahası, bu işlevin yürütülmesi danışmanın yürütme süresinin önemli bir yüzdesini alıyorsa (ki buna pek inanmıyorum) bir önbellek ile seçeneğiniz oldukça bir çözümdür.

 
Mihail Matkovskij :

Hemen hemen, projenin hem benim hem de standart modüllerden gelen yukarı ve aşağı makrolarla dolu olduğu ortaya çıktı. Belki de bu yüzden hata ayıklayıcı her zaman *.ex5 hata ayıklama dosyasındaki komutları *.mq5 kaynak dosyasındaki ve diğer modüllerdeki satırlarla eşleştiremez...

belki o kadar karmaşık bir dosya yapınız var ki hata ayıklayıcı bir kesme noktası ilişkilendiremez, o zaman bu bir hata ayıklayıcı sorunudur.
 
TheXpert :

yani bu, işlevin kendisinin maliyetidir ve dizeyi referansa göre değil, değere göre iletmez!

Başlangıçta buna yol açtı.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2020.05.20 13:24

olması daha iyi tabi

 const MqlTick _Tick; // Текущий _Symbol-тик.

Optimize Edici'de bu işlevler on milyarlarca kez çağrılır.


dahası, bu işlevin yürütülmesi danışmanın yürütme süresinin önemli bir yüzdesini alıyorsa (ki buna pek inanmıyorum) bir önbellek ile seçeneğiniz oldukça bir çözümdür.

Belli bir aşamada, işgal edilen zamanın sadece göreli kısmı değil, mutlak kısmı da önem kazanır.