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)
-   -   Auslesen von Objekten (http://www.expert-advisor.com/forum/showthread.php?t=6496)

Gondiego 03.09.19 18:22

Auslesen von Objekten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

habe da nochmal eine Frage. Ich habe hier einen Indikator, welchen ich in einen EA einbinden möchte. Jedoch lässt sich das hier nicht mit iCustom bewerkstelligen, da dieser keine Werte ausgibt, sondern mit Farben arbeitet. Dieses Gebiet betrete ich dann aber zum ersten Mal...

Ich habe mir schonmal sagen lassen, dass man Objekte "auslesen" kann. Denke ich habe in der MQL4 Reference, das richtige gefunden, komme aber nicht so weit damit. Vielleicht habe ich auch ein Verständnisproblem.

Diese Zeile
Code:

color oldColor=ObjectGet("hline12", OBJPROP_COLOR);
ist denke ich mal, genau das, was ich brauche.

Nach meinem Verständnis müsste sie dann für meinen Inidi wie folgt aussehen
Code:

color T1=ObjectGet("FXVTF1", OBJPROP_COLOR);
Oder nicht? (für die anderen beiden dementsprechend auch)

Wollte das nun durch einen Print anzeigen lassen, sprich ob die Farbe nun auch ausgegeben wird (um dann damit weiter arbeiten zu können), doch es passiert nichts.

Wo liegt mein Fehler? Bin für jede Hilfe dankbar.


Grüße :)

traderdoc 03.09.19 18:43

Wenn das Object u.a. so heisst, dann wäre

Code:

color T1=ObjectGet("FXVTF1", OBJPROP_COLOR);
so richtig. Ich glaube jedoch, dass die Objecte alle unterschiedlich heißen oder wenigstens einen Basic-Namen haben und einen Zahlenzusatz, der sich im Laufe der Zeit von Object zu Object ändert.

traderdoc

Gondiego 03.09.19 19:50

Ja, richtig.

Visuell sind die Drei mit T1, T2 und T3 bezeichnet. Wenn man jedoch mit der Maus darüber zeigt, dann wird einem FXVTF1, FXVTF2 und FXVTF3 angezeigt. Ja, man sieht dann auch Werte dabei stehen, die sich jedes Mal verändern, wenn man den Mauszeiger wieder drüber hält. Scheinen wohl Werte aus anderen Timeframes zu sein.

Sollte mir denn bei einem Print nun die "ausgelesene" Farbe angezeigt werden?
Code:

Print(T1);
Wäre so doch richtig oder?

traderdoc 03.09.19 20:09

Nein, Werte anderer TFs sind das nicht.

Was gibt er denn aus bei Print(T1)?

Was stehen nach dem Drücken von Strg + b für Objekte in der Liste?

traderdoc

Gondiego 03.09.19 20:20

Liste der Anhänge anzeigen (Anzahl: 1)
Nichts. Das ist ja mein Problem, bzw. kann da noch nicht nachvollziehen warum.

Auf dem Bild ist zu sehen, was die Tabelle so hergibt.

traderdoc 03.09.19 20:31

Ok und wenn Du jetzt in dieser Tabelle mit der Maus z.B. auf eines der drei Objekte klickst und dann bei "Bearbeiten" danach auf den Reiter "Allgemein" gehst, was siehst Du da für eine Farbe rechts?

traderdoc

AVT 03.09.19 20:43

geht hier:
Code:

  string Rect1Name="FXVTF1"; //these are colored letters Wingdings "n"
  string Rect2Name="FXVTF2";
  string Rect3Name="FXVTF3";
 
  color TestBlue=clrBlue, TestRed=clrRed;
    Print(" Blue="+IntegerToString(TestBlue)+" Red="+IntegerToString(TestRed) ); //Get values
 
  long T1Color=ObjectGetInteger(0,Rect1Name,OBJPROP_COLOR);      //16711680 =Blue 255 =Red
    Print(" color "+Rect1Name+"="+IntegerToString(T1Color) );
  long T2Color=ObjectGetInteger(0,Rect2Name,OBJPROP_COLOR);      //16711680 =Blue 255 =Red
    Print(" color "+Rect2Name+"="+IntegerToString(T2Color) );
  long T3Color=ObjectGetInteger(0,Rect3Name,OBJPROP_COLOR);      //16711680 =Blue 255 =Red
    Print(" color "+Rect3Name+"="+IntegerToString(T3Color) );

Die Zahlen sind irgendwelche Farbumwandlungen von HEX zu sonstwas. AVT

Gondiego 04.09.19 18:25

Erstmal eine Danke @traderdoc und @AVT für die Hilfe.

Werde heute wahrscheinlich nicht mehr dazu kommen, das auszuprobieren bzw. muss erst mal sehen, was da in dem Code genau passiert bzw. wie ich damit jetzt weiter arbeiten kann.

Wollte aber zumindest schonmal einen Dank dalassen.

Grüße

Gondiego 05.09.19 18:19

Danke nochmal für den Code @AVT

Mich irretieren jetzt noch was die Zahlen in den Kommentaren. Muss ich diese nutzen wenn ich eine if-Abfrage der Farbe starte oder kann ich da mit TestBlue und TestRed arbeiten?

Letztendlich ist mein Ziel, immer alle drei in betracht zu ziehen, spriche wenn alle drei blau sind, soll es ein UP-Trend sein, wenn alle rot, dann ein DOWN-Trend.

Grüße

AVT 05.09.19 18:57

Zitat:

Zitat von Gondiego (Beitrag 42826)
Mich irretieren jetzt noch was die Zahlen in den Kommentaren. Muss ich diese nutzen wenn ich eine if-Abfrage der Farbe starte oder kann ich da mit TestBlue und TestRed arbeiten?

Die TestBlue und TestRed sind dazu da, um herauszufinden, welche "Farbzahl" herauskommt, wenn die Farbe "clrBlue" oder "clrRed" heißt. Das sind die Vorgabewerte aus dem Indikator. (Solltest Du die mal ändern, also statt "Blue" z.B. "YellowGreen" einstellen, wird sich auch die "Farbzahl" ändern).

Um die Farbe eines Objektes zu auszulesen, nimmt man ObjectGetInteger(...), man erfragt also eine Integer-Zahl (genau gesagt sind die "Farbzahlen" vom Typ long integer). Da es aber keine (jedenfalls ist mir so was nicht bekannt) Umwandlung von IntegerToColor oder sowas gibt, ist das einfachste mit dem Zahlwert zu arbeiten.

Zitat:

Zitat von Gondiego (Beitrag 42826)
Letztendlich ist mein Ziel, immer alle drei in betracht zu ziehen, spriche wenn alle drei blau sind, soll es ein UP-Trend sein, wenn alle rot, dann ein DOWN-Trend.

Dann brauchst Du trotzdem die beiden unterschiedlichen Zahlen, damit Du weißt, ob Du grad blau oder rot zu fassen hast. Wenn Du diese Farben vom Indikator nie änderst, dann kannst Du deren Zahlwerte vorher festlegen, der Rest ist dann die Bedingung
Code:

long UpColor=16711680; // Blue
long DnColor=255; // Red

if(  ObjectGetInteger(0,FXVTF1,OBJPROP_COLOR)==UpColor
  && ObjectGetInteger(0,FXVTF2,OBJPROP_COLOR)==UpColor
  && ObjectGetInteger(0,FXVTF3,OBJPROP_COLOR)==UpColor )
{
  //dann kaufen
}

ungetestet, sollte aber eigentlich :p so funktionieren. AVT


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:31 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