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 |
Hab was hinbekommen:
Code:
string strObjectName = "Linie1"; lg |
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 |
Ach ja klar dank dir!
Ich nehme einfach strObjectName+Time[0] dann brauch ich nix seperat zählen ;) |
Zitat:
Nimm den vorgeschlagenen Zähler, ist einfacher. traderdoc |
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é :) |
ObjectCreate(objectname, OBJ_TREND, 0, time1, price1, time2, price2);
ObjectSet(objectname, OBJPROP_RAY, false); traderdoc |
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? |
"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 |
Ja, es sind Kerzen. Macht das einen Unterschied ob Kerzen oder Bars?
+120 Period () klingt einleuchtend, aber wieso noch *60? |
Zitat:
*60, weil TimeCurrent() Sekunden darstellen und Period() Minuten. traderdoc |
Vermutlich 60sec. * Period(), das würde Sinn machen.
|
Jetzt habe ich noch eine Frage: wenn ich diese Linie jeden Tag zu einer bestimmten Uhrzeit zeichnen möchte muss ich vermutlich einen counter verwenden um den strObjectName zu verändern.
Aber wenn ich "hlimit+hl" nutze und hl hochzähle funktioniert es nicht. string strObjectName = "hlimit"; ObjectCreate("hlimit", OBJ_TREND, 0, TimeCurrent(), upperL, TimeCurrent()+120*Period()*60, upperL); ObjectSet("hlimit", OBJPROP_RAY, false); ObjectSet("hlimit", OBJPROP_STYLE, 2); ObjectSet("hlimit", OBJPROP_COLOR, Green); ObjectSet("hlimit", OBJPROP_WIDTH, 2); Habe ich einen Denkfehler? |
"hlimit+hl" ist einfach ein String, der z.B. über Alert() ausgegeben den Schriftzug hlimit+hl ergeben würde.
Wenn Du eine Integerzahl hochzählen willst, um sie an einen String zu hängen dann so: //neuer Tag .... hl++; ObjectCreate("hlimit" + (string)hl, OBJ_TREND, 0, TimeCurrent(), upperL, TimeCurrent()+120*Period()*60, upperL); traderdoc |
Danke für deine Hilfe traderdoc.
Habe es so eingebaut und es funktioniert. Ich habe anscheinend zu kompliziert gedacht aund es mit einer for-Schleife probiert. |
Manuelle horizontale Linie auslesen
Hallo zusammen,
der Übersichtlichkeit im Forum halber habe ich diesen Thread wieder reaktiviert. Es geht wieder um horizontale Linien. Aktuell suche ich eine Möglichkeit den Preis einer manuell(!) gezeichneten Linie auszulesen und dann weiter als Globale Variable zu verwenden. Dazu nutze ich im Moment die ObjectGet Funktion. Dazu benötige ich allerdings des Namen der Linie, den ich aber ungern für jede Linie manuell eingeben will. Hat jemand dazu einen Lösungsvorschlag? Danke & Gruß, Bucardo |
Habe eine Lösung für mein Problem gefunden:
void OnTick() { //Linie auswerten START int obj_total=ObjectsTotal(); for(int i=0;i<obj_total;i++) { string Objektname; Objektname=ObjectName(i); } GlobalVariableSet(Symbol()+"_Swing-Level",ObjectGet(Objektname,OBJPROP_PRICE1)); //Linie auswerten ENDE } Falls jemand von den Profis noch Verbesserungsvorschläge hat, gerne her damit. Für meine Bedürfnisse funktioniert das soweit gut. :) Gruß Bucardo |
Das funktioniert aber nur sicher, wenn nur eine grafisches Objekt vorhanden ist.
Ansonsten wird das Programm immer das letzte gefundene Objekt nehmen. traderdoc |
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:55 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