sill3000 Posted December 6, 2010 Report Share Posted December 6, 2010 Hallo liebe Freunde, möchte eine waagerechte Linie aufm chart einzeichnen lassen. Irgendwie scheint es nicht zu funktionieren. Hier mein Code start() { double price=Referenzpunkt; ObjectCreate("highLine",OBJ_HLINE,0,0,price); price=Referenzpunkt*Point; ObjectCreate("lowLine",OBJ_HLINE,0,0,price); ObjectSet("highLine",OBJPROP_COLOR,White); // changing the color of the upper line ObjectSet("highLine",OBJPROP_WIDTH,3); // now the line will be 3 pixel wide ObjectSet("lowLine",OBJPROP_COLOR,Crimson); // changing the color of the lower line ObjectSet("lowLine",OBJPROP_STYLE,STYLE_DOT); // now the lower line will be dashed } Verstehe nicht, warum zeichnet er nicht die waagerechte Linie ? Quote Link to comment Share on other sites More sharing options...
Bull68 Posted December 6, 2010 Report Share Posted December 6, 2010 Hi Sill, schau doch mal was "Point" bei Dir für einen Wert hat.Bei mir hat Point immer 0, sollte eigentlich nicht sein, ist aber so. Quote Link to comment Share on other sites More sharing options...
WOGO Posted December 6, 2010 Report Share Posted December 6, 2010 Verstehe nicht, warum zeichnet er nicht die waagerechte Linie ? Zeichnet er garnichts? Probiers mal, wenn du als Zeitkoordinate NULL oder - wenn das auch nicht - geht Time[0] eingibst! ObjectCreate("Name", OBJ_HLINE,0,NULL, price); Quote Link to comment Share on other sites More sharing options...
Bull68 Posted December 6, 2010 Report Share Posted December 6, 2010 @Wogo: ist in MQL zwischen "NULL" und "0" ein Unterschied? Es kann auch sein, dass die Linie gezeichnet wird, man sie aber nicht sieht, weil in der Koordinatenberechnung ein Fehler steckt und dadurch die Linie ausserhalb des sichtbaren Bereichs landet.Problem hatte ich heute noch mit einem Indikator ... noch steht der Euro ja nicht bei 1.00! Quote Link to comment Share on other sites More sharing options...
WOGO Posted December 7, 2010 Report Share Posted December 7, 2010 @Wogo: ist in MQL zwischen "NULL" und "0" ein Unterschied?NULL stellt einen leeren String dar, aber du hast schon recht. Daran wird's nicht liegen. Die Zeitkoordinate sollte komplett ignoriert werden. @sill3000:Wenn du unter Diagramme-Objekte-Objekte schaust (CTLR-B), werden dir da beiden Objekte angezeigt? Quote Link to comment Share on other sites More sharing options...
sill3000 Posted December 8, 2010 Author Report Share Posted December 8, 2010 (edited) Also mein Problem ist, ich möchte eine waagerechte Linie zeichen, die ich mit einem bestimmten Wert immer verändern möchte, den mein EA jede Minute berechnet und vom Typ double ist. Was schreibe ich in init() und in deinit() um das zu erreichen und welche Softwarekomponenten brauche ich da. Mit get oder set oder objectCreate und so ? DAnke, schonmal im voraus. Edited December 8, 2010 by sill3000 Quote Link to comment Share on other sites More sharing options...
Bull68 Posted December 8, 2010 Report Share Posted December 8, 2010 So hab mal was gebastelt Sill: der Beispielindikator zeichnet eine horizontale Linie 10 Pips unter den aktuellen Bid. #property indicator_chart_window #property indicator_color1 HotPink #define PRICE_LINE "SLLine" int init() { Print("Line indicator initialized"); if(!ObjectCreate(PRICE_LINE, OBJ_HLINE, 0, 0, 0)) { Print("Error: can't create line_object! code #",GetLastError()); return(0); } ObjectSet(PRICE_LINE, OBJPROP_COLOR, indicator_color1); } int deinit() { ObjectDelete(PRICE_LINE); ObjectsRedraw(); } int start() { ObjectSet(PRICE_LINE, OBJPROP_PRICE1, Bid - (10 / MathPow(10, Digits - 1))); return(0); } Extra für Vola eine schöne Farbe ausgesucht , aber die kann man ja ändern. Quote Link to comment Share on other sites More sharing options...
sill3000 Posted December 8, 2010 Author Report Share Posted December 8, 2010 So hab mal was gebastelt Sill: der Beispielindikator zeichnet eine horizontale Linie 10 Pips und den aktuellen Bid. Extra für Vola eine schöne Farbe ausgesucht , aber die kann man ja ändern. HotPink Danke, werde ich gleich mal ausprobieren ! Quote Link to comment Share on other sites More sharing options...
sill3000 Posted December 8, 2010 Author Report Share Posted December 8, 2010 Und wie muss es aussehen, wenn ich einen EA damit erweitern möchte und im gleichen Fenster ( dem Orginalfenster) darstellen möchte ? Entschudigt meine dummen Fragen. Quote Link to comment Share on other sites More sharing options...
sill3000 Posted December 8, 2010 Author Report Share Posted December 8, 2010 (edited) Habs hinbekommen, dass es in einem EA funzt, vielen, vielen Dank euch allen besonders an Bull68. HotPinkt ist gut, das beisst sich so richtig im Auge. lol Edited December 8, 2010 by sill3000 Quote Link to comment Share on other sites More sharing options...
Bull68 Posted December 8, 2010 Report Share Posted December 8, 2010 Sorry sollte "...10 Pips unter dem aktuellen Bid." heissen, habs geändert. Ja Sill, sollte auch in einem EA funktionieren, mußt es nur einfügen, aber scheinst es ja schon hinbekommen zu haben. Wenn das Prinzip einmal verstanden hast, ist fast alles machbar. Quote Link to comment Share on other sites More sharing options...
sill3000 Posted December 8, 2010 Author Report Share Posted December 8, 2010 (edited) Ich denke so langsam komme ich klar mit der MQL, ab und zu habe ich mal ein paar "Hänger" aber hier wird einem ja schnell geholfen. Danke an all die Leute. dddddddaaaaaaaaannnnnnnkkkkkeeeee für die schnelle und kompetente Hilfe Edited December 8, 2010 by sill3000 Quote Link to comment Share on other sites More sharing options...
Vola Posted December 9, 2010 Report Share Posted December 9, 2010 Extra für Vola eine schöne Farbe ausgesucht , aber die kann man ja ändern. Danke, danke.Finde es schön wie die jüngeren sich hier in der Vorweihnachtszeit um die etwas älteren liebevoll kümmern. Quote Link to comment Share on other sites More sharing options...
Bull68 Posted December 9, 2010 Report Share Posted December 9, 2010 Gerne geschehen lieber Vola *kopfstreichel* Und vor allem: "...die Jüngeren..." btt: Hoffe die Farbe war comod!? Quote Link to comment Share on other sites More sharing options...
sill3000 Posted January 26, 2011 Author Report Share Posted January 26, 2011 So hab mal was gebastelt Sill: der Beispielindikator zeichnet eine horizontale Linie 10 Pips unter den aktuellen Bid. #property indicator_chart_window #property indicator_color1 HotPink #define PRICE_LINE "SLLine" int init() { Print("Line indicator initialized"); if(!ObjectCreate(PRICE_LINE, OBJ_HLINE, 0, 0, 0)) { Print("Error: can't create line_object! code #",GetLastError()); return(0); } ObjectSet(PRICE_LINE, OBJPROP_COLOR, indicator_color1); } int deinit() { ObjectDelete(PRICE_LINE); ObjectsRedraw(); } int start() { ObjectSet(PRICE_LINE, OBJPROP_PRICE1, Bid - (10 / MathPow(10, Digits - 1))); return(0); } Extra für Vola eine schöne Farbe ausgesucht , aber die kann man ja ändern. Und wenn ich das "Linienobjekt" nur mal für sagen wir mal eine gewisse Zeit nur ausblenden möchte und nicht löschen. Wie sieht dann der Quellcode aus, ObjectDelete(), löscht ja alles, oder ?? Quote Link to comment Share on other sites More sharing options...
sill3000 Posted January 26, 2011 Author Report Share Posted January 26, 2011 Kann man die Objekte auch wieder reaktivieren, oder wie kann man die init-Fkt.() neu starten ? Im voraus besten Dank Quote Link to comment Share on other sites More sharing options...
WOGO Posted January 27, 2011 Report Share Posted January 27, 2011 Kann man die Objekte auch wieder reaktivieren, oder wie kann man die init-Fkt.() neu starten ? Im voraus besten DankDu mußt die Objekte ja nicht in der Init-Fktn. erzeugen, sondern kannst das an jeder beliebigen Stelle in Start() machen.Nimm einfach den Code der Init-Funktion, gib der Funktion einen beliebigen Namen z.B. "void SillsObjekte()" und dann kannst du, die Objekte, wenn du sie vorher löscht, über diese Funktion immer wieder neu erzeugen. Quote Link to comment Share on other sites More sharing options...
sill3000 Posted January 27, 2011 Author Report Share Posted January 27, 2011 Du mußt die Objekte ja nicht in der Init-Fktn. erzeugen, sondern kannst das an jeder beliebigen Stelle in Start() machen.Nimm einfach den Code der Init-Funktion, gib der Funktion einen beliebigen Namen z.B. "void SillsObjekte()" und dann kannst du, die Objekte, wenn du sie vorher löscht, über diese Funktion immer wieder neu erzeugen. Danke. das probiere ich sofort aus. Quote Link to comment Share on other sites More sharing options...
sill3000 Posted March 15, 2011 Author Report Share Posted March 15, 2011 Ich erzeuge ein graphisches Objekt mit diesem Quellcode: if(!ObjectCreate(PRICE_LINE3, OBJ_HLINE, 0, 0, 0)) { //Print("Error: can't create line_object! code #",GetLastError()); return(0); } ObjectSet(PRICE_LINE3, OBJPROP_COLOR, indicator_color_STR1); } Gib der Linie einen Wert mit diesem Befehl ObjectSet(PRICE_LINE3, OBJPROP_PRICE1,Referenzrot1+STR1Wert*Point); Lösche ein graphisches Objekt mit diesem Quellcode: ObjectDelete(PRICE_LINE3); ObjectsRedraw(); Aber irgendwie kann ich diese beiden Funktionen nicht hintereinander starten, denn beim erneuten Erzeugen von STR1, wird die Linie nicht wieder angezeigt ! Das verstehe ich nicht so genau, bräuchte da ein bisschen Unterstützung. Vielen Dank schonmal im voraus. Gruss sill3000 Quote Link to comment Share on other sites More sharing options...
WOGO Posted March 15, 2011 Report Share Posted March 15, 2011 Aber irgendwie kann ich diese beiden Funktionen nicht hintereinander starten, denn beim erneuten Erzeugen von STR1, wird die Linie nicht wieder angezeigt !Kriegst du eine Fehlermeldung beim Versuch das Objekt wieder zu Erzeugen, wenn du die auskommentierte Print-Anweisung aktivierst? Quote Link to comment Share on other sites More sharing options...
sill3000 Posted March 15, 2011 Author Report Share Posted March 15, 2011 Kriegst du eine Fehlermeldung beim Versuch das Objekt wieder zu Erzeugen, wenn du die auskommentierte Print-Anweisung aktivierst? Keine Fehlermeldung, aber ich sehe die Linie nicht mehr auf dem Bildschirm, und obwohl ich die gleichen Werte genommen habe bzw. die Werte lasse ich mir mit Print auf dem Reiter "Experten" ausgeben. Quote Link to comment Share on other sites More sharing options...
WOGO Posted March 15, 2011 Report Share Posted March 15, 2011 Keine Fehlermeldung, aber ich sehe die Linie nicht mehr auf dem Bildschirm, und obwohl ich die gleichen Werte genommen habe bzw. die Werte lasse ich mir mit Print auf dem Reiter "Experten" ausgeben.Das Print aktualisiert sich oft erst beim Schließen von MT4. Ersetze Print mal durch Alert! Quote Link to comment Share on other sites More sharing options...
sill3000 Posted March 15, 2011 Author Report Share Posted March 15, 2011 Das Print aktualisiert sich oft erst beim Schließen von MT4. Ersetze Print mal durch Alert! Es geht doch um die Linie auf dem Bildschirm(Chart), die ist weg, wenn ich einmal das "Objectdelete" aufgerufen habe. Quote Link to comment Share on other sites More sharing options...
Mythos Posted March 15, 2011 Report Share Posted March 15, 2011 Es geht doch um die Linie auf dem Bildschirm(Chart), die ist weg, wenn ich einmal das "Objectdelete" aufgerufen habe. Was genau machst du denn im Code derzeit? Derzeit können wir hier nur mutmaßen wie genau die Codeschnippsel eingebaut sind bzw. was du machst. Und da ist eine Fehlersuche sehr schwierig.Einfacher wäre es wenn du ein Codeschnippsel posten könntest, wo der Fehler auftritt, und das man auch selber testen kann. Quote Link to comment Share on other sites More sharing options...
sill3000 Posted March 15, 2011 Author Report Share Posted March 15, 2011 (edited) Was genau machst du denn im Code derzeit? Derzeit können wir hier nur mutmaßen wie genau die Codeschnippsel eingebaut sind bzw. was du machst. Und da ist eine Fehlersuche sehr schwierig.Einfacher wäre es wenn du ein Codeschnippsel posten könntest, wo der Fehler auftritt, und das man auch selber testen kann. Der Code ist ja weiter oben beschrieben zum erzeugen, editieren und löschen der Objekte oder was genau meinst du ? Meine Grundidee eben: Werte von einem Indikator werden berechnet und auf dem chart als Linie abgebildet, und dabei werden eben manche Linien manchmal gebraucht und manchmal nicht. Die berechnungen sind korrekt, die gebe ich ja mit der Print-Fkt. aus, das einzige Problem ist eben, das wenn die "Linienobjekte" gelöscht sind, sie nicht wieder auf dem Bildschirm(Chart) angezeigt werden, mehr nicht. Edited March 15, 2011 by sill3000 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.