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

Ca$hDigger 20.03.14 14:13

Linie
 
Hallo,

hat jemand ein Codebeispiel zum zeichnen einer simplen Linie in den Chart?

Parameter sind:

-Zeitpunkt Linie Anfang
-Zeitpunkt Linie Ende
-Kurswert Linie Anfang
-Kurswert Linie Ende
-Linien-Farbe
-Linien-Dicke

lg C$D

Ca$hDigger 20.03.14 15:01

Hab was hinbekommen:

Code:

string strObjectName = "Linie1";
ObjectCreate(strObjectName, OBJ_TREND, 0, zeit1, wert1, zeit2, wert2);
ObjectSet(strObjectName, OBJPROP_RAY, false);
ObjectSet(strObjectName, OBJPROP_COLOR, Yellow);
ObjectSet(strObjectName, OBJPROP_WIDTH, 4);

Habe aber noch das Problem es wird nur 1x die Linie gezeichnet bei weiteren Aufrufen des Codes werden keine weiteren Linien erstellt woran kann das Liegen?

lg

fxdaytrader 20.03.14 15:07

Was willst denn genau machen?
Das Object "strObjectName" ist ja gezeichnet. Das kannst verschieben, löschen, neu erstellen usw.

Sollen noch andere Objekte gezeichnet werden müssen die auch anders heissen.
Hier könnte ein Zähler helfen, bspw.(vereinfacht) strObjectName+counter wobei sich "counter" bei jedem objekt um 1 erhöht

Ca$hDigger 20.03.14 15:26

Ach ja klar dank dir!
Ich nehme einfach strObjectName+Time[0] dann brauch ich nix seperat zählen ;)

traderdoc 20.03.14 15:31

Zitat:

Zitat von Ca$hDigger (Beitrag 25695)
Ach ja klar dank dir!
Ich nehme einfach strObjectName+Time[0] dann brauch ich nix seperat zählen ;)

Geht, macht aber das Zugreifen mittels ObjectGet() etwas kompliziert und unübersichtlich. Wenn z.B. der Price einer Linie ausgelesen werden soll braucht man den Objektnamen und dann mußt Du genau wissen, welchen Wert Time[0] damals hatte.

Nimm den vorgeschlagenen Zähler, ist einfacher.

traderdoc

André 27.08.14 17:49

Hallo, darf ich hier mal anknüpfen...

wie bekommt man es denn hin, dass die Linie NICHT als Strahl sondern lediglich von time1,price1 bis time2,price2 gezeichnet wird?

Gruß André :)

traderdoc 27.08.14 19:30

ObjectCreate(objectname, OBJ_TREND, 0, time1, price1, time2, price2);
ObjectSet(objectname, OBJPROP_RAY, false);

traderdoc

carnap 18.01.16 22:29

Hab zum gleichen Thema eine Frage und wollte nicht noch einen Thread eröffnen.

Möchte gerne zu einem bestimmten Zeitpunkt TimeCurrent() eine horizontale Linie ziehen, die eine bestimmte Länge in Zeiteiheiten (bars) haben soll hier 120.

Folgender Code habe ich versucht, der aber leider keine Linie zeichnet:
upperL liefert über commet einen Price, daran kann es also nicht liegen.

string strObjectName = "hlimit";
ObjectCreate("hlimit", OBJ_TREND, 0, TimeCurrent(), upperL, TimeCurrent()+120, upperL);
ObjectSet("hlimit", OBJPROP_RAY, false);
ObjectSet("hlimit", OBJPROP_STYLE, 2);
ObjectSet("hlimit", OBJPROP_COLOR, Green);
ObjectSet("hlimit", OBJPROP_WIDTH, 2);

Kann mir jemand sagen wo der Fehler liegt?

traderdoc 18.01.16 22:51

"die eine bestimmte Länge in Zeiteiheiten (bars) haben soll hier 120."
Soll bedeuten: (bars) -> also Kerzen!?,

D.h. 120 Kerzen nach rechts:
ObjectCreate("hlimit", OBJ_TREND, 0, TimeCurrent(), upperL, TimeCurrent()+120*Period()*60, upperL);

oder nach links:
ObjectCreate("hlimit", OBJ_TREND, 0, TimeCurrent(), upperL, TimeCurrent()-120*Period()*60, upperL);

traderdoc

carnap 18.01.16 23:07

Ja, es sind Kerzen. Macht das einen Unterschied ob Kerzen oder Bars?
+120 Period () klingt einleuchtend, aber wieso noch *60?


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