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.

Objekt bewegt sich nicht

Geschrieben

Ich habe 2 Objekte an das Close gehängt, sodass sie mir immer am Preis angezeigt werden, leider bewegt sich das zweite Objekt(im Chart die untere Reihe) nicht mit dem Preis, sondern steht einfach. Mir wären untereinander dargestellte Zahlen, die sich mit dem Preis bewegen am liebsten. Kann mir jemand einen Tip geben?

 

int start()
 {

double i;
  int m,s,k,t;
  m=Time[0]+Period()*60-TimeCurrent();
  i=m/60.0;
  s=m%60;
  m=(m-m%60)/60;
   
  string aZeit;
  aZeit = TimeToStr( TimeCurrent(),TIME_SECONDS);
  
  double price = Close[0];
  if(price > 8.0)
  int points = 2;
  else
  points = 4;
 
  string price2 = DoubleToStr(Bid, points);
  
  string short  = DoubleToStr(((iHigh(Symbol(),0,(iHighest(Symbol(),0,MODE_HIGH,12,0)))-Bid)/Point/10), 0);
  string long  = DoubleToStr(MathAbs(((iLow(Symbol(),0,(iLowest(Symbol(),0,MODE_LOW,12,0)))-Bid)/Point/10)), 0);
  

  ObjectDelete("time"); ObjectDelete("time");

  ObjectCreate("time", OBJ_TEXT, 0, Time[12], Close[0]+ 0.0003);
  ObjectSetText("time",aZeit +"  "+m+":"+s , 12, "Courier New", Color);
  
  ObjectCreate("price", OBJ_TEXT, 0, Time[12], Close[0]- 0.0003);
  ObjectSetText("price","L: "+long+ "    S: "+ short, 12, "Courier New", Color);


  return(0);
 }

post-1524-0-50500900-1334142756_thumb.png

Featured Replies

Geschrieben

leider bewegt sich das zweite Objekt(im Chart die untere Reihe) nicht mit dem Preis, sondern steht einfach.

Du löscht zweimal hintereinander das Object "time" !

 

ObjectDelete("time"); ObjectDelete("time");

 

Versuchs dochmal damit:

 

ObjectDelete("time"); ObjectDelete("price");

Geschrieben
  • Autor

Hat jemand eine Idee wie man die Abstände der 3 Zeilen auf dem Chart gleichmäßig zueinander macht, trotz verschiedener Zeitfenster? Habe schon Multiplikation nach Close[0] versucht, geht aber natürlich nicht^^

 ObjectCreate("time", OBJ_TEXT, 0, Time[12], Close[0]+ 0.0003);
  ObjectSetText("time", "  "+price2+"  "+m+":"+s+" >" , 12, "Courier New", Color);
  
  ObjectCreate("short", OBJ_TEXT, 0, Time[periods], Close[0]+ 0.0007);
  ObjectSetText("short",short_price+" ( "+ short+ " )", 12, "Courier New", Teal);
  
  ObjectCreate("long", OBJ_TEXT, 0, Time[periods], Close[0]- 0.0001);
  ObjectSetText("long", long_price+ " ( "+ long+  " )", 12, "Courier New", Teal);
  
  ObjectCreate("shortAR", OBJ_ARROW, 0, Time[t_short], High[t_short]+ 0.00050);
  ObjectSet("shortAR", OBJPROP_ARROWCODE, 115);
  ObjectSet("shortAR", OBJPROP_COLOR, Teal);
  
  ObjectCreate("longAR", OBJ_ARROW, 0, Time[t_long], Low[t_long]- 0.00050);
  ObjectSet("longAR", OBJPROP_ARROWCODE, 115);
  ObjectSet("longAR", OBJPROP_COLOR, Teal);

post-1524-0-51111300-1334158134_thumb.png

Geschrieben

Hat jemand eine Idee wie man die Abstände der 3 Zeilen auf dem Chart gleichmäßig zueinander macht, trotz verschiedener Zeitfenster?

Idee:

1. Zuerst mittels ObjectGet("...", OBJPROP_YDISTANCE) die y-Koordinaten der drei Zeilen auslesen.

2. neue y-Koordinaten bestimmen durch Addition bzw. Subtraktion eines Pixelversatzes, der der Differenz der y-Koordinaten im hohen Timeframe entspricht

3. Danach mittels ObjectSet("...", OBJPROP_YDISTANCE, neue y-Koordinate) setzen.

Geschrieben

Hat jemand eine Idee wie man die Abstände der 3 Zeilen auf dem Chart gleichmäßig zueinander macht, trotz verschiedener Zeitfenster? Habe schon Multiplikation nach Close[0] versucht, geht aber natürlich nicht^^

 ObjectCreate("time", OBJ_TEXT, 0, Time[12], Close[0]+ 0.0003);
  ObjectSetText("time", "  "+price2+"  "+m+":"+s+" >" , 12, "Courier New", Color);
  
  ObjectCreate("short", OBJ_TEXT, 0, Time[periods], Close[0]+ 0.0007);
  ObjectSetText("short",short_price+" ( "+ short+ " )", 12, "Courier New", Teal);
  
  ObjectCreate("long", OBJ_TEXT, 0, Time[periods], Close[0]- 0.0001);
  ObjectSetText("long", long_price+ " ( "+ long+  " )", 12, "Courier New", Teal);
  
  ObjectCreate("shortAR", OBJ_ARROW, 0, Time[t_short], High[t_short]+ 0.00050);
  ObjectSet("shortAR", OBJPROP_ARROWCODE, 115);
  ObjectSet("shortAR", OBJPROP_COLOR, Teal);
  
  ObjectCreate("longAR", OBJ_ARROW, 0, Time[t_long], Low[t_long]- 0.00050);
  ObjectSet("longAR", OBJPROP_ARROWCODE, 115);
  ObjectSet("longAR", OBJPROP_COLOR, Teal);

 

Gibt es eine Möglichkeit die vertikale Ausdehnung des Fensters in Pips zu ermitteln? Wenn man dann davon nach oben und unten je x Prozent ansetzt müsste das in jeder Zeiteinheit funktionieren.

 

IMHO müsste das mit WindowPriceMax und WindowPriceMin gehen.

 

Lutz

Geschrieben
Gibt es eine Möglichkeit die vertikale Ausdehnung des Fensters in Pips zu ermitteln?

Eine Möglichkeit wäre GetPaneHeights

Nachteil, arbeitet mit der WinApi, muss also DLL Nutzung erlaubt sein.

http://codebase.mql4.com/5984

Geschrieben

:nictation: Da war ich gestern auch schon, als ich versucht habe, automatisch die Größe meines Screen´s zu erfassen . Denn damit könnte ich meinen fix auf dem Screen stehenden Text immer "rechts unten" || "1/3 links , 3/8 mitte" positionieren. Dies unabhängig davon ob ich gerade auf einen 15 , einem 17 oder 18´´ Screen arbeite . Leider habe ich keinen Hinweis auf die Weite des Bildschirms finden können , "nur" den oben verlinkten GetPaneHeights . Ein GetPaneWidth kennt niemand von Euch, nicht wahr ?

 

KB

Geschrieben
Denn damit könnte ich meinen fix auf dem Screen stehenden Text immer "rechts unten" || "1/3 links , 3/8 mitte" positionieren. Dies unabhängig davon ob ich gerade auf einen 15 , einem 17 oder 18´´ Screen arbeite...

Du könntest auch eine Label benutzten damit gibst du den Pixel Abstand von unten rechts an.

Wichtig OBJPROP_CORNER auf 3 setzten = unten rechts.

ObjectSet(n,OBJPROP_CORNER,corner_position);

  • 4 Wochen später...
Geschrieben
  • Autor

double abstand =ObjectGet("longAR2", OBJPROP_YDISTANCE);

Comment(abstand);
Print(abstand);

Bringt bei mir keine Rückgabe, hab ich den falschen Typ oder warum bekomme ich jedesmal die 0 zurück?

Bearbeitet von Mythos
code tags eingefügt

Geschrieben

Bringt bei mir keine Rückgabe, hab ich den falschen Typ oder warum bekomme ich jedesmal die 0 zurück?

 

ObjectGet liefert ein double. Typ ist also richtig. Mein Fehler, bei yDistance retouniert es int, der cast sollte aber funktionieren, sprich 0 bleibt 0.

Warum du die 0 zurückbekommst: Weil die yDistance von longAR2 0 ist.

 

PS: bitte code auch wirklich in code-tags einbetten zwecks Lesbarkeit. Danke.

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.