[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 148

 
Roger:
Keine Sorge, es werden so viele wie nötig zurückgegeben, man muss es nur sehen wollen.

in der Tat)))

Print("ma rot = ",MA_M_0); // 4 Zeichen (1,4533)

Print("ma rot = ",DoubleToStr(MA_M_0,5)); // 5 Ziffern (1,45332)

Ich bitte um Entschuldigung, vielleicht war das eine dumme Frage)

Aber warum ist das so?

 
Vor langer Zeit, als es MT4 noch nicht gab und der automatisierte Handel noch in den Kinderschuhen steckte, war der Standard für Kurse 4 Dezimalstellen. Deshalb haben sie sich nicht darum gekümmert.
 
Ich habe es herausgefunden... Das ist also das Problem mit "Print", ich dachte, es sei eine Variable)))
 
DhP:
Eine weitere einfache Möglichkeit, diese Probleme zu vermeiden:
Was ist ursprünglich in der Vorzeit?
 

Angenommen, es gibt einen offenenKauf-Stopp-Auftrag, der ziemlich weit vom aktuellen Kurs entfernt ist. Wir müssen seinen offenen Preis leicht ändern.

- Gibt es einen Mindestabstand für einen neuen Eröffnungszeitpunkt desselben Auftrags, relativ zum aktuellen Wert von OrderOpenPrice(), unter dem kein neuer Eröffnungspreis festgelegt werden kann?

Ich danke Ihnen!

 
chief2000:

Angenommen, es gibt einen offenen Kauf-Stopp-Auftrag, der ziemlich weit vom aktuellen Kurs entfernt ist. Wir müssen seinen offenen Preis leicht ändern.

- Gibt es einen Mindestabstand für einen neuen Eröffnungspunkt desselben Auftrags, relativ zum aktuellen Wert von OrderOpenPrice(), unter dem kein neuer Eröffnungspreis gesetzt werden kann?

Ich danke Ihnen!

StopLevel - in diesem Abstand und näher zum Preis kann der Auftrag nicht gesetzt werden.

FreezeLevel - wenn ein Auftrag bereits erteilt wurde und der Preis sich in dieser Entfernung oder in der Nähe davon befindet, können Sie den Auftrag nicht löschen oder ändern (falls Ihr Maklerunternehmen dies verwendet)

 
artmedia70:

StopLevel - in diesem Abstand und näher am Preis können Sie keine Order erteilen.

FreezeLevel - wenn ein Auftrag bereits erteilt wurde und sich der Kurs in dieser Entfernung oder näher dorthin bewegt hat, können wir ihn nicht löschen oder ändern (falls Ihr Maklerunternehmen dies verwendet).

Das ist nicht genau das, wonach ich gefragt habe. Was ich meinte, war, dass ich eine Buy-STOP-Order habe und deren OrderOpenPrice() um den kleinstmöglichen Abstand verschieben möchte (und dieser Preis ist ziemlich weit vom Ask).

- Kann ich zum Beispiel OrderOpenPrice() um 1 Pip verschieben? D.h.

Новый_OrderOpenPrice = OrderOpenPrice() + Point

Ich frage, weil ich einige seltsame Fehler gesehen habe, aber ich habe den Abstand vergrößert und die Fehler sind verschwunden.

(Ich könnte einen separaten Code schreiben und ihn überprüfen, aber das hat mich bisher nicht interessiert)

 

Beim Vergleich zweier Variablen vom Typ double wird manchmal ein falsches Ergebnis erzielt. Dies liegt wahrscheinlich daran, dass eine der Variablen etwas größer oder kleiner sein kann als die andere (z. B. um 10 Stellen). Die Verwendung der Funktion NormalizeDouble ist in den meisten Fällen nicht hilfreich. Manche Leute raten dazu, eine Variable von einer anderen zu subtrahieren, aber wie kann man in einem solchen Fall einen Ausdruck if(a>=b) am korrektesten konstruieren, indem man eine Variable von einer anderen subtrahiert? Oder gibt es vielleicht eine andere Möglichkeit?

 
Elenn:

Beim Vergleich zweier Variablen vom Typ double wird manchmal ein falsches Ergebnis erzielt. Dies liegt wahrscheinlich daran, dass eine der Variablen etwas größer oder kleiner sein kann als die andere (z. B. um 10 Stellen). Die Verwendung der Funktion NormalizeDouble ist in den meisten Fällen nicht hilfreich. Manche Leute raten dazu, eine Variable von einer anderen zu subtrahieren, aber wie kann man in einem solchen Fall einen Ausdruck if(a>=b) am korrektesten konstruieren, indem man eine Variable von einer anderen subtrahiert? Oder gibt es vielleicht eine andere Möglichkeit?

Brauchen Sie wirklich eine so hohe Präzision? - Auf eine Zehntelstelle genau.

Wenn Sie durch Subtraktion vergleichen wollen, können Sie mit 0 vergleichen:

if((a-b)>0) { // ===>>> a>b

Oder Sie können mit 1 000 000 multiplizieren und dann vergleichen :)

 
chief2000:

Brauchen Sie wirklich so viel Präzision? - Bis zur zehnten Stelle.

Wenn Sie durch Subtraktion vergleichen wollen, können Sie mit 0 vergleichen:

if((a-b)>0) { // ===>>> a>b

Oder Sie können mit 1.000.000 multiplizieren und dann vergleichen :)

Ich verwende bei Preisvergleichen immer ein gewisses +/-epsilon=Point*0,01.

Die Multiplikation mit 1.000.000 wird nichts bringen, glauben Sie mir.