Fehler, Irrtümer, Fragen - Seite 758

 
Ja, jetzt sind sie vier Sekunden voraus.
 
Warum verschwindet der Mittelpunkt, wenn die Trendlinie ihre Position ändert?
 

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.

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
Alex5757000:

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.

Dateien:
 
Urain:

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.

Eigenkapital- und Bilanzwerte - ja, aber was, wenn ich den Wert einer im EA berechneten Variablen sehen möchte?
 
Alex5757000:
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)?

class CTest
  {
public:
    CTest(void): cnt(0) {}
   ~CTest(void) {}
    CTest(const CTest& T) {cnt = T.cnt;} // copy constructor
    //------------------------
    CTest getCopy(void) {CTest res; return res;} 
    //------------------------
    //CTest* operator=(const CTest& T) {cnt = T.cnt; return GetPointer(this);}
private:
         int cnt;
  };
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
  • www.mql5.com
Основы языка / Операторы / Оператор-выражение - Документация по MQL5
 
WWer:

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;}".

Natürlich kann ein Objekt nicht von Funktionen zurückgegeben werden.(Im Gegensatz zu Strukturen.) Es ist dokumentiert.


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?

Ähm ... Was haben Rollen damit zu tun? Sie können den Zuweisungsoperator beliebig überladen und den Kopierkonstruktor korrekt schreiben. Der Fehler liegt in Ihrem Fall woanders.


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.

;)

 
MetaDriver:// Die Rückgabe einer nicht initialisierten Variablen durch die Funktion getCopy() dient hoffentlich nur zur Veranschaulichung des Syntaxproblems und erhebt nicht den Anspruch, vernünftig zu sein.

Warum sollte sie initialisiert werden? Es ist eine Instanz einer Klasse, die einen Konstruktor für genau diesen Zweck hat.

MetaDriver:
Ä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?

Grund der Beschwerde: