[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 30
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
Liebe Forumsmitglieder, helfen Sie mir, das Problem mit der Genauigkeit des Standartabweichungsindikators zu lösen. Wenn Sie den rein visuellen Vergleich zweier benachbarter Indikatorwerte betrachten, können Sie sehen, dass der aktuelle Wert höher/niedriger ist als der vorherige, aber wenn Sie diese beiden Werte in den tatsächlichen Werten z.B. im Datenfenster vergleichen, können Sie sehen, dass die Werte gleich sein werden.
Die in der Textbeschriftung anzuzeigenden Werte werden auf die 4. Stelle abgeschnitten, dies garantiert nicht ihre tatsächliche Gleichheit, die fünfte und weitere Stellen sind unterschiedlich.
Um 5 und mehr Ziffern zu erhalten, müssen Sie die Werte des Indikators genauer kennen. Ich habe NormalizeDouble ausprobiert, um mehr Genauigkeit zu erhalten, aber nichts funktioniert.
Besser ist es, DoubleToStr() zu verwenden.
Besser ist es, DoubleToStr() zu verwenden.
Ich verstehe, dass dieser Wert für die Markierung im Diagramm benötigt wird, und wenn die Zahl vom Standardindikator empfangen wird, dann ist sie bereits in Ziffern umgewandelt, es gibt wahrscheinlich nichts zu tun, es sei denn, Sie implementieren den Indikatoralgorithmus in Ihrem Code.
Für Berechnungen können Sie auch versuchen, zurück zu Double zu konvertieren, mit erhöhten Ziffern...
Ich verstehe, dass dieser Wert für die Markierung auf dem Diagramm benötigt wird, und wenn die Zahl vom Standardindikator empfangen wird, wird sie in Ziffern umgewandelt, wahrscheinlich kann nichts getan werden, außer den Indikatoralgorithmus im Code zu implementieren.
Für Berechnungen können Sie auch versuchen, zurück zu Double zu konvertieren, mit erhöhter Stellenkapazität...
Zurück zum Doppelten funktioniert nicht, wenn man auf 4 Ziffern rundet. Vielen Dank für die Hilfe.
UPD: Ich habe die Frage entfernt, ich glaube, ich habe es herausgefunden, ich habe einfach die Indikatorwerte mit 10 multipliziert, die gleichen 4 Ziffern bleiben, aber die Genauigkeit hat sich erhöht.
1) Gehen Sie zur Codebase, laden Sie den Indikator herunter: https://www.mql5.com/ru/code/8022
2) IndicatorDigits(x) einfügen ; x = Anzahl der Nullen nach dem Dezimalpunkt (Genauigkeit)
3) Werfen Sie den Indikator auf das Diagramm - bewundern Sie Ihre Arbeit.
Leider spielt es in Ihrem Fall keine Rolle, an welchen Preis Sie denken, wenn Sie die Bestellung eröffnen. Der Punkt ist, dass der Eröffnungszeitpunkt durch den Zeitpunkt bestimmt wird, nicht durch das Kursniveau; zu diesem Zeitpunkt gibt es die gleichen Geld- und Briefkurse und daher unterscheidet er sich nicht grundsätzlich von allen anderen Ticks. Ob Sie nun zum Zeitpunkt der Öffnung des Balkens oder zu einem anderen Zeitpunkt öffnen, das Ergebnis wird das gleiche sein. Beachten Sie bitte auch, dass die Angabe der Öffnungszeit des Balkens um 01:00 Uhr nicht bedeutet, dass der erste Tick des Balkens genau um 01:00:00 Uhr erfolgte. Open ist also nur eine Bedingung für die neue Balkenabtrennung, um die Erstellung von Diagrammen zu erleichtern.
Ich danke Ihnen für Ihre Antwort. Sie haben völlig Recht, dass OPEN der Schnittpunkt einer neuen Bar ist, aber dieser Punkt hat einen festen Preis. Der grundlegende Unterschied zwischen einem Open-Eintrag ist, dass der Open-Kurs auf allen Terminals desselben Kontos derselbe sein wird. In der Regel beträgt der Unterschied in der Endgeschwindigkeit nicht mehr als eine Sekunde. Während dieser Zeit kann sich die Kerze am "schnellen" Terminal öffnen und n Punkte bewegen. In diesem Fall, im "langsamen" Terminal, wird diese Kerze etwas später erscheinen, aber mit der Bewegung bereits gebildet. D.h. der Eröffnungs- und der aktuelle Kurs sind die gleichen wie im "schnellen" Terminal. Wenn also das Skript den Auftrag auf der Grundlage des aktuellen Kurses berechnet, kann der Einstiegskurs auf verschiedenen Terminals unterschiedlich sein. Bei einem schnellen Terminal ist es der Eröffnungskurs (Bid zum Zeitpunkt der Eröffnung des Balkens), bei einem langsamen Terminal der aktuelle Kurs (Bid im Moment). Dementsprechend unterschiedlich können sie sein. Und wenn wir den Eröffnungskurs als Basis nehmen, wird das Skript sofort den notwendigen Preis auf dem langsamen Terminal nehmen, ohne auf das aktuelle Bid zu achten. Das Ergebnis ist, dass wir auf allen Terminals denselben offenen Preis für die Berechnung von Aufträgen haben werden.