Auto-aprendizagem da linguagem MQL5 a partir do zero - página 77

 
MrBrooklin:

Olá Alexey, para ser honesto, não sou muito bom em programação. Isso significa que o código fornecido por Konstantin deve ser melhorado?

Atenciosamente, Vladimir.

Ela precisa ser retrabalhada e jogada fora.

 
Alexey Viktorov:

Ela precisa ser retrabalhada e jogada fora.

Por que tanta crueldade!

Obrigado Alexey!!! Seu código funciona perfeitamente.

Cumprimentos, Vladimir.

 

Alexey, tudo está claro sobre a busca, porque StringFind é uma busca por um substrato em uma corda:

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

A única coisa que não consigo entender é por que verificamos a função de igualdade a zero quando procuramos um substrato em uma corda.

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

Cumprimentos, Vladimir.

 
MrBrooklin:

Alexey, tudo está claro sobre a busca, porque StringFind é uma busca por um substrato em uma corda:

A única coisa que não consigo entender é por que verificamos a função de igualdade a zero quando procuramos um substrato em uma corda.

Cumprimentos, Vladimir.

A partir da documentação

Valor retornado

A função retorna o número do substrato na corda, no qual começa o substrato procurado. Se não for encontrado substrato, a função retorna -1.

Isto é, o símbolo do gráfico começa com "GBPUSD" e não importa qual sufixo está anexado.

Mas eu também fui um pouco precipitado. Se você digitar apenas "GBP" por exemplo, então qualquer gráfico será válido se a moeda base for "GBP". Além disso, devemos verificar o comprimento do texto na linha de entrada.
 
Alexey Viktorov:

A partir da documentação

ou seja, o símbolo do gráfico começa com "GBPUSD" e não importa qual sufixo está anexado.

Embora eu também tenha sido um pouco precipitado. Se você digitar apenas "GBP", por exemplo, qualquer gráfico será válido se a moeda base for "GBP". Além disso, devemos verificar o comprimento do texto na linha de entrada.

mas basta comparar... e limitar a entrada a letras pequenas. ou enumerar, isto é, para o foolproof))))

 
Alexey Viktorov:

A partir da documentação

ou seja, o símbolo do gráfico começa com "GBPUSD" e não importa qual sufixo está anexado.

Embora, eu também tenha sido um pouco precipitado. Se você digitar apenas "GBP" por exemplo, então qualquer gráfico será válido se a moeda base for "GBP". Além disso, devemos verificar o comprimento do texto na linha de entrada.

Estou vendo!

Cumprimentos, Vladimir.

 
Valeriy Yastremskiy:

mas basta comparar? e limitar a entrada a letras pequenas. ou enumerar, para o bem do tolo))))

Olá Valery! Começou com ENUM_SYMBOL_INFO_STRING desde o início, mas por alguma razão nada funcionou. Você pode tentar novamente, porém.

Atenciosamente, Vladimir.

 
Valeriy Yastremskiy:

mas basta comparar? e limitar a entrada a letras pequenas. ou enumerar, o que é infalível))))

Você também poderia apenas comparar, mas se os caracteres têm um sufixo, você tem que inseri-los como estão. Em geral, há muitas opções, e é inútil discutir sobre os gostos dos flomassas.

Mas se você tiver um enumero, será necessária uma busca na corda. Porque o enumero contém nomes de símbolos puros e o gráfico pode conter quaisquer anexos.

 
Alexey Viktorov:

Por que fazer tal troça de uma mente imatura? Seu código não atende em nada a essa exigência. Se apenas "eu" ou "eur" for inserido nos parâmetros de entrada, esta parte da condição

será cumprida não importa qual par de moedas contenha "EU" em seu nome e não importa o EUR como moeda base ou moeda cotada. E por que passar pelo SymbolName of MarketWatch em busca do símbolo certo?

Alexei, é um código bastante normal. Não é normal, você tem que inserir vários símbolos em um parâmetro, o que é improvável que seja feito por alguém.

Eu tenho aproximadamente a mesma implementação no meu produto de trabalho.

Esta implementação funciona com sucesso em uma solução de múltiplas moedas, o que não pode ser dito sobre outros códigos, ou seja, o código é universal.

 
Alexey Viktorov:

Você também poderia simplesmente compará-los, mas se os caracteres têm um sufixo, você tem que inseri-los como estão. Em geral, há muitas opções e é uma tarefa fútil discutir sobre os gostos dos flomassers.

Mas se você tiver um enumero, será necessária uma busca na corda. O enumero é usado para armazenar nomes de símbolos puros, enquanto o gráfico pode conter quaisquer anexos.

Alexey, obrigado pela dica em negrito. Tentarei retrabalhar a primeira versão do código que escrevi anteriormente, por interesse.

Cumprimentos, Vladimir.

Razão: