Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

graphische Objekte

Geschrieben

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 ? :birdie:

Featured Replies

Geschrieben

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.

Geschrieben

Verstehe nicht, warum zeichnet er nicht die waagerechte Linie ? :birdie:

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);

Geschrieben

@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! :gum:

Geschrieben

@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. :moi_big:

Die Zeitkoordinate sollte komplett ignoriert werden.

 

@sill3000:

Wenn du unter Diagramme-Objekte-Objekte schaust (CTLR-B), werden dir da beiden Objekte angezeigt?

Geschrieben
  • Autor

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.

Bearbeitet von sill3000

Geschrieben

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 :gum: , aber die kann man ja ändern.

Geschrieben
  • Autor

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 :gum: , aber die kann man ja ändern.

 

 

HotPink :good2:

 

Danke, werde ich gleich mal ausprobieren !

Geschrieben
  • Autor

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.

Geschrieben
  • Autor

Habs hinbekommen, dass es in einem EA funzt, vielen, vielen Dank euch allen besonders an Bull68. :correct:

 

HotPinkt ist gut, das beisst sich so richtig im Auge. lol

Bearbeitet von sill3000

Geschrieben

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. :correct:

 

Wenn das Prinzip einmal verstanden hast, ist fast alles machbar. :smile:

Geschrieben
  • Autor

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

Bearbeitet von sill3000

Geschrieben

Extra für Vola eine schöne Farbe ausgesucht :gum: , aber die kann man ja ändern.

:top:

Danke, danke.

Finde es schön wie die jüngeren sich hier in der Vorweihnachtszeit um die etwas älteren liebevoll kümmern. :shell:

Geschrieben

Gerne geschehen lieber Vola *kopfstreichel* :smile:

 

Und vor allem: "...die Jüngeren..." :mocking:

 

btt: Hoffe die Farbe war comod!?

  • 1 Monat später...
Geschrieben
  • Autor

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 :gum: , 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 ??

Geschrieben
  • Autor

Kann man die Objekte auch wieder reaktivieren, oder wie kann man die init-Fkt.() neu starten ?

 

Im voraus besten Dank

Geschrieben

Kann man die Objekte auch wieder reaktivieren, oder wie kann man die init-Fkt.() neu starten ?

 

Im voraus besten Dank

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.

Geschrieben
  • Autor

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.

  • 1 Monat später...
Geschrieben
  • Autor

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

Geschrieben

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?

Geschrieben
  • Autor

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.

Geschrieben

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!

Geschrieben
  • Autor

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.

Geschrieben

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.

Geschrieben
  • Autor

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.

Bearbeitet von sill3000

Geschrieben

Der Code ist ja weiter oben beschrieben zum erzeugen, editieren und löschen der Objekte oder was genau meinst du ?

 

Oben sind einzelne Zeilen die eine Linie erzeugen, ändern und wieder löschen. Das funktioniert ja oder?

Die Frage ist: was funktioniert nicht? Wenn du nach dem löschen die Linie nochmal erzeugst? Wie erzeugst du sie nochmal? Wie sieht der Code aus? was passiert dazwischen? Wird der Code zum 2. Erzeugen wirklich ausgeführt? etc.

All diese Fragen sind nur aus den paar freilaufenden Zeilen nicht beantwortbar.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.