Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Mehrere "Comments" anzeigen lassen (http://www.expert-advisor.com/forum/showthread.php?t=3630)

André 20.04.14 21:49

Mehrere "Comments" anzeigen lassen
 
Hallo zusammen :)
ich hab ein Problem mit zwei meiner Indikatoren. In beiden ist die Comment-Funktion integriert um mir Infos auf dem Chart anzeigen zu lassen. Wenn ich nun beide Indikatoren auf einen Chart anwende, wird immer nur der Kommentar des zuletzt eingefügten Indikators angezeigt und der erste Kommentar wird somit überdeckt :D
Aufgrund meiner doch sehr jungen Programmierkenntnisse in MQL4 muss ich diese Frage einfach mal stellen: Gibt es eine Möglichkeit, alle Kommentar-Infos, aus beiden Indikatoren, parallel im Chart anzuzeigen?
--> nebeneinander, untereinander ist mir dabei völlig egal, wichtig ist das die Infos überhaupt angezeigt werden...

Danke für eure Hilfe. ;)

fxdaytrader 20.04.14 22:15

soweit ich weiß ist das nicht möglich.
Du müsstest wohl mit (Text)Objekten arbeiten und diese dann unterschiedlich positionieren ...

traderdoc 21.04.14 10:03

Prinzipiell ist es immer möglich die Kommunikation zwischen verschiedenen Programmen im MT4 über die Globalen Variablen zu realisieren. Dein Fall hier wäre fast ein Klassiker, wenn er nicht so aufwändig wäre, weil die Globalen Variablen nur als Ganzzahlen oder Dezimalzahlen gespeichert werden können und bei Dir aber Textzeichen vorliegen.
Die Vorgehensweise ist folgende:
1. Die Comment()-Funktion des Indikators, dessen Kommentar überschrieben wird abschalten (entweder mit // oder /* ...*/ auskommentieren, oder die Funktion Comment() löschen.
2. Die einzelnen Kommentarzeilen als String über die Funktion StringToCharArray() in ein separates Array aus ANSI-Zeichen kopieren.
3. Diese separaten Arrays feldweise (i) auslesen und in Globale Variablen mittels GlobalVarriableSet("Zeichen" + i, array(i)); schreiben.
4. Diese Globalen Variablen von dem Indikator der überschreibt mittels GlobalVariableGet("Zeichen" + i); wieder einlesen.
5. Die eingelesenen ASCI-Zeichen mittels CharToString wieder in Textzeichen umwandeln. (oder die eingelesenen ASCI-Zeichen in ein Array speichern und statt 6. diese Arrays mittels CharToString wieder in eien Textzeile umwandeln)
6. Diese einzelnen Textzeichen mittels StringConcatenate() zu Textzeilen formieren.
7. Alle Textzeilen über Comment() auf den Chart ausgeben.

Ist zugegebenerweise etwas aufwändig, aber die einzige Möglichkeit.

Viele Erfolg!

traderdoc

fxdaytrader 21.04.14 10:09

Ein durchaus interessanter Ansatz :)

Ach ja - der Threadersteller könnte das Anhängen seiner beiden Indikatoren (im .mq4-Format) in Erwägung ziehen :)

traderdoc 21.04.14 12:44

Da fällt mir doch noch eine Möglichkeit ein:
1. Die Comment()-Funktion des Indikators, dessen Kommentar überschrieben wird abschalten (entweder mit // oder /* ...*/ auskommentieren, oder die Funktion Comment() löschen.
2. Die Kommentarzeilen in eine csv-Datei schreiben.
3. Vom anderen Indikator diese csv-Datei einlesen lassen.
4. Und die Strings an die Kommentare des zweiten Indikators anhängen.

traderdoc

fxdaytrader 21.04.14 12:49

Auch möglich.
Da man allerdings nie weiß ob man nicht auch einen der beiden Indikatoren einzeln nutzen möchte (auch mit Hinblick auf andere user) würde ich es wohl wie folgt handhaben:

externer parameter ShowScreenComment (true: normalen comment anzeigen, false:nicht anzeigen).
Einen weiteren parameter der dazu dient den user entscheiden zu lassen ob Textobjekte genutzt werden sollen. Falls ja könnte der user die Ecke sowie die x/y-Parameter, schriftart/-größe anpassen und den Text jeweils so positionieren daß der des anderen Indikatores nicht überdeckt wird.

André 22.04.14 19:13

Danke für eure schnellen Antworten,
den Vorschlag mit den x,y-Koordinaten, ist wahrscheinlich am einfachsten umzusetzen. Ich werde mal mein bestes versuchen :D

@traderdoc: Wie das schreiben in eine CSV-Datei funktioniert weiß ich leider nicht, habe ich persönlich noch nie gemacht, da werde ich so meine Schwierigkeiten damit haben :cool:

@fxdaytrader: Der Code hat übrigens nichts besonderes an sich, lediglich zwei Indikatoren mit jeweils einer Comment()-Funktion.


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:50 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum