![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Hallo!
Ich muss grafisch sehen, wie sich der Wert einer bestimmten Variablen bei jedem Balken während eines visuellen Tests ändert, d. h. ich muss ein separates Diagramm in einem Unterfenster erstellen. Ich möchte zum Beispiel ein Diagramm der Aktienveränderungen für jeden Balken in einem separaten Fenster unterhalb des Diagramms sehen.
Was sollte ich tun? Sollte ich einen Indikator schreiben, befestigen Sie es auf dem Diagramm und übergeben Sie es die Werte der Variablen aus dem EA durch globale Variablen des Terminals? Oder gibt es einen "besseren" Weg?
Ich danke Ihnen im Voraus.
Hallo!
Ich muss grafisch sehen, wie sich der Wert einer bestimmten Variablen bei jedem Balken während eines visuellen Tests ändert, d. h. ich muss ein separates Diagramm in einem Unterfenster erstellen. Ich möchte zum Beispiel ein Diagramm der Aktienveränderungen für jeden Balken in einem separaten Fenster unterhalb des Diagramms sehen.
Was sollte ich tun? Sollte ich einen Indikator schreiben, fügen Sie es auf dem Diagramm und übergeben Sie es die Werte der Variablen aus dem EA durch globale Variablen des Terminals? Oder gibt es einen "besseren" Weg?
Ich danke Ihnen im Voraus.
Keineswegs, Sie können Eigenkapital- oder Bilanzwerte direkt im Indikator abrufen.
Definieren Sie die Parameter des Indikatorpuffers, der als Balkendiagramm gezeichnet wird.
Und schreiben Sie alle vier Werte in die entsprechenden Puffer,
Öffnen bei Taktbeginn, Hoch-Tief und Dynamik (der letzte Takt).
es sieht so aus: in der Anlage
Natürlich können Sie auch den absoluten Wert verwenden (empfohlene Option), aber ich glaube nicht, dass er kleine anfängliche Inkremente anzeigt, daher halte ich die Differenz zwischen Anfangs- und aktuellem Wert für besser.
ZS, aber nein, die Skala ist dynamisch, so dass Sie die zweite Option tun können, ist es recht lesbar.
Keineswegs, Sie können die Eigenkapital- oder Bilanzwerte direkt im Indikator abrufen.
Legen Sie die Parameter für die Darstellung des Indikatorpuffers als Balkendiagramm fest.
und schreiben alle vier Werte in die entsprechenden Puffer,
dynamisch zu Bar Open, High Low und Close (letzter Bar) öffnen.
OBJ_LABEL auf dem Diagramm.
Sie können ihn auch hier lesen:
https://www.mql5.com/ru/forum/1111/40260#comment_40260
https://www.mql5.com/ru/forum/2963
Eigenkapital- und Bilanzwerte, ja, aber was ist, wenn ich den Wert einer in einem EA berechneten Variablen sehen möchte?
Sie können dies über ein benutzerdefiniertes Ereignis tun, vergessen Sie nur nicht, das Diagramm nach dem Ereignis zu aktualisieren,
weil das Häkchen vor der Verarbeitung des Ereignisses kommt, in der Reihenfolge der Priorität.
Aber es ist möglich, es mit Globals zu tun, aber es gibt das gleiche Problem - der Tick ist bereits gekommen und die Variable wird noch in der EA verarbeitet (seine Änderungen werden vorbereitet), natürlich werden die Daten empfangen werden, aber es wird eine Verzögerung auf einem Tick, es ist noch richtiger in der Veranstaltung, gibt es einen Ort, um das Diagramm nach der Tat zu aktualisieren, wenn Sie bereits sicher wissen, dass die Variable die aktuellen Daten hat.
Dieser Code lässt sich nicht kompilieren mit der Fehlermeldung "'return' - structure has objects and cannot be copied" wegen des Stopps"CTest getCopy(void) {CTest res; return res;}".
Dies kann auf 2 Arten behoben werden:
1)"Klasse" in"Struktur" ändern
2) Dekommentieren Sie das Stopka mit einem überladenen Zuweisungsoperator.
Es sollte also so sein, dass die Rolle des Kopierkonstruktors von einem überladenen Zuweisungsoperator übernommen wird? Warum wird es dann im Referenzbuch nicht erwähnt, mit Ausnahme eines Beispiels für eine Matrixklasse (dessen detaillierte Analyse es mir übrigens ermöglichte, den Fehler in meinem Code zu finden)?
Dieser Code lässt sich nicht kompilieren mit der Fehlermeldung "'return' - structure has objects and cannot be copied" wegen des Stopps"CTest getCopy(void) {CTest res; return res;}".
Dies kann auf 2 Arten behoben werden:
1)"Klasse" in"Struktur" ändern
Siehe oben.
2) Dekommentieren Sie das Stopka mit einem überladenen Zuweisungsoperator.
Natürlich gibt der überladene Operator einen Handle-Zeiger zurück, was normal ist. Jetzt ist es nicht das Objekt, das von der Funktion getCopy() zurückgegeben wird, sondern der Zeiger (die Rückgabe der Funktion ist eine implizite Zuweisung), der den Code korrekt macht.
// Nur syntaktisch korrekt.
// Die Rückgabe einer nicht initialisierten Variablen aus der Funktion getCopy() dient hoffentlich nur zur Veranschaulichung des Syntaxproblems und erhebt nicht den Anspruch, sinnvoll zu sein.
Es sollte also so sein, dass die Rolle des Kopierkonstruktors von einem überladenen Zuweisungsoperator übernommen wird?
Warum wird dies im Referenzbuch nicht erwähnt, mit Ausnahme eines Beispiels für eine Matrixklasse (dessen detaillierte Analyse mir übrigens geholfen hat, den Fehler in meinem Code zu finden)?
Denn am 11. Februar 2096785 v. Chr. trat der Dinosaurier Vasya unvorsichtigerweise auf die Eidechse Clava. Das löste eine lange Kette von Ursachen und Folgen aus, die zu der heutigen Situation führte. Man kann nichts dafür.
;)
Warum sollte sie initialisiert werden? Es ist eine Instanz einer Klasse, die einen Konstruktor für genau diesen Zweck hat.
Ähm ... Was haben Rollen damit zu tun? Sie können den Zuweisungsoperator beliebig überladen und den Kopierkonstruktor korrekt schreiben. Ihr Fehler liegt an einer ganz anderen Stelle.
Und wie schreibt man dann einen korrekten Kopierkonstruktor für diesen Zweck?