Eindeutiger ID-Generator für einen bestimmten Indikator - Seite 2

 
angevoyageur:
Was ist das Problem mit der Unterfensternummer?
Ich bin mir nicht sicher, woran Sie denken, aber beim Anwenden einer Vorlage oder beim Neuladen wird ein Wert wie CHART_WINDOWS_TOTAL als die Gesamtzahl der Indikatoren auf dem Diagramm gemeldet, nicht als die Gesamtzahl der bisher geladenen Indikatoren (d. h. er erhöht sich nicht Stück für Stück, wenn jeder Indikator initialisiert wird).
 
gchrmt4:
Ich bin mir nicht sicher, woran Sie denken, aber beim Anwenden einer Vorlage oder beim Neuladen wird ein Wert wie CHART_WINDOWS_TOTAL als die Gesamtzahl der Indikatoren auf dem Diagramm gemeldet, nicht als die bisher geladene Gesamtzahl (d. h. er erhöht sich nicht nach und nach, wenn jeder Indikator initialisiert wird).

Ok, Subwindow ist nicht zuverlässig, da es sich ändern kann.
 
angevoyageur:
Was ist das Problem mit der Unterfensternummer?

Mit der 610/614 war es fast unmöglich, es korrekt aus dem Indikator selbst abzurufen, in 616 wenn ist meist behoben, aber immer noch scheitert es in DeInit().
 
Ovo:

Beim 610/614 war es fast unmöglich, ihn korrekt aus dem Indikator selbst abzurufen, beim 616 ist das größtenteils behoben, aber es schlägt immer noch bei DeInit() fehl.
ChartWindowFind() scheint bei mir zu funktionieren. Wie auch immer, es ist nicht zuverlässig, denn wenn man einen Indikator entfernt und dann einen anderen hinzufügt, ändert sich die Nummer des Subfensters.
 
angevoyageur:
ChartWindowFind() scheint für mich zu funktionieren. Jedenfalls ist es nicht zuverlässig, denn wenn man einen Indikator entfernt und dann einen anderen hinzufügt, wird die Nummer des Unterfensters geändert.
Das gleiche Problem mit ChartWindowFind() wie mit dem alten WindowFind(): es ist nutzlos, wenn es mehr als eine Instanz desselben Indikators gibt, z.B. zwei RSI-Fenster, die Berechnungen für verschiedene Perioden zeigen (oder dieselbe Periode, aber Änderungen in anderen Parametern, die nicht in einem Aufruf von IndicatorShortName reflektiert werden).
 
gchrmt4:
Das gleiche Problem mit ChartWindowFind() wie mit dem alten WindowFind(): es ist nutzlos, wenn es mehr als eine Instanz desselben Indikators gibt, z.B. zwei RSI-Fenster, die Berechnungen für verschiedene Perioden zeigen.

Genau das habe ich gesagt: unzuverlässig.

Das ist ein interessantes Problem. Da es meiner Meinung nach nur dann Sinn macht, denselben Indikator mehrmals hinzuzufügen, wenn man verschiedene Eingabeparameter verwendet, wäre eine Möglichkeit, aus diesen Parametern eine Signatur zu bilden. Oder natürlich eine der von Ihnen vorgeschlagenen Lösungen.

 
gchrmt4:
Dasselbe Problem mit ChartWindowFind() wie mit dem alten WindowFind(): es ist nutzlos, wenn es mehr als eine Instanz desselben Indikators gibt, z. B. zwei RSI-Fenster, die Berechnungen für verschiedene Zeiträume zeigen (oder denselben Zeitraum, aber Änderungen in anderen Parametern, die sich nicht in einem Aufruf von IndicatorShortName widerspiegeln).

In der Tat ChartWindowFind funktioniert bereits für Indikatoren in 616, außer der OnDeinit. Aber immer noch zu nass, um als stabil zu sein, so möchte ich es in jeder ID-Erstellung zu vermeiden.

Danke für den Input, ich werde entweder die Dateisperre wählen oder auf die GetTickCount Änderung warten. Ich habe zu versuchen.

 
angevoyageur:

Genau das habe ich gesagt: unzuverlässig.

Das ist ein interessantes Problem. Da es meines Erachtens nur Sinn macht, denselben Indikator mehrmals hinzuzufügen, wenn man verschiedene Eingabeparameter verwendet, wäre eine Möglichkeit, aus diesen Parametern eine Signatur zu bilden. Oder natürlich eine der Lösungen, die Sie zuvor vorgeschlagen haben.


Ich nutze die neuen Möglichkeiten der MQL4-GUI, Parameter on the fly zu setzen und zu ändern. Die Signatur am Anfang ist also die gleiche, und trotzdem hat es Sinn, sie mehrfach hinzuzufügen. Nicht erwähnt, dass, wenn es möglich war, dass es richtig verhalten haben sollte.
 
Ovo:

In der Tat ChartWindowFind funktioniert bereits für Indikatoren in 616, außer der OnDeinit. Aber immer noch zu nass, um als stabil zu sein, so möchte ich es in jeder ID-Erstellung zu vermeiden.

Danke für den Input, ich werde entweder die Dateisperre wählen oder auf die GetTickCount Änderung warten. Ich habe zu versuchen.

Beim Lesen dieser, lehrte ich über die Verwendung von Zeit wie GetTickCount oben.

Dann lernte ich über __DATETIME__ Dateikompilierung Datum und Uhrzeit.

https://docs.mql4.com/constants/namedconstants/compilemacros

Was denkt ihr darüber?

 

Ich bin nicht sicher, ob Sie "gelehrt" meinten.

Ich benutze ein paar von ihnen für die Fehlersuche, aber für __DATETIME__ habe ich noch keine Verwendung gefunden... worauf zielen Sie ab?