[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 470

 
iliaalyoshin >>:


Разные приёмы? Какие, например?

if (NormalizeDouble(a, 4)==NormalizeDouble(b, 4)) { ... }

 
sergeev >>:

if (NormalizeDouble(a, 4)==NormalizeDouble(b, 4)) { ... }


Eu também tentei isso, e só para o caso de, em vez de Dígitos eu ter escrito 4, depois 5, depois 6... Não funciona!
 


Obrigado! De fato, o artigo é muito informativo. Mas não encontrei a função bool CompareDoubles no MetaEditor...
 


Ou talvez eu não entenda bem, ou melhor, não entendo de todo o que é uma biblioteca?
 
iliaalyoshin писал(а) >>


Ou talvez eu não entenda bem, ou melhor, não entendo de todo o que é uma biblioteca?


Uma função para comparar números reais
//+------------------------------------------------------------------+
//| correct comparison of 2 doubles                                  |
//+------------------------------------------------------------------+
bool CompareDoubles(double number1,double number2)
  {
   if(NormalizeDouble(number1-number2,8)==0) return(true);
   else return(false);
  }
 
Camarada profissional, ajude-me.
Você poderia, por favor, me dizer o que fazer aqui?

Quero ler os números de um arquivo para as matrizes correspondentes.

Os números no arquivo são os seguintes: 1.2121;1.2323;1.3434;1.4545

Preparo as seguintes matrizes para eles: duplo s1[], s2[], r1[], r2[], r2[]

na fase de inicialização, li o seguinte

k=0;
//----------------------------------------------

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
if(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..
Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера
else // При любой другой ошибке..
Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
PlaySound("Bzrrr.wav"); // Звуковое сопровождение
return;
}
while(FileIsEnding(Handle)==false) // До тех пор, пока файловый ..
{ // ..указатель не в конце файла
//--------------------------------------------------------- 5 --
S_1 =StrToDouble(FileReadString(Handle));//
R_1 =StrToDouble(FileReadString(Handle));
S_2 =StrToDouble(FileReadString(Handle));
R_2 =StrToDouble(FileReadString(Handle));
s1[k]=S1; s2[k]=S_2; r1[k]=R_1; r2[k]=R_2;
k=k+1;
if(FileIsEnding(Handle)==true) // Файловый указатель в конце
break; // Выход из чтения и рисования
//--------------------------------------------------------- 6 --
}
FileClose( Handle ); // Закрываем файл
PlaySound("bulk.wav"); // Звуковое сопровождение

mas, infelizmente, as matrizes não estão preenchidas...

Aconselhe como estar aqui....
 

Посоветуйте, как тут быть....

Primeiro, nos arquivos csv, os elementos são separados por "," não ";"
Segundo, você deve preencher as matrizes com o primeiro elemento de cada linha de arquivo, porque primeiro você recupera a linha inteira com FileReadString, depois a converte para um único número real, e o próximo comando FileRead já funciona com a próxima linha do arquivo.

Você pode organizar a leitura da seguinte maneira:

for(;;) {
str=FileReadString(Handle);
s1[k] =StrToDouble(StringSubstr(str,0,6));
s2[k] =StrToDouble(StringSubstr(str,7,6));
r1[k] =StrToDouble(StringSubstr(str,14,6));
r2[k] =StrToDouble(StringSubstr(str,21,6));
k++;
if(FileIsEnding(Handle)) break;
}


Deve funcionar... mas não tenho certeza :)

 
Axmed писал(а) >>

Primeiramente, nos arquivos csv os elementos são separados por "," não ";".
Em segundo lugar, as arrays devem ser preenchidas com o primeiro elemento de cada file string, porque primeiro você recupera a string inteira com o comando FileReadString, depois converte a string inteira para um único número real, e o próximo comando FileRead já funciona com a próxima linha do arquivo.

Você pode organizar a leitura desta maneira:

for(;;) {
str=FileReadString(Handle);
s1[k] =StrToDouble(StringSubstr(str,0,6));
s2[k] =StrToDouble(StringSubstr(str,7,6));
r1[k] =StrToDouble(StringSubstr(str,14,6));
r2[k] =StrToDouble(StringSubstr(str,21,6));
k++;
if(FileIsEnding(Handle)) break;
}


Deve funcionar... mas não tenho certeza :)


O delimitador padrão é ";", embora você possa usar qualquer delimitador.
 
Axmed писал(а) >>

Você está escrevendo algo errado...

 
Vinin писал(а) >>


O delimitador padrão é ";", embora você possa usar qualquer um.


CSV - Valores separados por vírgula. O "," é o delimitador padrão. A separação com ";" é muito menos comum, e não tenho certeza de que seja apoiada de forma alguma na MQL4.

Você está escrevendo algo errado...

O que exatamente você não gosta no que eu escrevo...?