Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 201

 
Alexsandr San :

MT4 veya MT5 ister misiniz? sergilediğim kod - sildim. Burada MT4'ü tartıştıklarını hemen fark etmedim.

MQL4

 
Speculator :

MQL4

Burada çok güzel şeyler var https://www.mql5.com/ru/forum/131859/page6#comment_3359705
 
Merhaba, MT4'te terminal kapalıyken, ancak bağlı bir VPS sunucusuyla telefon/mail ile bildirim almak mümkün müdür?
 
Alexsandr San :

Tavsiye ederim - birçok iyi şey bulunabilir https://www.mql5.com/ru/forum/131859/page6#comment_3359705

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Makroları kullanarak, ortaya çıkan kodun neye dönüşeceğini bir şekilde görmek mümkün mü?
 

Daha spesifik ve muhtemelen ilginç bir soru:

Aynı yapıyı farklı işlevlerde kullanıyorum

 if ( FileReadStruct (handle,temp_rate)!= 60 )
{
  IsError= true ;
  Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ());
  return ;
}

Ancak, bazı işlevler void türündedir ve diğerleri bir değer döndürür, bu yüzden onlardan sıfır döndürürüm:

 return ( 0 );

Her durumda benim için doğru seçeneğin yerini alacak kadar sihirli bir makro yapabilir miyim?

 
Yurij Kozhevnikov :

Daha spesifik ve muhtemelen ilginç bir soru:

Aynı yapıyı farklı işlevlerde kullanıyorum

Ancak, bazı işlevler void türündedir ve diğerleri bir değer döndürür, bu yüzden onlardan sıfır döndürürüm:

Her durumda benim için doğru seçeneğin yerini alacak sihirli bir makro yapabilir miyim?

Bir makroda dönüşü kullanma - kişinin kendi ayağına doğrultulmuş bir silahı vardır ve if ile birlikte - bir silaha dönüşür))) Ama gerçekten istiyorsanız, o zaman:

 #define CHECK_READ(dHndl,dRate,dRet)   do \
if ( FileReadStruct (dHndl,dRate)!= 60 ){    \
  IsError= true ;   \
   Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); \
   return dRet;} while ( false )
  
...
CHECK_READ(handle,temp_rate,);
...
CHECK_READ(handle,temp_rate, 0 );
...

Test etmedim, ancak çalışması gerekir. Aynı zamanda topu tekrar tabancaya çevirdi)))

 

Teşekkür ederim!

Yani ya dönüş değerini ya da dönüşecek olan boşluğu son parametre olarak iletirim.

 return ;

ve boşluk hiçbir şey ifade etmez. Tabii unuttuğum gibi favori parantezlerim olmadan da kullanılabiliyor.

 return (x);
return x; //равноценны

Ve bana aynı anda söyleme, bu yapı neden sadece bir kez yürütülebilecek bir döngünün içine dolduruluyor? Bu bir top tabancaya dönüşmüş mü? Sonsuz özyineleme veya buna benzer durumlar var mı?

 
Yurij Kozhevnikov :

Teşekkür ederim!

Yani ya dönüş değerini ya da dönüşecek olan boşluğu son parametre olarak iletirim.

ve boşluk hiçbir şey ifade etmez. Tabii unuttuğum gibi favori parantezlerim olmadan da kullanılabiliyor.

Ve bana aynı anda söyleme, neden bu yapı sadece bir kez yürütülebilecek bir döngünün içine dolduruluyor? Bu bir top tabancaya dönüşmüş mü? Sonsuz özyineleme veya buna benzer durumlar var mı?

if (koşul) CHECK_READ(h,r,0); yoksa CHECK_READ(h,r,1);
Makroyu do-while sarmalayıcısı olmadan genişletin ve ne olduğunu görün)))
 
Vladimir Simakov :
if (koşul) CHECK_READ(h,r,0); yoksa CHECK_READ(h,r,1);
Makroyu do-while sarmalayıcısı olmadan genişletin ve ne olduğunu görün)))
if (condition) if ( FileReadStruct (h,r)!= 60 ){   
  IsError= true ;   
  Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); 
  return 0;}; else if ( FileReadStruct (dHndl,dRate)!= 60 ){    
  IsError= true ;   
  Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); 
  return dRet;};

=

if (condition) 
 if ( FileReadStruct (h,r)!= 60 )
 {   
  IsError= true ;   
  Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); 
  return 0;
 }; 
 else 
  if ( FileReadStruct (dHndl,dRate)!= 60 )
  {    
   IsError= true ;   
   Print ( __FUNCSIG__ , " Не удалось прочитать данные из файла по причине ошибки " , GetLastError ()); 
   return dRet;
  };

Eğer ikame ilkesini doğru anladıysam öyle görünüyor.

Kıvrımlı parantezlerden sonra fazladan noktalı virgül. Ve şimdi başka ne ifade ettiği açık değil.

Ne olduğunu görmek için makro genişletmeyi otomatikleştirmenin kolay bir yolu olmaması çok kötü. Kendi senaryosunu karıştırmadıkça.

Teşekkür ederim! Makroda bir süre sonra noktalı virgül olmamasına şaşmamalı.

Neden: