Hatalar, hatalar, sorular - sayfa 951

 
MQL5'te değişken sayıda parametreye sahip bir fonksiyon yazmak mümkün müdür? Örneğin, StringConcatenate (...) veya Print(...)?
 
skteks :

Strateji test cihazında, MT5 ile birlikte verilen standart ExpertMACD Expert Advisor'ı test ettim, hata veriyor:

2013.03.30 19:18:09 Core 2 genetik geçiş (0, 15), 46 ms'de "OnInit başarısız oldu" hatasıyla test edildi

2013.03.30 19:18:08 Çekirdek 1 genetik geçiş (0, 13) 32 ms'de "OnInit başarısız oldu" hatasıyla test edildi

2013.03.30 19:18:07 Çekirdek 2 genetik geçiş (0, 5) 0 ms'de "OnInit başarısız oldu" hatasıyla test edildi

seçim yöntemiyle, MACD'nin Hızlı ve Yavaş dönemlerini optimize ederken (strateji test cihazı parametrelerindeki kutuları işaretlediğinizde) "SignalMACD" modülünde bir hata olduğunu öğrendim.

Bu sorunla karşılaşan var mı ve nasıl başa çıkılır? (yalnızca bir onay işareti olduğunda, yine de bir şekilde çalışır, ancak iki tane koyar koymaz hemen hata verir)

Yavaş ve Hızlı için farklı bir değişiklik aralığı ayarlayın. Hata ortadan kalkacaktır. Sadece görmezden gelebilirsin.

 
w1sp :
MQL5'te değişken sayıda parametreye sahip bir fonksiyon yazmak mümkün müdür? Örneğin, StringConcatenate(...) veya Print(...)?
Evet yapabilirsiniz, buna Function Overloading denir.
 
w1sp :
MQL5'te değişken sayıda parametreye sahip bir fonksiyon yazmak mümkün müdür? Örneğin, StringConcatenate(...) veya Print(...)?

Örneğin, boyutu parametrelerinizin sayısına eşit olacak bir diziyi parametre olarak yapabilirsiniz.

 
StringConcatenate'de olduğu gibi, ilgilenilen parametre değişken sayısıdır. Bunun gibi: string Concatenate(string s, ...); Mümkün mü?
 
w1sp :
StringConcatenate ilgi alanlarında olduğu gibi değişken parametre sayısı. Bunun gibi: string Concatenate(string s, ...); Mümkün mü?

Benzeri mümkündür. Fonksiyona 64 adede kadar parametre iletilebilir.

 void OnStart ()
  {
string s1=Foo( "5" );
string s2=Foo( "5" , "t" );

// string s=Foo(,"5"); // Ошибка
   
  }
//+------------------------------------------------------------------+
string Foo( string i0= "" , string i1= "" , string i2= "" )
{

string rez=i0+i1+i2;

return rez;
} 
 
Snaf :

Benzeri mümkündür. Fonksiyona 64 adede kadar parametre iletilebilir.

Ve tüm argümanlar için isteğe bağlı türler yalnızca aşırı yükleme ile elde edilebilir mi? Yani, örneğin fonksiyona sadece string değil, double da geçirilebilir. string s = Birleştir("abc",2.0,"def");  

 
w1sp :

Ve tüm argümanlar için isteğe bağlı türler yalnızca aşırı yükleme ile elde edilebilir mi? Yani, örneğin fonksiyona sadece string değil, double da geçirilebilir. string s = Birleştir("abc",2.0,"def");  

 void OnStart ()
  {
//string s1=Foo("5");  // Это теперь ошибка. Компилятор не знаек какой функцией из двух пользоваться
string s2=Foo( "5" , 3.0 );

// string s=Foo(,"5"); // Ошибка
   
  }
//+------------------------------------------------------------------+
string Foo( string i0= "" , string i1= "" , string i2= "" )
{

string rez=i0+i1+i2;

return rez;
}

string Foo( string i0= "" , double i1= 2.0 , string i2= "" )
{
string rez;
if (i1> 2.0 ) {rez=i0+i2;} else rez=i0+ "99" +i2;

return rez;
}  
 
Snaf :
Teşekkür ederim. Anladım. 64 argümanlı string türünde bir fonksiyon yapmak ve ilki hariç her şeye varsayılan bir değer eklemek yeterlidir.
Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Merhaba. MT5 yapısını güncelledikten sonra, gösterge artık test cihazında normal şekilde görüntülenmiyor, terminalin kendisinde normal şekilde görüntüleniyor. Gösterge oldukça karmaşık ve kaynak yoğun (ZUP), onu MT4'ten MT5'e aktarıyorum. Build 756 test cihazında ZigZag çizgisi normal olarak görüntüleniyor, Build 770'ten sonraki test cihazlarında ZigZag fiyat değerleri doğru ancak zaman dilimleri doğru değil (kaydırılmış ve eşit değil) ZigZag bir çıktı tamponudur. Aynı zamanda, çıktı arabelleklerinden (ZigZag dahil) alınan veriler temelinde oluşturulan grafik nesneleri (üçgenler, çizgiler vb.) normal olarak görüntülenir. Yardım edin, lütfen anlayın.