Autoapprendimento del linguaggio MQL5 da zero - pagina 77

 
MrBrooklin:

Ciao Alexey, ad essere onesti non sono molto bravo a programmare. Significa che il codice fornito da Konstantin dovrebbe essere migliorato?

Sinceramente, Vladimir.

Ha bisogno di essere rielaborato e buttato via.

 
Alexey Viktorov:

Ha bisogno di essere rielaborato e buttato via.

Perché così crudele!

Grazie Alexey!!! Il tuo codice funziona perfettamente.

Saluti, Vladimir.

 

Alexey, è tutto chiaro sulla ricerca, perché StringFind è una ricerca di una sottostringa in una stringa:

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

L'unica cosa che non riesco a capire è perché controlliamo la funzione per l'uguaglianza a zero quando cerchiamo una sottostringa in una stringa.

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

Saluti, Vladimir.

 
MrBrooklin:

Alexey, è tutto chiaro sulla ricerca, perché StringFind è una ricerca di una sottostringa in una stringa:

L'unica cosa che non riesco a capire è perché controlliamo la funzione per l'uguaglianza a zero quando cerchiamo una sottostringa in una stringa.

Saluti, Vladimir.

Dalla documentazione di

Valore restituito

La funzione restituisce il numero della sottostringa nella stringa, a cui inizia la sottostringa cercata. Se non viene trovata alcuna sottostringa, la funzione restituisce -1.

Cioè il simbolo del grafico inizia con "GBPUSD" e non importa quale suffisso è allegato.

Anche io sono stato un po' precipitoso, però. Se inserite solo "GBP" per esempio, allora qualsiasi grafico sarà valido se la valuta di base è "GBP". Inoltre, dovremmo controllare la lunghezza del testo nella riga di input.
 
Alexey Viktorov:

Dalla documentazione

cioè il simbolo del grafico inizia con "GBPUSD" e non importa quale suffisso è allegato.

Anche se anch'io sono stato un po' precipitoso. Se inserite solo "GBP" per esempio, qualsiasi grafico sarà valido se la valuta di base è "GBP". Inoltre, dovremmo controllare la lunghezza del testo nella riga di input.

ma solo confrontare? e limitare l'input a lettere minuscole. o enum, questo è per foolproof))))

 
Alexey Viktorov:

Dalla documentazione

cioè il simbolo del grafico inizia con "GBPUSD" e non importa quale suffisso è allegato.

Anche se anch'io sono stato un po' precipitoso. Se inserite solo "GBP" per esempio, allora qualsiasi grafico sarà valido se la valuta di base è "GBP". Inoltre, dovremmo controllare la lunghezza del testo nella riga di input.

Capisco!

Saluti, Vladimir.

 
Valeriy Yastremskiy:

ma solo confrontare? e limitare l'input a lettere minuscole. o enum, per il bene del fool))))

Ciao Valery! Ho iniziato con ENUM_SYMBOL_INFO_STRING dall'inizio, ma per qualche motivo non ha funzionato nulla. Puoi provare di nuovo, però.

Sinceramente, Vladimir.

 
Valeriy Yastremskiy:

ma solo confrontare? e limitare l'input a lettere minuscole. o enum, cosa è foolproof))))

Si potrebbe anche solo confrontare, ma se i caratteri hanno un suffisso, bisogna inserirli così come sono. In generale, ci sono molte opzioni, ed è inutile discutere sui gusti dei flomasters.

Ma se avete un enum, la ricerca nella stringa sarà necessaria. Perché l'enum contiene nomi di simboli puri e il grafico può contenere qualsiasi allegato.

 
Alexey Viktorov:

Perché prendersi gioco di una mente immatura? Il vostro codice non soddisfa affatto il requisito. Se solo "eu" o "eur" è inserito nei parametri di input, questa parte della condizione

sarà soddisfatta indipendentemente dalla coppia di valute che contiene "EU" nel suo nome e non ha importanza EUR come valuta di base o valuta quotata. E perché passare attraverso il SymbolName di MarketWatch alla ricerca del simbolo giusto?

Alexei, è un codice abbastanza normale. Non è normale, bisogna inserire diversi simboli in un parametro, cosa che difficilmente viene fatta da qualcuno.

Ho più o meno la stessa implementazione nel mio prodotto di lavoro.

Questa implementazione funziona con successo in una soluzione multivaluta, cosa che non si può dire di altri codici, cioè il codice è universale.

 
Alexey Viktorov:

Potresti anche solo confrontarli, ma se i caratteri hanno un suffisso, devi inserirli così come sono. In generale, ci sono un bel po' di opzioni ed è un compito inutile discutere sui gusti dei flomasters.

Ma se avete un enum, la ricerca nella stringa sarà necessaria. L'enum è usato per memorizzare i nomi dei simboli puri, mentre il grafico può contenere qualsiasi allegato.

Alexey, grazie per il suggerimento in grassetto. Cercherò di rielaborare la primissima versione del codice che ho scritto prima per il bene dell'interesse.

Saluti, Vladimir.