[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 346
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Am Anfang des Drehbuchs schreiben Sie
#property show_inputs
extern double Lot=0.1
Wenn das Skript dann an das Symbolfenster angehängt wird, erscheint ein Dialogfeld.
Das verstehe ich. Aber das ist nicht das, was ich brauche. Bei diesen Befehlen erscheint ein Dialogfeld - mit allgemeinen EA-Einstellungen und aktuellen Skripteinstellungen, und ich habe gefragt, ob es keine solche Funktion gibt, mit der man DO ONLY mit den Skripteinstellungen auf einmal ausgeben kann.
Das verstehe ich. Aber das ist nicht das, was ich brauche. Bei diesen Befehlen erscheint ein Dialogfeld - mit allgemeinen EA-Einstellungen und aktuellen Skripteinstellungen, und ich habe gefragt, ob es keine solche Funktion gibt, mit der man DO ONLY mit Skripteinstellungen auf einmal ausgeben kann.
Dann nur MetaEditor.
Können Sie mir bitte sagen, wie ich alle offenen Aufträge zu einer bestimmten Zeit schließen kann?
wenn (HourTime[0]=12)_CloseAllOrder
Siehe die Funktion _CloseAllOrder auf der vorherigen Seite oder der Seite davor
wenn (HourTime[0]=12)_CloseAllOrder
für die Funktion _CloseAllOrder selbst, siehe letzte Seite oder die Seite davor
Vielen Dank, die Funktion ist sehr praktisch
Liebe Experten,
Bitte teilen Sie mir mit, was der Grund für dieses Ergebnis ist:
gist:
int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}
Es wird "c=3 q=2" gedruckt.
Frage: Wie kommt es zu zwei von drei Punkten?
Die Sache ist die, wenn ich 0,3 durch 0,4 oder einen anderen Bruchteil ersetze, wird das Problem wie beabsichtigt gelöst
zum Beispiel
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}
"c=3 q=2 v=4 w=4"
Frage: Wie kommt es zu zwei von drei Punkten?
versuchen zu kompilieren, vielleicht kann mein Computer nicht zählen (einfach dumm...)
Liebe Experten,
Bitte teilen Sie mir mit, was der Grund für dieses Ergebnis ist:
gist:
int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}
Es wird "c=3 q=2" gedruckt.
Frage: Wie kommt es zu zwei von drei Punkten?
Die Sache ist die, wenn ich 0,3 durch 0,4 oder einen anderen Bruchteil ersetze, wird das Problem wie beabsichtigt gelöst
zum Beispiel
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}
"c=3 q=2 v=4 w=4"
Frage: Wie kommt es zu zwei von drei Punkten?
Versuchen Sie, es zu kompilieren, vielleicht weiß mein Computer nicht, wie man rechnet (es ist dumm...)
Das ist kein Unsinn, sondern ein üblicher Rundungsfehler bei der Arbeit mit reellen Zahlen.
Im ersten Fall, z. B. wenn c gleich 2,999999999 ist, wird die Ausgabe gerundet, d. h. 3, aber bei der Zuweisung an einen Ganzzahlentyp wird der Nachkommateil verworfen.
Dies ist kein Unsinn, sondern ein üblicher Rundungsfehler beim Umgang mit reellen Zahlen.
Im ersten Fall ist c zum Beispiel gleich 2,99999999999...
Wie kann 2,99999999 2,9999 sein? 0,3/0,1=3 genau, es ist nicht so, als würde ich 1 durch 3 teilen und es müsste 0,33333 sein...
aber bei der Zuweisung an einen Integer-Typ wird die Nachkommastelle verworfen.
Einem Integer-Typ wird ein Wert c zugewiesen, der eindeutig gleich drei ist, ohne irgendwelche Nachkommastellen. Es gibt nichts zu verwerfen...
Die Antwort ist zu 100 % falsch.
Gibt es noch andere Möglichkeiten?
Ich verstehe nicht, wie 2,9999 2,9999 sein kann? 0,3/0,1=3 sogar, es ist nicht so, dass ich 1 durch 3 teile und es sollte 0,33333 sein...
Dies scheint nur genau zu sein, während das letzte Bit unterschiedliche Werte annehmen kann. D.h. 2,9999, 3 oder 3,00000001
Um solche Missverständnisse auszuräumen, hat MQL die Funktion NormalizeDouble()