Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 111

 
trader781:
Não entendo como, corrigi os nomes, a linha ainda está vermelha independentemente do tipo de ordem, apenas chamada de forma diferente. (Então eu tenho que encontrar uma maneira de cortá-lo para 10 barras), eu preciso exatamente da maneira
Experimente agora
Arquivos anexados:
 
Sergey Gritsay:
experimente agora.

É bom que haja um livro de origem por aí)

Ao pressionar o botão de compilação, o bot morre junto com o terminal, e após abrir EX ele não abre e este arquivo fica vazio.

É o que parece.

Também se você colocar azul, verde, dourado, branco, estas cores mudam, mas o cinzento escuro e o azuis não põem, ele fica branco.

Arquivos anexados:
 
trader781:

É bom que haja um livro de origem por aí)

Ao pressionar o botão de compilação, o bot morre junto com o terminal, e após abrir EX ele não abre e este arquivo fica vazio.

É o que parece.

Se eu colocar azul, verde, dourado, branco, estas cores mudam, mas o cinzento escuro e o azuis não colocam, ele fica branco.

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

Obrigado!

Eu também preciso de ajuda - preciso descobrir quantos caracteres estão em uma corda - como faço isso?

 
Boa tarde.
Eu uso StringSplit para dividir uma string lida a partir de um arquivo. Mas a saída da matriz perde cordas, todas exceto a primeira corda. Na saída todos, exceto o primeiro fio, estão vazios, embora o tamanho da matriz esteja correto.

Além disso, encontrei um comportamento incompreensível com matrizes de cordas. Tenho que fazer arrays bidimensionais para salvar as cordas em uma matriz.

Alguém já encontrou este comportamento?

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-:

Obrigado!

Também preciso de ajuda - preciso descobrir quantos caracteres estão em uma corda - como faço isso?

Retorna o número de caracteres na corda.

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

 
terentjew23:

Retorna o número de caracteres em um fio.

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

Obrigado!

 
Uma palavra de conselho, por favor.

Declaro uma matriz a nível global da EA. Então em função especial init() eu chamo de função do usuário que preenche a matriz com constantes de string.

Então, na função especial start(), uso o array somente para ler dados.

Algum tempo depois, outros dados irão preencher a matriz. Isto é, quando eu executo a EA, espero que a matriz permaneça inalterada enquanto a EA estiver funcionando, mas os dados de alguma forma entram na matriz, e somente após algum tempo (mais de 10 minutos). Quando eu reiniciar o Expert Advisor, o array será preenchido como deve ser, mas algum tempo depois, por razões que não entendo, o array conterá novamente os valores errados.

A única saída é recarregar constantemente a matriz no início(), mas eu não gosto muito, porque a matriz deve ser realmente preenchida somente durante a inicialização.

Qual poderia ser o problema? Como proteger a matriz contra modificações?
 
Maksym Mudrakov:
Você pode me dar uma dica, por favor?
...
O que poderia ser? Como evitar que uma matriz seja modificada?
Verifique o código minuciosamente.
 
Maksym Mudrakov:
Uma palavra de conselho, por favor.

Declaro uma matriz a nível global da EA. Então em função especial init() eu chamo de função do usuário que preenche a matriz com constantes de string.

Então, na função especial start(), uso o array somente para ler dados.

Algum tempo depois, outros dados irão preencher a matriz. Isto é, quando eu executo a EA, espero que a matriz permaneça inalterada enquanto a EA estiver funcionando, mas os dados de alguma forma entram na matriz, e somente após algum tempo (mais de 10 minutos). Quando eu reiniciar o Expert Advisor, o array será preenchido como deve ser, mas algum tempo depois, por razões que não entendo, o array conterá novamente valores errados.

A única saída é recarregar constantemente a matriz no início(), mas eu não gosto muito, porque a matriz deve ser realmente preenchida somente durante a inicialização.

Qual poderia ser o problema? Como proteger a matriz contra modificações?
Posso ver o código?
Razão: