Autoaprendizaje del lenguaje MQL5 desde cero - página 77

 
MrBrooklin:

Hola Alexey, para ser sincero no soy muy bueno programando. ¿Significa esto que el código proporcionado por Konstantin debe ser mejorado?

Sinceramente, Vladimir.

Hay que rehacerlo y desecharlo.

 
Alexey Viktorov:

Hay que rehacerlo y tirarlo.

¡Por qué tan cruel!

¡¡¡Gracias Alexey!!! Su código funciona perfectamente.

Saludos, Vladimir.

 

Alexey, todo está claro sobre la búsqueda, porque StringFind es una búsqueda de una subcadena en una cadena:

int  StringFind( 
   string  string_value,        // строка, в которой ищем 
   string  match_substring,     // что ищем 
   int     start_pos=0          // с какой позиции начинать поиск 
   );

Lo único que no consigo entender es por qué comprobamos la función de igualdad a cero cuando buscamos una subcadena en una cadena.

if(StringFind(_Symbol, Symbol_Main, 0) == 0)

Saludos, Vladimir.

 
MrBrooklin:

Alexey, todo está claro sobre la búsqueda, porque StringFind es una búsqueda de una subcadena en una cadena:

Lo único que no consigo entender es por qué comprobamos la función de igualdad a cero cuando buscamos una subcadena en una cadena.

Saludos, Vladimir.

De la documentación de

Valor devuelto

La función devuelve el número de la subcadena en la cadena, en la que comienza la subcadena buscada. Si no se encuentra ninguna subcadena, la función devuelve -1.

Es decir, el símbolo del gráfico comienza con "GBPUSD" y no importa el sufijo que se adjunte.

Sin embargo, yo también me precipité un poco. Si introduce sólo "GBP", por ejemplo, cualquier gráfico será válido si la moneda base es "GBP". Además, debemos comprobar la longitud del texto introducido en la línea de entrada.
 
Alexey Viktorov:

En la documentación

Es decir, el símbolo del gráfico comienza con "GBPUSD" y no importa el sufijo que se adjunte.

Aunque yo también me precipité un poco. Si introduce sólo "GBP", por ejemplo, cualquier gráfico será válido si la moneda base es "GBP". Además, debemos comprobar la longitud del texto en la línea de entrada.

pero sólo comparar... y limitar la entrada a las letras minúsculas. o enum, eso es para foolproof))))

 
Alexey Viktorov:

En la documentación

Es decir, el símbolo del gráfico comienza con "GBPUSD" y no importa el sufijo que se adjunte.

Aunque yo también me precipité un poco. Si introduce sólo "GBP", por ejemplo, cualquier gráfico será válido si la moneda base es "GBP". Además, debemos comprobar la longitud del texto en la línea de entrada.

¡Ya veo!

Saludos, Vladimir.

 
Valeriy Yastremskiy:

pero sólo comparar... y limitar la entrada a minúsculas. o enum, por el bien de la tontería))))

¡Hola Valery! Comenzó con ENUM_SYMBOL_INFO_STRING desde el principio, pero por alguna razón nada funcionó. Sin embargo, puedes volver a intentarlo.

Sinceramente, Vladimir.

 
Valeriy Yastremskiy:

pero sólo comparar... y limitar la entrada a las letras minúsculas. o enum, lo que es foolproof))))

También se podría simplemente comparar, pero si los caracteres tienen un sufijo, hay que introducirlos tal cual. En general, hay muchas opciones, y es inútil discutir sobre los gustos de los flomadores.

Pero si tiene un enum, será necesario buscar en la cadena. Porque el enum contiene nombres de símbolos puros y el gráfico puede contener cualquier anexo.

 
Alexey Viktorov:

¿Por qué burlarse tanto de una mente inmadura? Su código no cumple el requisito en absoluto. Si sólo se introduce "eu" o "eur" en los parámetros de entrada, esta parte de la condición

se cumplirá sin importar que el par de divisas contenga "EU" en su nombre y no importa que el EUR sea la moneda base o la cotizada. ¿Y por qué recorrer el SymbolName de MarketWatch buscando el símbolo correcto?

Alexei, es un código bastante normal. No es normal, hay que introducir varios símbolos en un parámetro, lo cual es poco probable que lo haga cualquiera.

Tengo más o menos la misma implementación en mi producto de trabajo.

Esta implementación funciona con éxito en una solución multidivisa, lo que no puede decirse de otros códigos, es decir, el código es universal.

 
Alexey Viktorov:

También podrías simplemente compararlos, pero si los caracteres tienen un sufijo, tienes que introducirlos tal cual. En general, hay bastantes opciones y es una tarea inútil discutir sobre los gustos de los flamencos.

Pero si tiene un enum, será necesario buscar en la cadena. El enum se utiliza para almacenar los nombres de los símbolos puros, mientras que el gráfico puede contener cualquier adjunto.

Alexey, gracias por el consejo en negrita. Intentaré rehacer la primera versión del código que escribí antes, por el bien del interés.

Saludos, Vladimir.

Razón de la queja: