[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

 
Entschuldigung
 
Stepan241 >> :

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.

 
Können Sie mir sagen, wie ich alle offenen Aufträge zu einer bestimmten Zeit schließen kann?
 
JackaLrus писал(а) >>

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.

 
vik-777 >> :
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

 
Stepan241 >> :

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

int start()
{
//----
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...)

 
mukata >> :

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

int start()
{
//----
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.

 
splxgf >> :

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?

 
mukata >> :


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()

Grund der Beschwerde: