[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 470

 
iliaalyoshin >>:


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

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

 
sergeev >>:

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


Das habe ich auch versucht, und vorsichtshalber habe ich statt Ziffern 4, dann 5, dann 6 geschrieben... Funktioniert nicht!
 


Ich danke Ihnen! Der Artikel ist in der Tat sehr informativ. Aber ich habe die Funktion bool CompareDoubles in MetaEditor nicht gefunden...
 


Oder verstehe ich vielleicht nicht ganz, oder besser gesagt, ich verstehe nicht, was eine Bibliothek überhaupt ist?
 
iliaalyoshin писал(а) >>


Oder verstehe ich vielleicht nicht ganz, oder besser gesagt, ich verstehe nicht, was eine Bibliothek überhaupt ist?


Eine Funktion zum Vergleich reeller Zahlen
//+------------------------------------------------------------------+
//| correct comparison of 2 doubles                                  |
//+------------------------------------------------------------------+
bool CompareDoubles(double number1,double number2)
  {
   if(NormalizeDouble(number1-number2,8)==0) return(true);
   else return(false);
  }
 
Genosse Profi, hilf mir.
Können Sie mir bitte sagen, was ich hier tun soll?

Ich möchte Zahlen aus einer Datei in die entsprechenden Arrays einlesen.

Die Nummern in der Datei lauten wie folgt: 1.2121;1.2323;1.3434;1.4545

Ich bereite die folgenden Arrays für sie vor: double s1[], s2[], r1[], r2[]

in der Phase der Initialisierung lese ich wie folgt

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

aber leider sind die Arrays nicht ausgefüllt...

Ratschläge, wie man sich hier....
 

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

Erstens werden in csv-Dateien die Elemente durch "," und nicht durch ";" getrennt
. Zweitens müssen Sie Arrays mit dem ersten Element jeder Dateizeile füllen, da Sie zunächst die gesamte Zeile mit FileReadString abrufen und dann in eine einzelne reelle Zahl umwandeln, und der nächste FileRead-Befehl arbeitet bereits mit der nächsten Zeile der Datei.

Sie können die Lektüre auf folgende Weise anordnen:

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


Es sollte funktionieren... aber nicht sicher :)

 
Axmed писал(а) >>

Erstens werden in csv-Dateien die Elemente durch "," und nicht durch ";" getrennt.
Zweitens müssen Arrays mit dem ersten Element jeder Dateizeile gefüllt werden, da man zuerst die gesamte Zeichenkette mit dem Befehl FileReadString abruft, dann die gesamte Zeichenkette in eine einzelne reelle Zahl umwandelt, und der nächste Befehl FileRead bereits mit der nächsten Zeile der Datei arbeitet.

Sie können das Lesen auf diese Weise organisieren:

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


Sollte funktionieren... aber nicht sicher :)


Das Standardbegrenzungszeichen ist ";", Sie können jedoch jedes beliebige Begrenzungszeichen verwenden.
 
Axmed писал(а) >>

Du schreibst etwas falsch...

 
Vinin писал(а) >>


Das Standardtrennzeichen ist ";", Sie können jedoch jedes beliebige Trennzeichen verwenden.


CSV - Kommagetrennte Werte. Das "," ist das Standard-Trennzeichen. Das Trennen mit ";" ist viel weniger üblich, und ich bin nicht sicher, ob es in MQL4 überhaupt unterstützt wird.

Du schreibst etwas falsch...

Was genau gefällt Ihnen nicht an dem, was ich schreibe...?