Bibliotheken: Easy Canvas - Seite 16

 

Grüße, Nikolay.

Bei der Verwendung der Bibliothek bin ich auf ein Problem gestoßen: Wenn mehrere Programme mit iCanvas in einem Terminal verwendet werden, dann beginnen die Bilder nach dem Neuladen des Terminals spontan von einem zum anderen zu wechseln. Zuerst suchte ich nach Gründen in meinem Code, fand aber nichts. Dann bemerkte einer meiner Kunden zufällig, dass die Namen der iCanvas-Objekte in verschiedenen Diagrammen übereinstimmen.

Ich untersuchte, wie der Objektname für iCanvas generiert wird, und fand Folgendes heraus:

Name+=IntegerToString(GetTickCount());

Diese Art des Ladens des Terminals führt zu denselben Objektnamen auf verschiedenen Charts, wenn es sich um Expert Advisors handelt, da alle Expert Advisors im Terminal beim Laden denselben GetTickCount()-Wert erhalten. Bei Indikatoren gibt es dieses Problem nicht.

Um das Problem zu lösen, schlage ich diese Methode zur Erzeugung eines eindeutigen Objektnamens vor:

   Name += IntegerToString(ChartID()) + IntegerToString(GetTickCount());

Hier wird die Eindeutigkeit durch die folgenden Überlegungen gewährleistet:

  1. Indikatoren erhalten unterschiedliche GetTickCount()-Werte, auch wenn sie alle auf demselben Chart gestartet werden. Daher funktioniert diese Methode für sie.
  2. Expert Advisors erhalten den gleichen GetTickCount()-Wert, aber da ein Expert Advisor nur auf einem Chart sein kann, erhält sein Objekt Eindeutigkeit durch den Chart-Identifier.
 
Ihor Herasko Verwendung der Bibliothek bin ich auf ein Problem gestoßen: Wenn mehrere Programme mit iCanvas in einem Terminal verwendet werden, dann beginnen die Bilder nach dem Neuladen des Terminals spontan von einem zum anderen zu wechseln. Zuerst habe ich in meinem Code nach Gründen gesucht, aber nichts gefunden. Dann bemerkte einer meiner Kunden zufällig, dass die Namen der iCanvas-Objekte auf verschiedenen Diagrammen übereinstimmen.

Ich schaute mir an, wie der Objektname für iCanvas generiert wird, und fand Folgendes:

Diese Art des Ladens des Terminals führt zu gleichen Objektnamen auf verschiedenen Charts, wenn es sich um Expert Advisors handelt, da alle Expert Advisors im Terminal beim Laden den gleichen GetTickCount()-Wert erhalten. Bei Indikatoren gibt es dieses Problem nicht.

Um das Problem zu lösen, schlage ich diese Methode zur Erzeugung eines eindeutigen Objektnamens vor:

Hier wird die Einzigartigkeit durch folgende Überlegungen gewährleistet:

  1. Indikatoren erhalten unterschiedliche GetTickCount()-Werte, selbst wenn sie alle auf demselben Chart ausgeführt werden. Daher funktioniert diese Methode für sie.
  2. Expert Advisors erhalten denselben GetTickCount()-Wert, aber da ein Expert Advisor nur auf einem Chart laufen kann, erhält sein Objekt aufgrund der Chart-ID Eindeutigkeit.

Ich stimme zu.
Danke, Igor!
Habe die korrigierte Version hochgeladen.

Seltsam, ich dachte, dass der Name so gebildet wurde. :))

 
Letzte Version 1.49
Dateien:
iCanvas.mqh  58 kb
 
Version auf 1.49 aktualisiert
den Ressourcennamen gekürzt, da er zu lang war.
 

 Nikolai Semko #:
 обновил версию до 1.49
 укоротил имя ресурса, т.к. нарвался на слишком длинное имя

Guten Tag!
In der Datei iCanvas.mqh (auf dem Link zur MT5-Version) steht "#property version "1.09"...
Wo kann ich die neueste aktuelle Version herunterladen?
Und zur Version für MT4 auch eine Frage - im heruntergeladenen Archiv steht die Version "#property version "1.47"
- ist das die neueste fürMT4? Und wenn nicht - wo kann ich dieletzte aktuelle Version herunterladen?

Danke.

 
Maksims Ignatovs #:

Guten Tag!
In der Datei iCanvas.mqh (auf dem Link zur MT5-Version) steht "#property version "1.09"...
Wo kann ich die neueste aktuelle Version herunterladen?
Und zur Version für MT4 auch eine Frage - im heruntergeladenen Archiv steht die Version "#property version "1.47"
- ist das die neueste fürMT4? Und wenn nicht - wo kann ich dieletzte aktuelle Version herunterladen?

Danke.

Grüße!
Sie müssen eine Zip-Datei herunterladen. Laden Sie es niemals herunter. Es ist ein Fehler in MQ. Wenn ich die Version aktualisiere, wird die Zip-Datei nicht überschrieben und ich habe keinen Zugriff darauf.
Klicken Sie auf die Datei iCanvas.mqh selbst oder kopieren Sie sie aus dem Viewer.



 
Nikolai Semko #:

Grüße!
Sie müssen eine Zip-Datei herunterladen. Laden Sie sie niemals herunter. Dies ist ein Fehler in MQ. Wenn ich die Version aktualisiere, wird die Zip-Datei nicht überschrieben und ich habe keinen Zugriff darauf.
Klicken Sie auf die Datei iCanvas.mqh selbst oder kopieren Sie sie aus dem Viewer.



Herzlichen Dank!
 


Danke, dass Sie ihn mit uns teilen.
Ich habe schon seit einiger Zeit darüber nachgedacht, ein solches Tool zu entwickeln, und jetzt kann ich Ihren Code als Grundlage für meinen verwenden.

Gute Arbeit!
 
Guilherme Mendonca #:


Danke, dass Sie ihn mit uns teilen.
Ich habe schon seit einiger Zeit darüber nachgedacht, ein solches Tool zu entwickeln, und jetzt kann ich Ihren Code als Grundlage für meinen verwenden.

Gute Arbeit!
Ich danke Ihnen!
 
Letzte Version 1.53
Dateien:
iCanvas.mqh  71 kb