Hatalar, hatalar, sorular - sayfa 2556

 
Igor Makanu :

burada @Vict , makro ikameleri yoluyla işletim sistemine çıkışta bir istisna yapılmasına yardımcı oldu https://www.mql5.com/en/forum/318246/page10#comment_12651045

, genel olarak, uygulanabilir bir çözüm, ama ... ama ürkütücü ve iğrenç görünüyor! )))

Evet, bu genellikle bir tür kalaydır... Bir makroda dönüş sarma - sapıklıklar hakkında çok şey bilmeniz gerekir) Böyle bir kodu daha sonra nasıl anlarsınız... O zaman en azından makronun adını daha öz hale getirmeniz gerekir. -açıklayıcı, TRY_OR_RETURN gibi
 
Alexey Navoykov :
Evet, bu genellikle bir tür kalaydır... Bir makroda dönüş sarma - sapıklıklar hakkında çok şey bilmeniz gerekir) Böyle bir kodu daha sonra nasıl anlarsınız... O zaman en azından makronun adını daha öz hale getirmeniz gerekir. -açıklayıcı, TRY_OR_RETURN gibi

)))

Nasıl göründüğüne baktım ve kullanmıyorum, eski usul yazıyorum if(!myfunc()) return; OnTick()'te - sağlam if'lerin tüm kodu ... ayrıca oldukça dokunaklı ve komik görünüyor))))

 

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

MetaTrader 5 platformunun yeni sürümü build 2085: Python ile entegrasyon ve strateji test cihazında büyük iyileştirmeler

Andrey Barinov , 2019.09.06 06:25

Bu kodun neden şimdi bir uyarısı olduğunu açıklayabilir misiniz?

Yöntemlerin farklı imzaları vardır...

 class A
  {
   public :
                     A( void ) {}
                    ~A( void ) {}
       //===============
       void            Test( void ) {}
       //===============
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+  
class B : public A
  {
   public :
                     B( void ) {}
                    ~B ( void ) {}
       //===============
       void            Test( int a) {}
       //===============
  };
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   B b;

   b.Test(); //deprecated behavior, hidden method calling will be disabled in a future MQL compiler versions
   b.Test( 5 );
//---
   return ( INIT_SUCCEEDED );
  }

 

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

MetaTrader 5 platformunun yeni sürümü build 2085: Python ile entegrasyon ve strateji test cihazında büyük iyileştirmeler

Andrey Barinov , 2019.09.06 06:11

Typename() yapı 2136'da bozuldu

Lütfen geri düzeltin.

 enum eTest
  {
   TEST
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   Alert ( typename (eTest)); // eTest::eTest а правильно (и раньше так было) eTest
//---
   return ( INIT_SUCCEEDED );
  }

tür adı


 
@ilyas

Bu gösterge sistemi çökertir.
Ayrıca, ekran çözünürlüğünde bir değişiklik ve yanıp sönen piksellerle ve bilgisayarın gerekli yeniden başlatılmasıyla.
Üstelik görünüşte zararsız olan Crash() işlevini çağırmazsanız , o zaman çökme olmaz.
Şu şekilde oynandı:

  • göstergeyi başlat
  • bazı frenler başlayana kadar zaman dilimini değiştirmeye başlıyoruz
  • bundan sonra MT5'i en aza indirmeye çalışıyoruz



Bunu her yaptığımda bu çökmeyi oynadı (6-8 kez)

Dosyalar:
AnyTF.mq5  10 kb
iCanvas.mqh  21 kb
 
LTSC'de kilitlenmiyor, günlükte bir hata var: MemoryException 4424265936 bayt mevcut değil, 0 heapmin sonucu

hepsi aynı, birkaç TF değişikliğinden sonra çöktü ve sistem zar zor yüklendi, yükleme tekerleği bir kez 100 devir yaptı, yüklenmeyeceğini düşündüm, kontrol etmemek daha iyi)
 
Fast235 :
LTSC'de kilitlenmiyor, günlükte bir hata var: MemoryException 4424265936 bayt mevcut değil, 0 heapmin sonucu

hepsi aynı, birkaç TF değişikliğinden sonra çöktü ve sistem zar zor yüklendi, yükleme tekerleği bir kez 100 devir yaptı, yüklenmeyeceğini düşündüm, kontrol etmemek daha iyi)

Evet, kaza çok zor. Riske atmamak daha iyidir.
Her şey hafızayla ilgili elbette.
Belleği aşağıdaki gibi tutamaçlarla temizlerseniz:

 int OnInit ()
  {
   ChartSetInteger ( 0 , CHART_FOREGROUND , false );
   if (erase)
       ChartSetInteger ( 0 , CHART_SHOW , false );
   Canvas.Erase();
   Canvas.Comm( "Идет загрузка всех тиков. Подождите пожалуйста" );
   Canvas.Update();
   N= CopyTicks ( _Symbol ,ticks, COPY_TICKS_ALL ,( TimeCurrent ()-Weeks* 7 * 24 * 60 * 60 )* 1000 , INT_MAX );
   Print ( "Скачено " + string (N)+ " тиков" );
   if (N> 0 ) N=CalculateNewTF(ticks,bars,TF);
   ArrayFree (ticks);
   Print ( "Сформировано " + string (N)+ " баров" );
   if (N> 0 ) ShowBars(bars);
   Crash();
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int reason) 
  {
     ArrayFree (bars); 
     if (erase) ChartSetInteger ( 0 , CHART_SHOW , true ); 
  }

kaza da olmuyor. Her durumda, başaramadım.
Ancak sonuçta, TF değiştirilirken dizilerin otomatik olarak temizlenmesi gerekir!

Ve Crash() işlevinin bununla ne ilgisi olduğu açık değildir, bu olmadan çökme olmaz, çünkü yalnızca göstergeler hakkındaki bilgileri okur.
TF değiştirilirken bu işlevin yürütülmesinin OnDeinit'i yavaşlatması ve bu nedenle MT5'in belleği temizlemek için zamanı olmaması mümkündür.
OnDeinit uyumsuzluğu ile ilgili uzun süredir sorunlar. Düzensizlik! Sonuçta, sistem uyumsuzluk nedeniyle çökmemelidir ...

 

Göstergelerle grafiği kaydırdığınızda işlemci çekirdeği neden %100 yüklüyor?

Sonuçta, göstergeler hesaplanır ve fikre göre çizilir, sadece bellekten yükleme yapılmalıdır.

 
Aleksey Vyazmikin :

Göstergelerle grafiği kaydırdığınızda işlemci çekirdeği neden %100 yüklüyor?

Sonuçta, göstergeler hesaplanır ve fikre göre çizilir, sadece bellekten yükleme yapılmalıdır.

Grafik çizerken işlemci yükü doğrudan video kartının performansına bağlıdır.

Zayıf kartlara sahip eski dizüstü bilgisayarlarda veya grafik kartı/sürücüsü olmayan sunucularda, CPU kullanımında kaçınılmaz olarak ani ancak kısa bir artış olacaktır.

Artan istekleri iz bırakmadan tüketmek için CPU'nun kendisine daha güçlü bir şekilde ihtiyaç vardır.
 
Renat Fatkhullin :

Grafik çizerken işlemci yükü doğrudan video kartının performansına bağlıdır.

Zayıf kartlara sahip eski dizüstü bilgisayarlarda veya grafik kartı/sürücüsü olmayan sunucularda, CPU kullanımında kaçınılmaz olarak ani ancak kısa bir artış olacaktır.

Artan istekleri iz bırakmadan tüketmek için CPU'nun kendisinin daha fazla güce ihtiyacı var.

FX-8350 işlemci ve Radeon HD 7950 ekran kartından bahsediyoruz, video kartının MT5'ten yüklendiği hissine kapılmıyorum.