Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 111

 
trader781:
No entiendo cómo, he corregido los nombres, la línea sigue siendo roja independientemente del tipo de orden, sólo que se llama de otra manera. (entonces tengo que encontrar la forma de cortarlo a 10 barras), necesito exactamente la forma
Pruébalo ahora
Archivos adjuntos:
 
Sergey Gritsay:
pruébalo ahora.

Es bueno que haya un libro de consulta por ahí)

Al pulsar el botón de compilar el bot muere junto con el terminal, y después de abrir EX no se abre y este archivo está vacío.

Se ve así.

También se mira, si se pone azul, verde, dorado, blanco, estos colores cambian, pero el gris oscuro y el azur no se ponen, sale blanco.

Archivos adjuntos:
 
trader781:

Es bueno que haya un libro de consulta por ahí)

Al pulsar el botón de compilar el bot muere junto con el terminal, y después de abrir EX no se abre y este archivo está vacío.

Se ve así.

También he mirado, si pongo azul, verde, dorado, blanco, estos colores cambian, pero el gris oscuro y el azul no, sale blanco.

Estoy compilando bien.
 
Sergey Gritsay:
string  StringSubstr(
   string  string_value,     // строка
   int     start_pos,        // с какой позиции начать
   int     length=0          // длина извлекаемой строки
   );
...

Gracias.

También necesito ayuda: tengo que averiguar cuántos caracteres hay en una cadena, ¿cómo lo hago?

 
Buenas tardes.
Uso StringSplit para dividir una cadena leída de un archivo. Pero la salida del array pierde las cadenas, todas excepto la primera. En la salida, todas las cadenas, excepto la primera, están vacías, aunque el tamaño de la matriz es correcto.

Además, me he encontrado con un comportamiento incomprensible con arrays de cadenas. Tengo que hacer arrays bidimensionales para almacenar cadenas en un array.

¿Alguien se ha encontrado con este comportamiento?

while( idx < size ) {
    if( StringFind( fileBuffer[idx][0], "[Main]" ) >= 0 ) {
        idx++;
        Print( "Buffer(main) = " + fileBuffer[idx][0] ); // debug
        if( StringFind( fileBuffer[idx][0], "Kit_Names=" ) >= 0 ) {
            Print( "check1 - " + fileBuffer[idx][0] ); // debug
            string tmp = StringSubstr( fileBuffer[idx][0], 10 );
            Print( tmp );                              // debug
            StringReplace( tmp, "\"", "" );
            Print( tmp );                              // debug
            Print( StringSplit( tmp, sep, list ) );
            Print( "check22 - " + tmp );               // debug
            for(int i = 0; i < ArrayRange(list,0); i++) Print(list[i][0]);  // debug
        }
    }
    idx++;
}
 
-Aleks-:

Gracias.

También necesito ayuda: tengo que averiguar cuántos caracteres hay en una cadena, ¿cómo lo hago?

Devuelve el número de caracteres de la cadena.

int  StringLen(
   string  string_value      // строка
   );

 
terentjew23:

Devuelve el número de caracteres de una cadena.

int  StringLen(
   string  string_value      // строка
   );

¡Gracias!

 
Un consejo, por favor.

Declaro un array a nivel global de EA. Luego en la función especial init() llamo a la función de usuario que llena el array con constantes de cadena.

Luego, en la función especial start(), utilizo el array sólo para leer los datos.

Algún tiempo después, otros datos llenarán la matriz. Es decir, cuando ejecuto el EA, espero que el array permanezca sin cambios mientras el EA está trabajando, pero los datos de alguna manera llegan al array, y sólo después de algún tiempo (más de 10 minutos). Cuando reinicie el Asesor Experto, el array se llenará como debe ser, pero algún tiempo después, por razones que no entiendo, el array volverá a contener los valores erróneos.

La única salida es recargar constantemente el array en el start(), pero no me gusta mucho, porque el array debería llenarse realmente sólo durante la inicialización.

¿Cuál puede ser el problema? ¿Cómo proteger la matriz de las modificaciones?
 
Maksym Mudrakov:
¿Puedes darme una pista, por favor?
...
¿Qué puede ser? ¿Cómo evitar que un array sea modificado?
Compruebe el código a fondo.
 
Maksym Mudrakov:
Un consejo, por favor.

Declaro un array a nivel global de EA. Luego en la función especial init() llamo a la función de usuario que llena el array con constantes de cadena.

Luego, en la función especial start(), utilizo el array sólo para leer los datos.

Algún tiempo después, otros datos llenarán la matriz. Es decir, cuando ejecuto el EA, espero que el array permanezca sin cambios mientras el EA está trabajando, pero los datos de alguna manera llegan al array, y sólo después de algún tiempo (más de 10 minutos). Cuando reinicie el Asesor Experto, el array se llenará como debe ser, pero algún tiempo después, por razones que no entiendo, el array volverá a contener los valores erróneos.

La única salida es recargar constantemente el array en el start(), pero no me gusta mucho, porque el array debería llenarse realmente sólo durante la inicialización.

¿Cuál puede ser el problema? ¿Cómo proteger la matriz de las modificaciones?
¿Puedo ver el código?