Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 567

 

AlexeyVik, Vladon,

Oui, comme c'est généralement le cas, c'est assez évident. C'est soit mon inattention, soit mon surmenage. Merci pour le conseil.

Une autre erreur s'est produite, pas même une erreur, mais un avertissement dans la fonction :

// 1.5 Возвращает массив INT из элементов массива STRING. =================================================================================
void fCreat_StrToInt (string& fsa_Value[],                                     // Массив элементов string
                      int& fia_OUT[],                                          // Возвращаемый массив int
                      int fi_IND,                                              // Количество ячеек в массиве
                      int fi_Factor = 1,                                       // Множитель
                      string fs_NameArray = "")                                // Имя возвращаемого массива
{
    int    li_size = ArraySize (fsa_Value);
    string ls_row = "";
//----
    ArrayResize (fia_OUT, fi_IND);
    
    for (int li_int = 0; li_int < fi_IND; li_int++)
    {
        if (li_int < li_size)
        {
            fia_OUT[li_int] = StrToInteger (fsa_Value[li_int]) * fi_Factor;
        }
        else
        {
            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor;
        }
        ls_row = StringConcatenate (ls_row, fs_NameArray, "[", li_int, "] = ", fia_OUT[li_int], "; ");
    }
    
    if (fs_NameArray != "") Print (ls_row);
//----
}

Sur la ligne :

            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor;
Le code semble être correct. Faut-il ignorer ces avertissements ?
 
Quel est l'avertissement ?
 
hoz:

AlexeyVik, Vladon,


Ça semble être un code normal. Devrions-nous ignorer ces avertissements ?


Qu'est-ce qui est normal là-bas ?

void fCreat_StrToInt (string& fsa_Value[],                                     // Массив элементов string
                      int& fia_OUT[],                                          // Возвращаемый массив int
                      int fi_IND,                                              // Количество ячеек в массиве
                      int fi_Factor = 1,                                       // Множитель
                      string fs_NameArray = "")                                // Имя возвращаемого массива
{
    int    li_size = ArraySize (fsa_Value);
    string ls_row = "";
//----
    ArrayResize (fia_OUT, fi_IND);
    
    for (int li_int = 0; li_int < fi_IND; li_int++)
    {
        if (li_int < li_size)
        {
            fia_OUT[li_int] = StrToInteger (fsa_Value[li_int]) * fi_Factor; // это верно
        }
        else
        {
            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor; // Это НЕ ВЕРНО !
        }
        ls_row = StringConcatenate (ls_row, fs_NameArray, "[", li_int, "] = ", fia_OUT[li_int], "; ");
    }
    
    if (fs_NameArray != "") Print (ls_row);

Vous avez une incompatibilité de type (mise en évidence en rouge) : vous essayez de passer une valeur de type double dans le type int, qui a une plage de valeurs beaucoup plus large que int. Il peut y avoir une perte de valeur. Le compilateur vous avertit sûrement à ce sujet.
 
Vladon:
Quel est l'avertissement ?
possible loss of data due to type conversion
 
VladislavVG:

Qu'est-ce qu'il y a de normal ?

Vous avez une incompatibilité de type (mise en évidence en rouge) : vous essayez de passer une valeur de type double dans le type int, qui a une gamme de valeurs beaucoup plus large que int. Il peut y avoir une perte de valeur. Le compilateur doit sûrement vous en avertir.
Mais qu'en est-il de la conversion implicite des types ? Bien que je convienne que cela puisse provoquer une erreur. Il vaut mieux convertir tout de suite via StrToInteger.
 

Comment calculer le nombre de caractères ?

Et comment savoir si c'est un jour de congé (samedi, dimanche) ?

 
hoz:
Qu'en est-il de la conversion implicite des types ? Bien que je sois d'accord, cela peut provoquer une erreur. Il est préférable de convertir directement via StrToInteger.

Si vous passiez l'int en double, il n'y aurait pas de problème. Vous passeriez une valeur d'un type avec une gamme plus petite à un type avec une gamme plus grande. Et il n'y aurait aucune perte possible de données. Et, par conséquent, il n'y aurait pas non plus d'avertissement.
 

Bonjour à tous !

La documentation de MQL4 a changé. Le tutoriel n'a pas changé.

Pour utiliser les nouvelles fonctionnalités de MQL4, il est nécessaire d'étudier le tutoriel MQL5 ?

Ou existe-t-il une autre littérature spéciale ?

 
kosmos0975:

Bonjour à tous !

La documentation de MQL4 a changé. Le tutoriel n'a pas changé.

Pour utiliser les nouvelles fonctionnalités de MQL4, il est nécessaire d'étudier le tutoriel MQL5 ?

Ou existe-t-il une autre littérature spéciale ?

Non, vous ne le faites pas. Si vous étudiez 4, étudiez la documentation pour 4. Bien que, si quelque chose, ils sont en quelque sorte entrelacés.

Comme je le vois, le compilateur est maintenant unifié (vous pouvez écrire à la fois pour 4 et sub-4). C'est pourquoi la documentation est la même, à quelques différences près. En général, je conseille de lire la documentation pour le 4 et de rester à l'écart du 5. C'est plus compliqué, à première vue. Vous n'y perdrez rien.

 
J'ai accédé à un compte en direct par la société Teletrade depuis mon ordinateur et ma tablette n'ouvre pas de compte en direct la tablette fonctionne sur android 4.2.2. quelle est la raison ?