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

 

Et voici la chose intéressante que j'ai remarquée... Je n'ai pas prêté attention à cette différence.

Dans mql4, si vous écrivez cette addition de chaînes de caractères à travers la fonction StringConcatenate(), alors vous obtenez

eStr+=StringConcatenate(i,": ",eArray[i],", ");

et dans mql5 c'est juste

StringConcatenate(eStr, i, ": ", eArray[i], ", ");
Je me trompe peut-être en n'utilisant pas cette adresse .............
 
Alexey Viktorov:

Je ne recommande pas d'utiliser cette fonction car elle fonctionne différemment dans MQL5 et dans MQL4. Par conséquent, il peut être difficile à comprendre lorsque vous passez à MQL5


Mais peut-être que je me trompe...

mql4

mql5

Comme vous pouvez le constater, mql5 est très similaire à la simple addition de chaînes de caractères.

Et la conversion des types s'effectue dans cette fonction sans aucun souci supplémentaire.

Oui, on en a déjà parlé.

des trois options StringAdd() , StringConcatenate() et les plus,

les plus sont moins coûteux.

 
ANDREY:

Pourquoi 1.6251 ne peut pas être converti en chaîne de caractères aussi explicitement que i ? Il est plus court et économise les ressources informatiques..... il me semble.

Merci pour l'explication.

Car une telle conversion peut donner une valeur allant jusqu'à 16 caractères (si mon cerveau n'est pas complètement desséché). Et DoubleToString() "découpe" la chaîne de caractères en fonction du nombre de décimales spécifié. Un nombre entier i restera un nombre entier, quelle que soit la façon dont on le tourne.

 
Alekseu Fedotov:

Oui, on en a parlé une fois, je ne vais pas chercher.

des trois options StringAdd() , StringConcatenate() et les plus,

les plus sont moins coûteux.

Peut-être... Mais je ne suis pas favorable à l'idée de fouiller dans des divergences aussi mineures.
 
TrederMT5:

J'ai modifié le code, mais le tableau est toujours hors limites au même endroit.

Vérifier si N dans le tableau
double price[N];

prend toujours des valeurs valides ?
 

Pouvez-vous me dire comment faire en sorte que Print(), imprime une fois quand la valeur change

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart); Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
MakarFX:

Dites-moi comment faire pour que Print(), imprime une fois quand la valeur change.

Régler le compteur

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               i++;
               symbol=ChartSymbol(currChart); 
               if(i==1) Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);
        }
 
Vitaly Muzichenko:

Régler le compteur

Merci.
 
Vitaly Muzichenko:

Régler le compteur

Ne fonctionne pas(
 
MakarFX:

Pouvez-vous me dire comment faire pour que Print(), imprime une fois quand la valeur change

Je préfère les options booléennes

 if(Work==false) // Критическая ошибка
     {
      if(AlertWork==false)   // Если Алерта еще не было
        {  Alert("Critical error. The expert Advisor doesn't work."); AlertWork=true; }
      return;
     }                    
Raison: