Erreurs, bugs, questions - page 951

 
skteks:

J'ai testé le conseiller expert standard ExpertMACD dans le testeur de stratégie, qui est livré avec MT5, il génère des erreurs :

2013.03.30 19:18:09 Core 2 genetic pass (0, 15) testé avec l'erreur "OnInit failed" en 46 ms

2013.03.30 19:18:08 Core 1 genetic pass (0, 13) testé avec l'erreur "OnInit failed" en 32 ms

2013.03.30 19:18:07 Core 2 genetic pass (0, 5) testé avec l'erreur "OnInit failed" en 0 ms

J'ai découvert en cherchant que l'erreur se trouve dans le module : "SignalMACD" lors de l'optimisation des périodes MACD rapide et lente (en cochant les cases dans les paramètres du testeur de stratégie).

Quelqu'un a-t-il rencontré un tel problème et comment y faire face ? (lorsqu'il n'y a qu'un seul tic, cela fonctionne en quelque sorte, mais il y a des erreurs dès que vous vérifiez deux tics)

Définissez une gamme différente de changements Lent et Rapide. L'erreur disparaîtra. Vous pouvez simplement l'ignorer.

 
w1sp:
Est-il possible d'écrire une fonction avec un nombre variable de paramètres dans MQL5 ? Par exemple, comme dans StringConcatenate(...) ou Print(...) ?
Oui, vous pouvez, cela s'appelle la surcharge de fonctions.
 
w1sp:
Est-il possible d'écrire en MQL5 une fonction avec un nombre variable de paramètres ? Par exemple, comme dans StringConcatenate(...) ou Print(...) ?

Par exemple, vous pouvez créer un tableau dont la taille sera égale au nombre de vos paramètres en tant que paramètre.

 
Je suis intéressé par un nombre variable de paramètres comme dans StringConcatenate. Comme ceci : string Concatenate(string s, ...) ; Est-ce possible ?
 
w1sp:
Je suis intéressé par un nombre variable de paramètres comme dans StringConcatenate. Quelque chose comme ceci : string Concatenate(string s, ...) ; Est-ce possible ?

Une situation similaire est possible. Jusqu'à 64 paramètres peuvent être passés à une fonction.

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:

Une situation similaire est possible. Jusqu'à 64 paramètres peuvent être passés à une fonction.

Et nous pouvons obtenir des types arbitraires pour tous les arguments seulement en surchargeant ? C'est-à-dire que non seulement une chaîne de caractères, mais aussi un double peuvent être passés à une fonction, par exemple. chaîne de caractères s = Concatenate("abc",2.0, "def");

 
w1sp:

Et des types arbitraires pour tous les arguments ne peuvent être obtenus que par surcharge ? C'est-à-dire que non seulement une chaîne de caractères, mais aussi un double peuvent être passés à la fonction, par exemple. chaîne de caractères s = Concaténate("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:
Merci. Je l'ai. Il suffit de créer une fonction avec 64 arguments de type string et d'ajouter une valeur par défaut à tous les arguments sauf le premier.
Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Bonjour. Après la mise à jour de la build MT5, l'indicateur ne s'affiche plus normalement dans le testeur, dans le terminal lui-même il s'affiche normalement. L'indicateur est assez complexe et gourmand en ressources (ZUP), je le traduis de MT4 à MT5. Dans le testeur, la ligne ZigZag de Bild 756 est affichée normalement, dans le testeur après Bild 770 - les valeurs de prix ZigZag sont correctes, mais le cadre temporel n'est pas correct (décalé, non uniforme) ZigZag - tampon de sortie. En même temps, les objets graphiques (triangles, lignes, etc., qui sont d'ailleurs basés sur les données des tampons de sortie (ZigZag également)) s'affichent normalement. Aidez-moi à comprendre.
 

Dans l'indicateur, les variables statiques sont initialisées lors de la commutation du TF.

Est-ce que c'est comme ça que ça doit être ?

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0
static bool flag=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print(flag);
   flag=false;
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   return(rates_total);
  }
Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - Документация по MQL5