[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 303

 
Eine weitere Frage. xrust Indikator (https://www.mql5.com/ru/code/8318) jetzt muss ich den Preis der maximalen und minimalen an den Expert Advisor (mit Ausgabe an den Chart) zu senden. ich habe versucht, es zu ändern, aber ich kann nicht die Werte, die ich brauche((: eine gesendet wird, die zweite gleich 0. Wie die tatsächlichen Werte anzuzeigen?
 
hoz:

Ich lerne, mit Bibliotheken zu arbeiten. Ich schreibe einen Expert Advisor, da gibt es eine Funktion wie diese:

Ich habe es in die Aufnahme gegeben, alles funktioniert wie es soll. Wenn Sie ihn jedoch mit der Bibliothek verbinden, tritt beim Kompilieren des Expert Advisors ein Fehler auf:

Warum ist diese Funktion in der Bibliothek nicht sichtbar?

Die Bibliothek hat diesen Inhalt und lässt sich perfekt kompilieren:

Eine Menge von Fehlern. Können wir uns ein Beispiel ansehen und es analog tun?
 

Es gibt eine Notierung, nehmen wir an, Ask = 1,20667

Aus diesem Zitat müssen Sie die 3. Stelle nach dem Komma herausnehmen. D.h. nehmen Sie den Wert 1.206, der Rest sollte verworfen werden.

Bitte sagen Sie mir, wie ich es richtig mache, denn"Normalisieren" rundet auf und das Ergebnis ist 1,20700.

Ich habe eine Umgehung versucht:

DoubleToStr(Ask,3)

Ja, er gibt alles richtig aus -> 1.206 . Aber wenn man zu Double zurückgeht, wird wieder gerundet, aber auf 2 Dezimalstellen.

StrToDouble(DoubleToStr(Ask,3)) = 1,2100    // 1,2100 - это получившийся результат (т.е. округляет)

Ich brauche keine Rundung. Ich muss nur die 2., 3. oder 4. Stelle (nach meiner Wahl) nach dem Dezimalpunkt nehmen und den Rest verwerfen.

Wie mache ich es richtig?

 
Chiripaha:

Es gibt eine Notierung, nehmen wir an, Ask = 1,20667

Aus diesem Zitat müssen Sie die 3. Stelle nach dem Komma herausnehmen. D.h. nehmen Sie den Wert 1.206, der Rest sollte verworfen werden.

Bitte sagen Sie mir, wie ich es richtig mache, denn"Normalisieren" rundet auf und das Ergebnis ist 1,20700.

Ich habe eine Umgehung versucht:

Ja, er gibt alles richtig aus -> 1.206 . Aber wenn man zu Double zurückgeht, wird wieder gerundet, aber auf 2 Dezimalstellen.

Ich brauche keine Rundung. Ich muss nur die 2., 3. oder 4. Stelle (nach meiner Wahl) nach dem Dezimalpunkt nehmen und den Rest verwerfen.

Wie mache ich es richtig?

Sie sind auf dem richtigen Weg: Konvertieren Sie double in string by Digits, und schneiden Sie dann vom Ergebnis(StringSubstr()) die erforderliche Anzahl von Ziffern ab.
 
Chiripaha:

Es gibt eine Notierung, nehmen wir an, Ask = 1,20667

Aus diesem Zitat müssen Sie die 3. Stelle nach dem Komma herausnehmen. D.h. nehmen Sie den Wert 1.206, der Rest sollte verworfen werden.

Bitte sagen Sie mir, wie ich es richtig mache, denn"Normalisieren" rundet auf und das Ergebnis ist 1,20700.

Ich habe eine Umgehung versucht:

Ja, er gibt alles richtig aus -> 1.206 . Aber wenn man zu Double zurückgeht, wird wieder gerundet, aber auf 2 Dezimalstellen.

Ich brauche keine Rundung. Ich muss nur die 2., 3. oder 4. Stelle (nach meiner Wahl) nach dem Dezimalpunkt nehmen und den Rest verwerfen.

Wie mache ich es richtig?

https://docs.mql4.com/ru/strings/StringSubstr
 

Ich bitte um Entschuldigung - ich hatte angenommen, dass ich etwas falsch verstanden habe. Ich habe versucht, das zu klären, aber die Wirkung ist immer noch da. - Es ist meine Schuld, tut mir leid.

Ich brauche nicht nur eine Ziffer (3., 4. usw. nach dem Komma), sondern die gesamte Ziffer bis einschließlich der 2., 3. oder 4. ABER! ohne Rundung.

Und das Problem ist, dass, wenn ich die Ziffer wieder in den Doppeltyp setze, wieder aufgerundet wird.

Und die ganze Sache ist die, dass selbst wenn diese Ziffer in einer dummen großen Art und Weise übersetzt einen Buchstaben zu einem Zeitpunkt zuerst in String-Typ, und dann übersetzt es in Double,

wird es sich wieder aufrunden. - Das ist die Ironie der Situation. Warum rundet die Funktion StrToDouble() eine Zahl? - Das ist es, was ich nicht verstehe. Die Aufgabe der Funktion besteht darin, sie von

von einem Format in ein anderes und fügen Sie dort nichts von sich selbst ein. Aber es wird auch etwas "verbessert".

 
Chiripaha:

Ich entschuldige mich dafür, dass ich annahm, ich könnte ein Missverständnis haben. Ich habe versucht, das zu klären, aber die Wirkung ist immer noch da. - Es ist meine Schuld, tut mir leid.

Ich brauche nicht nur eine Ziffer (3., 4. usw. nach dem Komma), sondern die gesamte Ziffer bis einschließlich der 2., 3. oder 4. ABER! ohne Rundung.

Und das Problem ist, dass, wenn ich die Ziffer wieder in den Doppeltyp setze, wieder aufgerundet wird.

Und die ganze Sache ist die, dass selbst wenn diese Ziffer in einer dummen großen Art und Weise übersetzt einen Buchstaben zu einem Zeitpunkt zuerst in String-Typ, und dann übersetzt es in Double,

wird es sich wieder aufrunden. - Das ist die Ironie der Situation. Warum rundet die Funktion StrToDouble() eine Zahl? - Das ist es, was ich nicht verstehe. Die Aufgabe der Funktion besteht darin, sie von

von einem Format in ein anderes und fügen Sie dort nichts von sich selbst ein. Aber es wird auch etwas "verbessert".

Kennen Sie den Unterschied zwischen einer Zahl und einer Nummer?
 
Chiripaha:

Ich entschuldige mich dafür, dass ich annahm, ich könnte ein Missverständnis haben. Ich habe versucht, das zu klären, aber die Wirkung ist immer noch da. - Es ist meine Schuld, tut mir leid.

Ich brauche nicht nur eine Ziffer (3., 4. usw. nach dem Komma), sondern die gesamte Ziffer bis einschließlich der 2., 3. oder 4. ABER! ohne Rundung.

Und das Problem ist, dass, wenn ich die Ziffer wieder in den Doppeltyp setze, wieder aufgerundet wird.

Und die ganze Sache ist die, dass selbst wenn diese Ziffer in einer dummen großen Art und Weise übersetzt einen Buchstaben zu einem Zeitpunkt zuerst in String-Typ, und dann übersetzt es in Double,

wird es sich wieder aufrunden. - Das ist die Ironie der Situation. Warum rundet die Funktion StrToDouble() eine Zahl? - Das ist es, was ich nicht verstehe. Die Aufgabe der Funktion besteht darin, sie von

von einem Format in ein anderes und fügen Sie dort nichts von sich selbst ein. Aber es wird auch etwas "verbessert".

Man muss die Fähigkeit entwickeln, zu "hören"! :))
 

: )))))))) Ja - das ist richtig. Alle Vorwürfe angenommen! - Dafür entschuldige ich mich nochmals. - Das alles sind die Folgen einer stark entwickelten (durch spezielle Übungen)

schöpferische, phantasievolle, poetische usw. Seite - trotzdem gibt es zwei Hemisphären im Menschen: die kreative und die rationale. Mein Fehler ist, dass ich es gesehen und nicht korrigiert habe.

Alle Ihre Behauptungen sind also zutreffend und ich bin schuldig.

Aber nur die Frage bleibt ungelöst...

Wie kann man das Problem letztendlich lösen?

Wenn Sie der Meinung sind, dass ich etwas überhört habe, klären Sie mich bitte auf. Ich verstehe die Rückkopplungstechnik (um "hören" zu können), aber ich habe noch keine Lösung gesehen.

Wie erhält man die richtige Zahl ohne Rundung in Double, bis zur 3. Dezimalstelle, z.B. bei dem Wert von Ask = 1,20667 ?- Eine Lösung wie "StrToDouble(DoubleToStr(Ask,3)) = 1,2100 // 1,2100 ist das Ergebnis (d.h. Rundung)" hat nicht funktioniert.

Ich danke Ihnen im Voraus für Ihre Toleranz und Ihr Verständnis.

 
Zhunko:
Kennen Sie den Unterschied zwischen einer Zahl und einer Nummer?


: )) Ja, natürlich verstehe ich den Unterschied. Aber in einem entschuldigenden und klärenden Beitrag habe ich diesen Fehler trotzdem gemacht (Wie man die richtige Zahl ohne Rundung erhält...), musste korrigieren (und habe es nicht sofort bemerkt). Es handelt sich nicht um ein Missverständnis, sondern um die andere Seite der Bildentwicklung. Das ist leider der Preis dafür. Wenn sie "lebende Tote" oder etwas Ähnliches sagen, ergibt das auch keinen Sinn. Aber ohne sie ist es unmöglich, das Wesen der Dinge bildlich zu erfassen. Ich meine, dass das normal ist. Urteilen Sie nicht. : ) Es ist auch nicht so gut, die Dinge wörtlich zu nehmen. - Ich werde mich, auch mit Ihrer Hilfe, bemühen, meine Mitteilung zu korrigieren. Gemeinsam werden wir das Leben besser und perfekter machen. Vielen Dank für Ihre Kommentare!
Grund der Beschwerde: