[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 470

 
iliaalyoshin >>:


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

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

 
sergeev >>:

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


J'ai essayé aussi, et juste au cas où, au lieu de Chiffres, j'ai écrit 4, puis 5, puis 6... Ça ne marche pas !
 


Merci ! En effet, l'article est très instructif. Mais je n'ai pas trouvé la fonction bool CompareDoubles dans MetaEditor...
 


Ou peut-être ne comprends-je pas bien, ou plutôt ne comprends-je pas du tout ce qu'est une bibliothèque ?
 
iliaalyoshin писал(а) >>


Ou peut-être ne comprends-je pas bien, ou plutôt ne comprends-je pas du tout ce qu'est une bibliothèque ?


Une fonction pour comparer des nombres réels
//+------------------------------------------------------------------+
//| correct comparison of 2 doubles                                  |
//+------------------------------------------------------------------+
bool CompareDoubles(double number1,double number2)
  {
   if(NormalizeDouble(number1-number2,8)==0) return(true);
   else return(false);
  }
 
Camarades pros, aidez-moi.
Pouvez-vous me dire ce qu'il faut faire ici ?

Je veux lire les nombres d'un fichier dans les tableaux correspondants.

Les numéros du fichier sont les suivants : 1.2121;1.2323;1.3434;1.4545

Je leur prépare les tableaux suivants : double s1[], s2[], r1[], r2[]

à l'étape de l'initialisation je lis comme suit

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"); // Звуковое сопровождение

mais, malheureusement, les tableaux ne sont pas remplis...

Conseiller comment être ici....
 

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

Premièrement, dans les fichiers csv, les éléments sont séparés par des "," et non des " ;"
Deuxièmement, vous devez remplir les tableaux avec le premier élément de chaque ligne de fichier, car vous récupérez d'abord la ligne entière avec FileReadString, puis vous la convertissez en un seul nombre réel, et la commande FileRead suivante fonctionne déjà avec la ligne suivante du fichier.

Vous pouvez organiser la lecture de la manière suivante :

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;
}


Ça devrait marcher... mais pas nécessairement :)

 
Axmed писал(а) >>

Premièrement, dans les fichiers csv, les éléments sont séparés par "," et non par " ;".
Deuxièmement, vous devez remplir les tableaux avec le premier élément de chaque chaîne de caractères du fichier, car vous récupérez d'abord la chaîne entière avec la commande FileReadString, puis vous convertissez la chaîne entière en un nombre réel, et la commande suivante FileRead travaille déjà avec la ligne suivante du fichier.

Vous pouvez organiser la lecture de cette manière :

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;
}


Ça devrait marcher... mais pas sûr :)


Le délimiteur par défaut est " ;", mais vous pouvez utiliser n'importe quel délimiteur.
 
Axmed писал(а) >>

Tu écris quelque chose de mal...

 
Vinin писал(а) >>


Le délimiteur par défaut est " ;", mais vous pouvez utiliser n'importe quel délimiteur.


CSV - Comma Separated Values (valeurs séparées par des virgules ). Le "," est le délimiteur par défaut. La séparation avec " ;" est beaucoup moins courante, et je ne suis pas sûr qu'elle soit supportée du tout dans MQL4.

Tu écris quelque chose de mal...

Qu'est-ce que tu n'aimes pas exactement dans ce que j'écris... ?