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

 
Seric29 :

Örneğin, girdi parametrelerini bildiriyorum ve bu parametrelerden global değişkenleri alıp görüntülemem gerekiyor, ancak bir sorun var, girdi parametreleri bir dizi olamaz

Girdi değişkenlerinden bahsediyorsak, bunu basitleştirebilirsiniz - küresel görünürlükleri vardır ve bunları kodun herhangi bir bölümünde kullanabilirsiniz.

veya OnInit() bölümünde diziye bir kez yazın ve daha sonra diziyi diziye kopyalamak için atayabilirsiniz , ancak burada dizilerin aynı olması gerekir - diziyi bir kenar boşluğu ile alın, ancak sonra kontrol etmeniz gerekir dizi indeks numaralarını hata almamak için - belki boş bir dizi değeri kullanacaksınız - derleyici hata vermeyecek ve hesaplamalar hatalı olacaktır

 input int a1= 1 ;
input int a2= 2 ;
input int a3= 3 ;

int ArrayOfInput[ 3 ];
int OnInit ()
  {
   ArrayOfInput[ 0 ] =a1;
   ArrayOfInput[ 1 ] =a2;
   ArrayOfInput[ 2 ] =a3;
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
 // delete cx;
  }
//+------------------------------------------------------------------+
void OnTick ()
  {
       int arr[ 3 ];
       ArrayCopy (arr,ArrayOfInput);
  }
//+------------------------------------------------------------------+
Not: Nedense atama operatörünün aynı diziler için çalıştığından emindim, belki onu sınıfla karıştırdım - aynı sınıfın nesneleri varsa kesinlikle orada çalışıyor
 
Igor Makanu :

Girdi değişkenlerinden bahsediyorsak, bunu basitleştirebilirsiniz - küresel görünürlükleri vardır ve bunları kodun herhangi bir bölümünde kullanabilirsiniz.

veya OnInit() bölümünde diziye bir kez yazın ve daha sonra diziyi diziye kopyalamak için atayabilirsiniz , ancak burada dizilerin aynı olması gerekir - diziyi bir kenar boşluğu ile alın, ancak sonra kontrol etmeniz gerekir dizi indeks numaralarını hata almamak için - belki boş bir dizi değeri kullanacaksınız - derleyici hata vermeyecek ve hesaplamalar hatalı olacaktır

Not: Nedense atama operatörünün aynı diziler için çalıştığından emindim, belki onu sınıfla karıştırdım - aynı sınıfın nesneleri varsa kesinlikle orada çalışıyor

Hayır, bunu orada da denedim (belki biraz ve kötü denedim çünkü onlarda pek iyi değilim ama denediğim kadarıyla işe yaramıyor ayrıca sınıfları iki nokta üst üste ile boyamanız gerekiyor, bu senin gösterdiğin gibi yapsan daha iyi) Belki dersler sayesinde gerek yok diye düşündüm, o halde nasıl tek tek satır atadın.

 

Merhaba.

Söyleyin lütfen, standart bir açılır pencerede saat dilimini bir uyarı ile değiştirmek mümkün müdür?

Alarm zamanını terminal zamanı ile senkronize etmek gerekir (eğer terminalde ve uyarı penceresinde farklıysa). Mümkün mü?
 
Neden mql4'te hem int (ve diğer herhangi bir dönüş değeri) hem de void (yordamsal işlev) biçim işlevlerini aynı şekilde çağırmak mümkün, bu nasıl yapılır?
 

Soru. Bir döngüde eşit olmayan adımlarla tüm numaralandırma değerleri üzerinde nasıl yinelenir?


enum türleri {

bir=11,

iki=12,

üç=15,

dört=22,

beş=27

};

 
The_Sheikh :

Soru. Bir döngüde eşit olmayan adımlarla tüm numaralandırma değerleri üzerinde nasıl yinelenir?


enum türleri {

bir=11,

iki=12,

üç=15,

dört=22,

beş=27

};

hiçbir şekilde, sizeof() enum https://docs.mql4.com/en/basis/types/integer/enumeration için çalışmıyor

ve türleri dönüştürürken sabitin adı kaybolur

 enum Types { One= 11 , Two= 12 , Three= 15 , Four= 22 , Five= 27 ,Six = 111 ,Seven = 222 };
enum Types_abc { a, b, c, d, e,f,g};
void OnStart ()
  {
   int sz = sizeof (Types);
   Print ( "sz = " ,sz);
   Types z = Two;
   Types_abc x = b;
   Print ( "z = " , EnumToString (z), " , x = " , EnumToString (x));
   x = (Types_abc)z;
   Print ( "z = " , EnumToString (z), " , x = " , EnumToString (x));
  }

2019.08.03 10:52:13.288 tst EURUSD,H1: sz = 4

2019.08.03 10:52:13.288 tst EURUSD,H1: z = İki , x = b

2019.08.03 10:52:13.288 tst EURUSD,H1: z = İki , x = Types_abc::12


 
Elena Baranova :

Merhaba.

Söyleyin lütfen, standart bir açılır pencerede saat dilimini bir uyarı ile değiştirmek mümkün müdür?

Alarm zamanını terminal zamanı ile senkronize etmek gerekir (eğer terminalde ve uyarı penceresinde farklıysa). Mümkün mü?
Uyarı, bilgisayarın yerel saatini görüntüler. Terminal saatini eşleştirmek için bilgisayar saatini değiştirmeniz yeterlidir.
 
Seric29 :
Neden mql4'te hem int (ve diğer herhangi bir dönüş değeri) hem de void (yordamsal işlev) biçim işlevlerini aynı şekilde çağırmak mümkün, bu nasıl yapılır?

buna "aşırı yük" denir

Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Обычно в названии функции стремятся отобразить ее основное назначение. Читабельные программы, как правило, содержат разнообразные и грамотно подобранные идентификаторы. Иногда различные функции используются для одних и тех же целей. Например, рассмотрим функцию, которая вычисляет среднее значение массива чисел двойной точности, и такую же...
 

Merhaba. Koddaki bir üçüncü taraf gösterge aydınlatıcısından bir giriş sinyali nasıl yakalanır? Gösterge tabloya bir mum çizer ve bir giriş uyarısı görüntüler.

Basitçe söylemek gerekirse, bu gösterge için bir robot yazmak istiyorum.

 
Alexey Viktorov :
Uyarı, bilgisayarın yerel saatini görüntüler. Terminal saatini eşleştirmek için bilgisayar saatini değiştirebilirsiniz.

Teşekkürler ) Tek yol bu mu, alarmda zamanı ayarlamanın başka bir yolu yok mu? Ve MQL4'teki standart Alert() işlevine , uyarı zamanını terminal zamanına ayarlamanın mümkün olacağı bir alternatif var mı?