Fehler, Irrtümer, Fragen - Seite 951

 
Ist es möglich, eine Funktion mit einer variablen Anzahl von Parametern in MQL5 zu schreiben? Zum Beispiel, wie in StringConcatenate(...) oder Print(...)?
 
skteks:

Ich habe den Standard ExpertMACD Expert Advisor im Strategietester getestet, der zusammen mit MT5 ausgeliefert wird, er erzeugt Fehler:

2013.03.30 19:18:09 Core 2 genetic pass (0, 15) getestet mit Fehler "OnInit failed" in 46 ms

2013.03.30 19:18:08 Core 1 genetic pass (0, 13) getestet mit Fehler "OnInit failed" in 32 ms

2013.03.30 19:18:07 Core 2 genetic pass (0, 5) getestet mit Fehler "OnInit failed" in 0 ms

Ich habe durch Suchen herausgefunden, dass der Fehler im Modul liegt: "SignalMACD" bei der Optimierung der schnellen und langsamen MACD-Perioden (beim Ankreuzen der Kästchen in den Parametern des Strategietesters).

Ist jemand auf ein solches Problem gestoßen und wie kann man damit umgehen? (wenn es nur ein Häkchen gibt, funktioniert es irgendwie, aber es gibt Fehler, sobald man zwei Häkchen überprüft)

Stellen Sie einen anderen Bereich für die Änderungen Langsam und Schnell ein. Der Fehler wird verschwinden. Sie können es einfach ignorieren.

 
w1sp:
Ist es möglich, eine Funktion mit einer variablen Anzahl von Parametern in MQL5 zu schreiben? Zum Beispiel, wie in StringConcatenate(...) oder Print(...)?
Ja, das kann man, man nennt es Funktionsüberladung.
 
w1sp:
Ist es möglich, in MQL5 eine Funktion mit einer variablen Anzahl von Parametern zu schreiben? Zum Beispiel, wie in StringConcatenate(...) oder Print(...)?

Sie können zum Beispiel ein Array erstellen, dessen Größe der Anzahl Ihrer Parameter entspricht, die Sie als Parameter angeben.

 
Ich bin an einer variablen Anzahl von Parametern wie bei StringConcatenate interessiert. Etwa so: string Concatenate(string s, ...); Ist das möglich?
 
w1sp:
Ich bin an einer variablen Anzahl von Parametern wie in StringConcatenate interessiert. Etwas wie dieses: string Concatenate(string s, ...); Ist es möglich?

Ähnliches ist möglich. Es können bis zu 64 Parameter an eine Funktion übergeben werden.

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:

Ähnliches ist möglich. Es können bis zu 64 Parameter an eine Funktion übergeben werden.

Und wir können beliebige Typen für alle Argumente nur durch Überladen erhalten? Das heißt, dass nicht nur String, sondern auch Double an eine Funktion übergeben werden kann, z.B.: string s = Concatenate("abc",2.0, "def");

 
w1sp:

Und beliebige Typen für alle Argumente können nur durch Überladen erreicht werden? Das heißt, dass nicht nur String, sondern auch Double an die Funktion übergeben werden kann, z.B. string s = Concatenate("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:
Ich danke Ihnen. Ich hab's. Es reicht aus, eine Funktion mit 64 Argumenten vom Typ String zu erstellen und allen außer dem ersten einen Standardwert hinzuzufügen.
Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Hallo. Nach dem Upgrade des MT5-Builds wird der Indikator im Tester nicht mehr normal angezeigt, im Terminal selbst wird er normal angezeigt. Der Indikator ist recht komplex und ressourcenintensiv (ZUP), ich übersetze ihn von MT4 auf MT5. Im Tester wird Bild 756 ZigZag-Linie normal angezeigt, im Tester nach Bild 770 - ZigZag sind Preiswerte korrekt, aber der Zeitrahmen ist nicht korrekt (verschoben, nicht gleichmäßig) ZigZag - Ausgabepuffer. Gleichzeitig werden die grafischen Objekte (Dreiecke, Linien usw., die übrigens auf den Daten des Ausgabepuffers (auch ZigZag) beruhen) normal angezeigt. Bitte helfen Sie mir, dies zu verstehen.