Hatalar, hatalar, sorular - sayfa 2971

 

Bu, statik değişkenlerin doğru davranışı mı?

Zaman çerçevesini değiştirirken veya parametreleri değiştirirken değerleri değişmez:

 int OnInit ()
  {
   static int my_int= 4444 ;
   Print (my_int);
   my_int= 9999 ;
   return ( INIT_SUCCEEDED );
  }

EA'yı başlattıktan ve zaman çerçevesini değiştirdikten sonra sonuç:

 2021.02 . 24 16 : 23 : 27.999 Test1 (EURUSD,M1)       4444
2021.02 . 24 16 : 23 : 29.913 Test1 (EURUSD,M5)       9999
Statik değişkenler

Bu yardımdan:

Statik değişkenler, program yürütüldüğü andan itibaren mevcuttur ve özel OnInit() işlevi çağrılmadan önce bir kez başlatılır.

Bu nedenle, yeniden başlatma daha çok ikinci bir başlatma gibi olsa da, OnInit()'e yapılan her çağrıdan önce veya başlamadan önce bir kez.

Bu test cihazında da oluyor mu?

Global değişkenler de bu şekilde davranır.

 

Zaman aralığını değiştirirken Expert Advisor yeniden başlamaz, çalışmaya devam eder.

https://www.mql5.com/ru/docs/runtime/running

При смене символа или таймфрейма графика, к которому эксперт прикреплен, выгрузка и загрузка эксперта не производится . При этом последовательно вызываются обработчики OnDeinit() на старом символе/таймфрейме и OnInit() на новом символе/таймфрейме (если они есть), значения глобальных переменных и статических переменных не сбрасываются. Все события, поступившие для эксперта до завершения инициализации (функции OnInit() ), пропускаются.


Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Выполнение программ - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ilyas :

Zaman aralığını değiştirirken Expert Advisor yeniden başlamaz, çalışmaya devam eder.

https://www.mql5.com/ru/docs/runtime/running

Daha önce MetaTrader'da olmayan bir özelliği fark ettim. Uzman Danışmanı grafikten silerim (bağlam menüsü komutunu kullanarak), ardından grafik kapanır. Önceden, bir Uzman Danışman silindikten sonra grafik kapatılmıyordu.

 
Mihail Matkovskij :

Daha önce MetaTrader'da olmayan bir özelliği fark ettim. Uzman Danışmanı grafikten silerim (bağlam menüsü komutunu kullanarak), ardından grafik kapanır. Önceden, bir Uzman Danışman silindikten sonra grafik kapatılmıyordu.

Bu, EA'nın kendisine programlanabilir, başka bir EA ile kontrol edin...

 

win7'de, geçmiş verilerde hata ayıklarken, gözleme eklenen değişkenler değerlerini göstermez. gerçek verilerde hata ayıklarken her şey çalışır. meta düzenleyici ayarlarında, hata ayıklama için kullanılan parametreler   belirtilir .

Değişkenleri eklerken, pencerede hemen görüntülenmezler, ancak yalnızca bir sonraki hata ayıklamaya başladığınızda görünürler, ancak değerleri zaten <uygulanmadı>. hata ayıklamanın çalışması için neyi yapılandıracağımı söyle

 
Vladimir Pastushak :

Bu, EA'nın kendisine programlanabilir, başka bir EA ile kontrol edin...

Gerçekten de, çizelgeye standart bir Uzman Danışman attım. Sorunsuz kaldırıldı. Uzman Danışmanımın kaynaklarında ChartClose'u bulmaya çalıştım. Hiçbir yerde bulamadı. Expert Advisor silindiğinde grafiği kapatmak gibi bir düşüncem başlangıçta yoktu. İçinde CAppDialog gibi standart UI öğelerini kullanıyorum. Belki standart sınıflarda bir yerde grafiğin kapanışı yazılmıştır...

 
Mihail Matkovskij :

Gerçekten de, çizelgeye standart bir Uzman Danışman attım. Sorunsuz kaldırıldı. Uzman Danışmanımın kaynaklarında ChartClose'u bulmaya çalıştım. Hiçbir yerde bulamadı. Expert Advisor silindiğinde grafiği kapatmak gibi bir düşüncem başlangıçta yoktu. İçinde CAppDialog gibi standart UI öğelerini kullanıyorum. Belki standart sınıflarda bir yerde grafiğin kapanışı yazılmıştır...

Bulundu. CAppDialog sınıfının bir CChart m_chart alanı vardır.

 class CAppDialog : public CDialog
  {
...
protected :
   CChart            m_chart;               // object to access chart

CAppDialog silindiğinde (halefi benim EA'mda kullanılır), büyük olasılıkla m_chart nesnesinin ateşlenmesinin yıkıcısı nedeniyle grafik kapatılır.

 //+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CChart::~CChart( void )
  {
   if (m_chart_id!=- 1 )
      Close();
  }
 //+------------------------------------------------------------------+
//| Chart close                                                      |
//+------------------------------------------------------------------+
void CChart::Close( void )
  {
   if (m_chart_id!=- 1 )
     {
       ChartClose (m_chart_id);
      m_chart_id=- 1 ;
     }
  }

Ne yazık ki, bu işlem hata ayıklayıcı kullanılarak izlenemez. Ancak CAppDialog'un yanı sıra CChart'ın kaynak koduna baktıktan sonra her şey netleşiyor. Bunu geliştiricilerin dikkatine sunuyorum.

 
Mihail Matkovskij :

Bulundu. CAppDialog sınıfının bir CChart m_chart alanı vardır.

CAppDialog silindiğinde (halefi CDialog, EA'mda kullanılır), büyük olasılıkla m_chart nesnesinin yıkıcısının çalışması nedeniyle grafik kapatılır.

Ne yazık ki, bu işlem hata ayıklayıcı kullanılarak izlenemez. Ancak CAppDialog'un yanı sıra CChart'ın kaynak koduna baktıktan sonra her şey netleşiyor. Bunu geliştiricilerin dikkatine sunuyorum.

 void CAppDialog::Destroy( const int reason)

dahil olmak üzere grafikten çözülür.

 

Kimin bildiğini söyleyin: SignalBaseTotal() işlevi neden her zaman 1000 değerini döndürür.

mql5.com sinyal hizmeti binden fazla yayın sinyaline sahiptir, ancak terminalde tam olarak bin tane mevcuttur. Niye ya?

Ve şimdi bu binde bir sinyal seti ve bir saatte bir başka sinyal olabilir mi?
Документация по MQL5: Управление сигналами / SignalBaseTotal
Документация по MQL5: Управление сигналами / SignalBaseTotal
  • www.mql5.com
SignalBaseTotal - Управление сигналами - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alain Verleyen :

Dosyadan kaydederken/yüklerken yeni veri eklemeyen türetilmiş yapıya sahip hata.

@İlyas Düzeltir misin?
Neden: