MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1315

 
Aleksey Mavrin :

MT4'te böyle bir saçmalık var, hesabı değiştirdikten sonra OnInit'in çalışıp çalışmadığını bilmiyorum, o zaman ortamın hesap numarasını veya başka bir söveyi güncellemek için zamanı yok, bir zamanlayıcı ile karar verdim

çok, çalışan bir EA'ya sahip terminal yeniden yüklenirse ne işe yaramaz?

IMHO, kod test cihazı için değilse, ilk onay işaretinin gelmesi üzerine tüm başlatmaları yapmak daha iyidir - o zaman her şeyin% 99,9'u doğru şekilde başlatılacaktır.

 
Igor Makanu :

çok, çalışan bir EA'ya sahip terminal yeniden yüklenirse ne işe yaramaz?

IMHO, kod test cihazı için değilse , ilk onay işaretinin gelmesi üzerine tüm başlatmaları yapmak daha iyidir - o zaman her şeyin% 99,9'u doğru şekilde başlatılacaktır.

Katılıyorum, ama muhtemelen bu% 0.1 var))

 
Igor Makanu :

çok, çalışan bir EA'ya sahip terminal yeniden yüklenirse ne işe yaramaz?

IMHO, kod test cihazı için değilse, ilk onay işaretinin gelmesi üzerine tüm başlatmaları yapmak daha iyidir - o zaman her şeyin% 99,9'u doğru şekilde başlatılacaktır.

tüm başlatmaları ilk onay işaretinin gelmesi üzerine yapmak daha iyidir - o zaman her şeyin %99,9'u doğru şekilde başlatılacaktır ... nasıl ??

 
ponochka :

tüm başlatmaları ilk onay işaretinin gelmesi üzerine yapmak daha iyidir - o zaman her şeyin %99,9'u doğru şekilde başlatılacaktır ... nasıl ??

 void OnTick ()
{
   static bool first_run = true ;
   if (first_run)
   {
      MyOnInit();
      first_run = false ;
   }
 
Igor Makanu :

"Benim" şeklindeki dolgudan kaçınarak doğrudan yapılabilir

 int OnInit()
  {
   ...
    account=AccountNumber();
   ...
  }

void OnTick ()
{
   static bool first_run = true ;
   if (first_run)
   {
     if(account==0) { // Если терминал не успел получить данные с сервера
       OnInit (); // пробуем снова всё инициализировать
      return;
     }
      first_run = false ;
   }
 
Vitaly Muzichenko :

"Benim" şeklindeki dolgudan kaçınarak doğrudan yapılabilir

bu bir dolgu değil, yapılandırılmış bir koddur

Örneğiniz, fazladan birkaç harf yazıp sistematik olmayan kod almak için ne kadar tembel olduğunun bir örneğidir - burada OnInit () EA başlatılırken en az 2 kez çağrılacak, bunun gerekli olacağı veya daha doğrusu kazandığı bir gerçek değil Daha önce yazılanları ihlal etmeyin - Soruların seviyesini gördünüz mü? )))

 
Igor Makanu :

bu bir dolgu değil, yapılandırılmış bir koddur

Örneğiniz, fazladan birkaç harf yazıp sistematik olmayan kod almak için ne kadar tembel olduğunun bir örneğidir - burada OnInit () EA başlatılırken en az 2 kez çağrılacak, bunun gerekli olacağı veya daha doğrusu kazandığı bir gerçek değil Daha önce yazılanları ihlal etmeyin - Soruların seviyesini gördünüz mü? )))

first_run = true ;

İlk başlatmada Init'i kontrol etmek de gereklidir ve orada zaten "sıfırlamak" mümkündür.

Ve evet. Kabul ediyorum.


Not Katılmıyorum, sunucuya bağlanmayı ve ondan güncel verileri almayı başardıysanız 2 kez çağrılmayacak.

 
Igor Makanu :

çalışmıyor, çünkü belgeler OnTick () öğesinin göstergelerde çalışmadığını söylüyor!

 
ponochka :

çalışmıyor, çünkü belgeler OnTick () öğesinin göstergelerde çalışmadığını söylüyor!

işte sınır bu :(

OnTick() ile değiştirin

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
Ve başka bir şubeye gideceğim.
 
Vitaly Muzichenko :

işte sınır bu :(

Soruların seviyesini yukarıda yazdım ;)

ve OnTick / OnInit'te başlatmanın optimalliğini aramaya başladınız - orada her şey daha basit, bulunan kodun aynı arkadaşlarla paylaşılması için korumaya ihtiyacınız var)))