Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 567

 

AlexeyVik, Vladon,

Sí, como suele ser el caso, es bastante obvio. Es mi falta de atención o el exceso de trabajo. Gracias por el consejo.

Se ha producido otro error, ni siquiera un error, sino una advertencia en la función:

// 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);
//----
}

En la línea:

            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor;
El código parece estar bien. ¿Deben ignorarse estas advertencias?
 
¿Cuál es la advertencia?
 
hoz:

AlexeyVik, Vladon,


Parece un código normal. ¿Debemos ignorar estas advertencias?


¿Qué es lo normal allí?

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);

Tiene un desajuste de tipo (resaltado en rojo): está intentando pasar un valor de tipo double al tipo int, que tiene un rango de valores mucho más amplio que int. Puede haber una pérdida de valor. Seguramente el compilador te advierte de esto.
 
Vladon:
¿Cuál es la advertencia?
possible loss of data due to type conversion
 
VladislavVG:

¿Qué es lo normal?

Tiene un desajuste de tipo (resaltado en rojo): está intentando pasar un valor de tipo double al tipo int, que tiene un rango de valores mucho más amplio que int. Puede haber una pérdida de valor. Seguramente el compilador lo advierte.
Pero, ¿qué pasa con la conversión implícita de tipos? Aunque estoy de acuerdo en que esto puede provocar un error. Será mejor que lo conviertas mediante StrToInteger de inmediato.
 

¿Cómo se calcula el número de caracteres?

¿Y cómo puedo saber si es un día libre (sábado, domingo)?

 
hoz:
¿Qué pasa con la conversión implícita de tipos? Aunque estoy de acuerdo, puede provocar un error. Es mejor convertir directamente mediante StrToInteger.

Si pasaras el int en doble, no habría problema. Estaría pasando un valor de un tipo con un rango menor a un tipo con un rango mayor. Y no habría una posible pérdida de datos. Y, en consecuencia, tampoco habría aviso.
 

Hola a todos.

La documentación de MQL4 ha cambiado. El tutorial no ha cambiado.

Para utilizar las nuevas características de MQL4 es necesario estudiar el tutorial de MQL5 ?

¿O existe otra literatura especial?

 
kosmos0975:

Hola a todos.

La documentación de MQL4 ha cambiado. El tutorial no ha cambiado.

Para utilizar las nuevas características de MQL4 es necesario estudiar el tutorial de MQL5 ?

¿O existe otra literatura especial?

No, no es así. Si estudias el 4, estudia la documentación para el 4. Aunque, en todo caso, los dos están de alguna manera entrelazados.

Según veo, el compilador está ahora unificado (se puede escribir tanto para 4 como para sub-4). Por eso la documentación es la misma, salvo algunas diferencias. En general, aconsejo leer la documentación para el 4 y mantenerse alejado del 5. Es más complicado, a primera vista. No perderás nada con ello.

 
He accedido a una cuenta real a través de la empresa Teletrade desde mi ordenador y mi tableta no abre una cuenta real la tableta se ejecuta en android 4.2.2. ¿Cuál es la razón?