[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 470

 
iliaalyoshin >>:


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

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

 
sergeev >>:

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


Ci ho provato anch'io, e per sicurezza, al posto di Digits ho scritto 4, poi 5, poi 6... Non funziona!
 


Grazie! In effetti, l'articolo è molto informativo. Ma non ho trovato la funzione bool CompareDoubles in MetaEditor...
 


O forse non capisco bene, o piuttosto non capisco affatto cosa sia una biblioteca?
 
iliaalyoshin писал(а) >>


O forse non capisco bene, o piuttosto non capisco affatto cosa sia una biblioteca?


Una funzione per confrontare i numeri reali
//+------------------------------------------------------------------+
//| correct comparison of 2 doubles                                  |
//+------------------------------------------------------------------+
bool CompareDoubles(double number1,double number2)
  {
   if(NormalizeDouble(number1-number2,8)==0) return(true);
   else return(false);
  }
 
Compagni professionisti, aiutatemi.
Potresti per favore dirmi cosa fare qui?

Voglio leggere i numeri da un file negli array corrispondenti.

I numeri del file sono i seguenti: 1.2121;1.2323;1.3434;1.4545

Preparo i seguenti array per loro: double s1[], s2[], r1[], r2[]

nella fase di inizializzazione leggo come segue

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

ma, sfortunatamente, gli array non sono riempiti...

Consigliare come essere qui....
 

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

Primo, nei file csv, gli elementi sono separati da "," non ";"
Secondo, dovete riempire gli array con il primo elemento di ogni linea del file, perché prima recuperate l'intera linea con FileReadString, poi la convertite in un singolo numero reale, e il prossimo comando FileRead funziona già con la prossima linea del file.

Puoi organizzare la lettura nel modo seguente:

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


Dovrebbe funzionare... ma non necessariamente :)

 
Axmed писал(а) >>

In primo luogo, nei file csv, gli elementi sono separati da "," non da ";".
In secondo luogo, gli array devono essere riempiti con il primo elemento di ogni stringa di file, perché prima si recupera l'intera stringa con il comando FileReadString, poi si converte l'intera stringa in un singolo numero reale, e il successivo comando FileRead funziona già con la riga successiva del file.

Puoi organizzare la lettura in questo modo:

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


Dovrebbe funzionare... ma non sono sicuro :)


Il delimitatore predefinito è ";", anche se potete usare qualsiasi delimitatore.
 
Axmed писал(а) >>

Stai scrivendo qualcosa di sbagliato...

 
Vinin писал(а) >>


Il delimitatore predefinito è ";", anche se si può usare uno qualsiasi.


CSV - Comma Separated Values. Il "," è il delimitatore predefinito. Separare con ";" è molto meno comune, e non sono sicuro che sia supportato in MQL4.

Stai scrivendo qualcosa di sbagliato...

Cosa esattamente non ti piace di quello che scrivo...?

Motivazione: