MT 5 Fehler beim abspeichern von Templates

 

Hallo,

ich habe gerade festgestellt, das wenn ich ein Chartfenster mit einem Panel (EA) als Template abspeichere, alle CLabel Elemente separat im Template gespeichert werden.

Wenn man jetzt das Template auf einen Chart anwendet, dann sind die CLabel Elemente zusätzlich zum EA und damit störend im Chart.


Hat das Problem noch jemand ?

Ist das ein Standard-Bibliothek Problem ?

Oder ist das ein MT 5 Software Problem ?


Gruß

Thorsten

 

Es ist Standardverhalten von Vorlagen, auch die Diagrammobjekte zu speichern.

Das Problem ist, dass die "Standardbibliothek" den Namen des "zufälligen" Objekts verwendet. Wenn Sie also die Vorlage anwenden, kann der EA / Indikator, der sie gezeichnet hat, sie nicht erkennen. Sie sind Waisen.

Es ist ein Problem mit der "Standardbibliothek". Sie müssen einen Weg finden, damit umzugehen.

 

Hallo Alain,

ich glaube nicht das das ein Standardverhalten ist, da nur die Objecte von CLabel aus dem EA betroffen sind.

Alle anderen Objecte wie RectangleLabel, Edit, Buttons, etc. sind nicht betroffen.


Im Beispiel EA ist nur das Object Label betroffen, mit jedem abspeichern des Templates wird es ein Label mehr.

In einem anderen EA von mir, wo auch noch Buttons und CheckBoxen drin sind, werden alle CLabels separat gespeichert.


Gruß

Thorsten

 

Kann es sein, das du bei der zuweisung des names für das label einen fehler hast?

ich verwende auch labels und hab das problem nicht

 
amando:

Kann es sein, das du bei der zuweisung des names für das label einen fehler hast?

ich verwende auch labels und hab das problem nicht

Hallo Amando,

ich habe das bei meinem EA, der auf ein MQ Beispiel beruht, festgestellt und mit dem Beispiel von MetaQuotes aus CLabel getestet.

https://www.mql5.com/de/docs/standardlibrary/controls/clabel


Gruß

Thorsten

Dokumentation zu MQL5: Standardbibliothek / Panels und Dialoge / CLabel
Dokumentation zu MQL5: Standardbibliothek / Panels und Dialoge / CLabel
  • www.mql5.com
//|                                                ControlsLabel.mq5 | //|                        Copyright 2017, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| defines                                                          |  INDENT_LEFT                         (11)      ...
 
Thorsten Fischer:

Hallo Amando,

ich habe das bei meinem EA, der auf ein MQ Beispiel beruht, festgestellt und mit dem Beispiel von MetaQuotes aus CLabel getestet.

https://www.mql5.com/de/docs/standardlibrary/controls/clabel


Gruß

Thorsten

ich hab das ja mitlerweile anders gelöst, da mich das panal im chart stört,

aber hast du

virtual bool  Create(
   const long    chart,      // Chart-ID
   const string  name,       // Name
   const int     subwin,     // Chart-Unterfenster
   const int     x1,         // Koordinate x1
   const int     y1,         // Koordinate y1
   const int     x2,         // Koordinate x2
   const int     y2          // Koordinate y2
   )

den Namen überall richtig vergeben?

der Name zieht sich durch alles, und ist auch der Name was in der Objektliste angezeigt wird

 
amando:

ich hab das ja mitlerweile anders gelöst, da mich das panal im chart stört,

aber hast du

den Namen überall richtig vergeben?

der Name zieht sich durch alles, und ist auch der Name was in der Objektliste angezeigt wird

Wie gesagt ist das das Beispiel von MQ, soweit ich das sehe ist dort auch kein fehler zu sehen.

if(!m_label.Create(m_chart_id,m_name+"Label",m_subwin,x1,y1,x2,y2))

Das gelbe ist Panel was vom EA erzeugt wird. Wenn der Chart jetzt als Template abgespeichert wird, wird das rot umrandete Label

seperat zum Panel (EA) abgespeichert und erscheint dann oben zusätzlich zu den schon 3 vorhanden Label. Der EA erzeugt dann ein neues Panel mit einem neuen Label.

Es gibt ja auch nichts an der funktionsweise des Panel (EA) zu bemängeln. Nur wenn der Chart als Template gespeichert wird, speichert das Template das Label mit ab.

Was ja beim nächsten aufrufen des Templates zu dem Panel(EA) Label noch das alte Label erzeugt und das dann natürlich störend auf dem Chart steht ohne mit dem Panel verbunden zu sein.

Wenn ich das Panel(EA) vom Chart entferne, dann werden alle vom Panel(EA) erzeugten Objecte auch wieder korrekt entfernt.

Nur die Funktion Template speichern erzeugt eine Template-Datei mit dem EA und zusätzlich werden von allen CLabels des Panel(EA) separate Objecte in der Datei gespeichert.

 
Thorsten Fischer :

Hallo Alain,

ich glaube nicht das das ein Standardverhalten ist, da nur die Objecte von CLabel aus dem EA betroffen sind.

Alle anderen Objecte wie RectangleLabel, Edit, Buttons, etc. sind nicht betroffen.


Im Beispiel EA ist nur das Object Label betroffen, mit jedem abspeichern des Templates wird es ein Label mehr.

In einem anderen EA von mir, wo auch noch Buttons und CheckBoxen drin sind, werden alle CLabels separat gespeichert.


Gruß

Thorsten

Was ich damit gemeint habe ist, dass Sie keine Kontrolle über MT4-Vorlagen haben. Was gespeichert wird oder nicht, liegt außerhalb Ihrer Kontrolle. Sie müssen einen Weg finden, damit umzugehen.

Es ist ein bekanntes Problem .

MQL5 Templates - Saving a template w/ EA also saves
MQL5 Templates - Saving a template w/ EA also saves
  • 2019.05.02
  • www.mql5.com
This is only a minor annoyance. Steps: Start with a "clean" chart...
 
Alain Verleyen:

Was ich damit gemeint habe ist, dass Sie keine Kontrolle über MT4-Vorlagen haben. Was gespeichert wird oder nicht, liegt außerhalb Ihrer Kontrolle. Sie müssen einen Weg finden, damit umzugehen.

Es ist ein bekanntes Problem .

Hallo Alain,

das habe ich gleich mal getestet. Du hast recht in MT 4 wird zu dem EA auch das Panel vom EA komplett die einzelnen Objecte gespeichert.

Aber ich habe das auf MT 5 bezogen. Und hier speichert er nur den EA und vom Panel des EAs nur die CLabel Objecte. Wenn er jetzt die CLabel Objecte noch weglassen würde dann wäre die Funktion korrekt.

Außerdem macht es doch keinen Sinn eine Funktion ChartSaveTemplate anzubieten, wenn ich im Nachhinein die Template-Datei nochmal bearbeiten soll. Also von MT 4 zu MT 5 wurde bis auf CLabel schon alles als Fehler beseitigt.

Bitte bestätige mir das durch einen Test von dir.


Vielen Dank im Voraus.

 
Thorsten Fischer :

Hallo Alain,

das habe ich gleich mal getestet. Du hast recht in MT 4 wird zu dem EA auch das Panel vom EA komplett die einzelnen Objecte gespeichert.

Aber ich habe das auf MT 5 bezogen. Und hier speichert er nur den EA und vom Panel des EAs nur die CLabel Objecte. Wenn er jetzt die CLabel Objecte noch weglassen würde dann wäre die Funktion korrekt.

Außerdem macht es doch keinen Sinn eine Funktion ChartSaveTemplate anzubieten, wenn ich im Nachhinein die Template-Datei nochmal bearbeiten soll. Also von MT 4 zu MT 5 wurde bis auf CLabel schon alles als Fehler beseitigt.

Bitte bestätige mir das durch einen Test von dir.


Vielen Dank im Voraus.

Es war ein Tippfehler, ich meinte MT5. Es ist anders als MT4, wie Sie bemerkt haben, aber dies ist KEIN Fehler. Ich werde von Metaquotes nicht geändert, da Beschriftungen etwas sind, das in ihren Vorlagen gespeichert werden soll.

Das Problem ist die Standardbibliothek, die eine Zufallszahl im Namen verwendet hat.

Sie müssen sich in Ihrem Code damit auseinandersetzen. Glaube mir oder nicht :-)

 
Alain Verleyen:

Es war ein Tippfehler, ich meinte MT5. Es ist anders als MT4, wie Sie bemerkt haben, aber dies ist KEIN Fehler. Ich werde von Metaquotes nicht geändert, da Beschriftungen etwas sind, das in ihren Vorlagen gespeichert werden soll.

Das Problem ist die Standardbibliothek, die eine Zufallszahl im Namen verwendet hat.

Sie müssen sich in Ihrem Code damit auseinandersetzen. Glaube mir oder nicht :-)

Warum speichert er ab nur das CLabel von dem Panel und nicht die anderen Objecte von dem Panel wie z.B. Buttons.

Beschriftungen die ich in den Chart direkt setze, sollen ja auch gespeichert werden, ab nicht die von einem Panel (EA).