Dss ist ja irre, selbst solche Abfragen werden korrekt beantwortet:
string Zeit = "05.16.2020 07:58:00";
if (Zeit > "04.16.2020 22:59" || Zeit < "03.16.2020 08:00") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}
Das lässt doch nur den Schluss zu, dass der Compiler, warum auch immer, aus dem String einer Zeitangabe die Variable vorher in den gewohnten int- bzw. datetime-Typ umwandelt.
Selbst diese Angabe-Form der Zahl funktioniert:
string Zeit = "09";
if (Zeit > "10" || Zeit < "05") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}
Die wiederum aber nicht:
string Zeit = "6";
if (Zeit > "10" || Zeit < "5") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}
Das
string Zeit = "45";
if (Zeit > "99" || Zeit < "5") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}
ergibt ein true!?
Aber das
string Zeit = "55";
if (Zeit > "99" || Zeit < "5") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}
ergibt ein false, was in gewisser Weise evtl. noch logisch wäre, weil 55 zwischen 99 und 5 liegt. (Nur 45 ja auch!)
Aber warum der boolsche Logikwechsel zwischen 45 und 55??
Das wird wiederum richtig erkannt:
string Zeit = "160";
if (Zeit > "199" || Zeit < "150") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}
Das wiederum auch nicht:
void OnTick()
{
//string Zeit = TimeToStr(TimeCurrent(),TIME_MINUTES);
string Zeit = "160";
if (Zeit > "99" || Zeit < "15") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}
Es scheint also so, dass die Strings immer vergleichbar ist, wenn die Zahlen dieselbe Anzahl Stellen besitzen.
Sehr merkwürdig!
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
|