Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1169

 
Alexandr Sokolov:

il n'arrive pas aux calculs


voici l'initialisation


Et voici la condition de test.

MERCI !!!!!))))) Je Tf=faux exprès et......Oublier . Oups

Tout fonctionne.
 
Alexey Viktorov:
Tout d'abord, nous devons décider du nombre de valeurs dans la deuxième dimension du futur tableau. Nous pouvons déjà voir que le nombre d'éléments n'est pas égal. Probablement, nous devrions prendre le maximum et le remplir de zéros ou de -1, par exemple, là où il reste des uns supplémentaires. Et cela ne ferait pas de mal de définir la première dimension au préalable si elle est connue. Ensuite, dans la boucle imbriquée, prenez L1 et écrivez tout ce dont vous avez besoin dans le tableau, puis la deuxième itération de la boucle externe écrit dans l'index suivant tout ce qui se trouve dans L2 et ainsi de suite.


Et à juste titre, il est préférable de le coller dans une structure.

Le tableau pourra alors changer de dimension dans la première et dans la deuxième dimension. C'est-à-dire qu'il s'agira d'un tableau unidimensionnel dans un tableau unidimensionnel.
Merci pour le vecteur.
 
stepystr:
Merci pour le vecteur.

J'étais soudain confronté à une commande dans laquelle il était également plus rentable d'écrire les paramètres dans une chaîne et de l'utiliser pour créer un tableau de paramètres. Je devais transformer la théorie en pratique. Eh bien, j'ai étendu ma tâche à la vôtre. Voici un exemple utilisant des structures. Seulement dans vos exemples, à la fin de la liste des valeurs, vous devez supprimer le caractère de délimitation " ;".

/********************************************************************\
|                                                             00.mq5 |
|                                            © 2020, Alexey Viktorov |
|                       https://www.mql5.com/ru/users/alexeyvik/news |
\********************************************************************/
#property copyright "© 2020, Alexey Viktorov"
#property link      "https://www.mql5.com/ru/users/alexeyvik/news"
#property version   "1.00"
struct TEST
 {
  double             s0[];
  double             s1[];
 } test[2];
string L1 = "1.15110;1.14105;1.13240;1.12370;1.11640;1.11170;1.10655;1.09895;1.08850;1.07850;1.06475";
string L2 = "1.32130;1.31030;1.29860;1.29042;1.27985;1.25605;1.24725;1.23565;1.22505;1.20815;1.20115;1.18850;1.16690;1.14465";
/********************Script program start function*******************/
void OnStart()
 {
  String_to_Array(L1, test[0].s0);
  String_to_Array(L2, test[1].s1);
  ArrayPrint(test[0].s0);
  ArrayPrint(test[1].s1);
 }/******************************************************************/

/********************************************************************/
void String_to_Array(string str, double &array[])
 {
  StringTrimRight(str);
  int index = INT_MAX;
  while(index > 0)
   {
    index = StringFind(str, ";");
    int i = ArraySize(array);
    ArrayResize(array, i+1);
    array[i] = StringToDouble(StringSubstr(str, 0, index));
    StringTrimLeft(str);
    str = StringSubstr(str, index+1);
   }
 };/*****************************************************************/
/*****************************End program****************************/
Dossiers :
00.mq5  4 kb
 
Alexey Viktorov:

J'étais soudain confronté à une commande dans laquelle il était également plus rentable d'écrire les paramètres dans une chaîne et de l'utiliser pour créer un tableau de paramètres. Je devais transformer la théorie en pratique. J'ai donc étendu ma tâche à la vôtre. Voici un exemple utilisant des structures. Seulement dans vos exemples, à la fin de la liste des valeurs, vous devez supprimer le caractère de délimitation " ;".

struct TEST
{
   double             s0[];
   double             s1[];
} test[2];
string L1 = "1.15110;1.14105;1.13240;1.12370;1.11640;1.11170;1.10655;1.09895;1.08850;1.07850;1.06475";
string L2 = "1.32130;1.31030;1.29860;1.29042;1.27985;1.25605;1.24725;1.23565;1.22505;1.20815;1.20115;1.18850;1.16690;1.14465";
/********************Script program start function*******************/
void OnStart()
{
   String_to_Array(L1, ';', test[0].s0);
   String_to_Array(L2, ';', test[1].s1);
   ArrayPrint(test[0].s0);
   ArrayPrint(test[1].s1);
}/******************************************************************/

/********************************************************************/
void String_to_Array(const string str, const ushort separator, double &result[])
{
   string s_arr[];
   if(StringSplit(str, separator, s_arr) <= 0)
   {
      ArrayResize(result, 0);
      Print(__FUNCTION__ + " Error converting !");
      return;
   }
   ArrayResize(result, ArraySize(s_arr));
   for(int i = ArraySize(result) - 1; i >= 0; i--)
      result[i] = StringToDouble(s_arr[i]);
}
 

sans contrôles, vous pouvez même faire comme ceci

void String_to_Array(const string str, const ushort separator, double &result[])
{
   string s_arr[];
   StringSplit(str, separator, s_arr);
   for(int i = ArrayResize(result, ArraySize(s_arr)) - 1; i >= 0; i--)
      result[i] = StringToDouble(s_arr[i]);
}
 
Igor Makanu:

C'est aussi une option. Il s'avère que je n'ai pas non plus lu toute la documentation.

 
Alexey Viktorov:

C'est aussi une option. Il s'avère que je n'ai pas non plus lu toute la documentation.

StringSplit est une chose cool, très pratique pour analyser les chaînes de caractères délimitées.

 
Bonjour à tous. Aidez-moi à insérer une variable String dans mon code. Merci.
ObjectCreate("ObjName11",OBJ_LABEL,0,0,0);
   ObjectSetText("ObjName11","|Direction: ="+ <String>   +"|Spread: ="+IntegerToString(Spread,0)+"|Today: ="+DoubleToStr(ATRToday,2)+"%" ,Size,"Verdana",Red);
   ObjectSet("ObjName11",OBJPROP_CORNER,infoCorner);
   ObjectSet("ObjName11",OBJPROP_XDISTANCE,0);
   ObjectSet("ObjName11",OBJPROP_YDISTANCE,120);
 
Carcass77:
Bonjour à tous. Aidez-moi à insérer une variable de type String dans le code. Merci

Pourriez-vous répondre à votre propre question ?

ou bien vous avez découpé un morceau de code quelque part et vous ne pouvez pas l'utiliser ? et vous devez au moins deviner ce qui se passe))))

écrire ci-dessus

string s;

et remplacer <String> par s

mais je ne pense pas que ce soit la bonne façon de procéder avec cette approche.

 
Igor Makanu:

Pourriez-vous répondre à votre propre question ?

ou bien vous avez découpé un morceau de code quelque part et vous ne pouvez pas l'utiliser ? et vous devez au moins deviner ce qui se passe))))

écrire ci-dessus

et remplacer <String> par s

mais je pense que ce n'est pas la solution avec cette approche

Mon indicateur fonctionne, juste en s'étendant. Lachaîne s ; a été ajoutée.

Ok, je vais m'en occuper moi-même.