MQL5 için dilekler - sayfa 39

 
ds2 :
 // Эти свойства задались уже при создании переменной.
// Менять их в программе, в принципе, особого смысла нет.
// Так что можно их (некоторые из них) сделать read-only
AvgType . DataType = int ; 
AvgType . Value     = 0 ;
AvgType . Comment   = "Тип скользящей средней" ;

Belki bunu yapmak mantıklıdır?

 class ExternParam
{
    < template typename T >
     property T Value ...;
     property String Comment ...;
}
 
SK. писал (а):
ds2 :
SK. (a) yazdı:

Ayrıca if () 'den ayrılmak istiyorum.

Popüler programlama dillerinde böyle bir şey görmedim ...

Oh, buraya kadar.

Bu ifadedeki olumlu ifade, eğer bu diğer dillerde değilse, o zaman kötüdür, o zaman yabancı ve gereksiz bir şeydir.

Benim düşünceme göre, durum hiç de öyle değil.

Kabul ediyorum. Ancak duruma daha yüksek düzeyde uygunluktan bakmak da gereklidir. MQ'nun önceliği ve bizim de(!) - otomatikleştirilmiş bir ticaret dili olarak MQL'nin iyileştirilmesi, ticaret ve analitik yeteneklerinin geliştirilmesi. Ve MQ'nun hala bu yönde çözülmemiş birçok sorunu var...


Ve ticaretle hiçbir ilgisi olmayan standart dışı programlama yapılarının uygulanması MQL'nin yaratılma amacı değildir. Geliştiriciler bir şekilde saptırmak ve diğer diller arasında öne çıkmak isteselerdi, prototip olarak C++'ı değil, örneğin Prolog'u alırlardı. :) (Kişisel olarak, bir Prolog hayranı olarak görmek benim için ilginç olsa da. :) )


Bence programcılar breakif için nasıl sorsalar , MQ'nun bu konuda zaman kaybetmesi pek mümkün değil. Ve bence doğru olanı yapacaklar. Ve herkese, MQL'yi otomatik bir ticaret dili olarak geliştirmeye yönelik daha acil görevleri çözmekten alıkoyan isteklerle MQ'yu rahatsız etmemelerini öneriyorum.

SK. (a) yazdı:

karmaşık yapılar sadece döngüler ve listeler temelinde oluşturulmaz. Ayrıca if -ov temelinde oluşturulurlar. Bu nedenle, dış kapanış desteğine kontrollü bir atlama faydalı olacaktır.

gitmek için varım . :)


Böyle bir programın mantığı daha şeffaf olacaktır. Sonuçta breakif , if -construct'tan erken bir çıkıştır. Herhangi bir erken çıkış gibi, belirli bir koşula göre yapılmalıdır - yani. diğerinin içinde ise . Böylece, bir değil, iki (!) if 'a - için bir çıkış ifadesi olarak breakif'ten bahsediyoruz, bu da programın mantığının anlaşılmasını zorlaştırıyor ve ayrıca genel break 's ( breakfor , mola vb.) sadece bir yapının ötesine geçen operatörler olarak. Belki de bu yüzden diğer dillerin geliştiricileri henüz bu kadar şüpheli bir operatör kullanmamışlardır? ..

 
ds2 писал (а):
Ve herkese, MQL'yi otomatik bir ticaret dili olarak geliştirmeye yönelik daha acil görevleri çözmekten alıkoyan isteklerle MQ'yu rahatsız etmemelerini öneriyorum.


gitmek için varım . :) Böyle bir programın mantığı daha şeffaf olacaktır.

Sevgili geliştiriciler! Lütfen "otomatik bir ticaret dili olarak MQL'yi iyileştirmeye yönelik daha acil görevleri çözmekten" dikkatinizi dağıtmayın.

Artık sizi rahatsız etmeyeceğiz.

Yine de yapmanız gereken tek şey ds2'nin görüşünü dikkate almak.

 

Şüpheci Filozov makalesinden esinlenilmiştir - ah, test raporuna puan olarak ortalama kar ve zararı ve anlaşmanın maksimum ve minimum değerlerini girin.

 

İstekler salt okunur


Fonksiyonları girin veya mevcut fonksiyonların terminalin tüm alt klasörlerine erişmesine izin verin

işlenecek materyalin olduğu yerler: örneğin, günlükler

yalnızca salt okunur modda


\experts klasöründe başka bir \experts\ services klasörü planlayın

DC'den gelen her türlü bilginin merkezi olarak yazılacağı yer.

Örneğin, bir takvimin otomatik olarak güncellenen biçimlendirilmiş bir dosyası, "sayılarla" haberler, vb...


İsteğin ne olduğunu netleştirmeniz gerekiyorsa, sorun değil. ;)

 

grafikte olmasını isterim
1. saç çizgisi, çünkü 1 kalınlığındaki çizgiler kaba görünüyor.

2. Rakamlar+2 yuvarlatılmış satırların görüntülenmesi güzel olurdu.

Çizgiler artık Rakamlar aracına yuvarlanarak bir adımla sonuçlanır.

- Modern grafik ürünlerle çevrili bu dikkat çekicidir ve pratikte artık uygun değildir.

 
Danışmanın müşterinin grafiklerine hizmet edebilmesi nedeniyle, "teknolojik kenelere" çok ihtiyaç duyuldu.
örneğin formda
 int servis () 
{
return ( 0 ) ;
}

Hangi, Başlat gibi, alır / başlar, ancak sunucudan değil, terminalin yerel zamanlayıcısından.
Gerekli Teknik Kene Süresi kimseye zarar vermez: 1 ila 3 sn.
Bu değişiklik, sürüm 5'i beklemeden doğrudan MQL-4'e eklenebilir. Tabiri caizse, kaçmak ve davanın iyiliği için.
 
Korey :

METALANG'DA HATA

 extern double  Lot = 0.2 ;
int start ()
{ double   Lot ; }

Bir değişkenin çift başlatılması hatasız ve uyarısız derlenir.


 extern double    Lot = 0.2 ;
double    Lot ;   //а так ошибку - дает
int start ()
{ }

Yerel bir değişken , global olanı maskeler. Hata yok.

 

Korey , tam olarak null çünkü dış değişken maskeleniyor:

 double Lot ;

start() işlevi içinde başlatılmamış bir yerel değişken bildirimidir. Varsayılan olarak, sıfıra başlatılır. start() içinde çağrılan ve Lot giriş parametresine sahip olan tüm fonksiyonlar, harici bir değişkenin değil, yerel bir değişkenin değerini alır. Tek istisna, start()'tan önce yürütülen init() içindeki fonksiyonlar içindir. Orada, Lot parametresi (aynı şekilde maskelenmemişse) harici değişkenin değerini almalıdır, yani. 0.2.


Kullandığınız kodun tamamı veya tamamıyla sonuçlanmadınız. my_funk()'u nereden arıyorsun?

 
Korey :

Eğer maskelenmişse, o zaman neden programda daha sonra diğer fonksiyonlar 0,2 değil 0 olsun. harici olarak yazıldığı gibi mi?


İddiaları kendiniz kontrol etmeniz gerekiyor. İşte basit bir komut dosyası:

 //+------------------------------------------------------------------+
//|                                                CheckVariable.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright " Copyright © 2008, MetaQuotes Software Corp. "
#property link        " http://www.metaquotes.net/ "
 
extern double Var = 0.0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init ()
   {
   Print ( " Функция init():Внешняя переменная на глобальном уровне Var= " , Var ) ;
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MyFunc ()
   {
   Var = - 100 ;
   Print ( " Функция MyFunc(): Переменная Var= " , Var ) ;
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit ()
   {
   Print ( " Функция deinit():Внешняя переменная на глобальном уровне Var= " , Var ) ;
   }
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start ()
   {
//----
   double Var = 15 ;
   Print ( " Локальная переменная на локальном уровне функции start() Var= " , Var ) ;
   MyFunc () ;
   Print ( " Локальная переменная на локальном уровне после выполнения функции MyFunc() Var= " , Var ) ;
 
   Print ( " Функция start() завершена " ) ;
 
//----
   return ( 0 ) ;
   }
//+------------------------------------------------------------------+


ve komut dosyasının sonuçları.

Neden: