Mehrere Texte über eine kleine Funktion ausgeben

 

Hallo zusammen,

ich mache meine ersten Tests mit der MQL5 Plattform und versuche mich hier auch mit den Programmcodes.
Dabei habe ich mir als erste Übung gesetzt, Text auszugeben, ich schaffe es auch eine Zeile auszugeben.

Jetzt habe ich das in eine Funktion gepackt (hoffentlich heißt das so) und dachte ich kann mehrere Zeilen ausgeben, aber das funktioniert nicht, ich bekomme nur den letzten Text angezeigt, alle anderen sind verschwunden.

Wo liegt mein Denkfehler bzw. was mache ich falsch?


void OnTick()
  {
        // Wir holen uns deb Ask-Preis(Kauf Preis)
      double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK), _Digits);
      // Wir holen uns den Eigenkapitalwert     
      double Balance=AccountInfoDouble(ACCOUNT_BALANCE);
      // Wir hilen uns unseren Kontostand
      double Equity=AccountInfoDouble(ACCOUNT_EQUITY);
      
      // Wir geben einen Text aus
      xText(5, 30, clrDeepPink, "Arial", 18, "Ask Preis       : " + Ask); 
      xText(5, 60, clrDeepPink, "Arial", 18, "Eigenkapitalwert: " + Balance);       
      xText(5, 90, clrDeepPink, "Arial", 18, "Kontostand      : " + Equity);      
   }
 
 // Text ausgabe  
   void xText(int Posi_link, int Posi_oben, color Text_Farbe, string Text_Art, int Text_Groese, string Text)
   {
      // Wir setzen die Objekteigenschaften für unseren Textobjekt
      ObjectCreate(_Symbol, "TextObjekt", OBJ_LABEL, 0, 0, 0);
      // Wir waehlen eine Schriftart aus 
      ObjectSetString(_Symbol, "TextObjekt", OBJPROP_FONT, Text_Art); 
      // Wir setzen die Schriftgroesse ein 
      ObjectSetInteger(_Symbol, "TextObjekt", OBJPROP_FONTSIZE, Text_Groese); 
      // Wir setzen die Schriftgroesse ein 
      ObjectSetInteger(_Symbol, "TextObjekt", OBJPROP_COLOR, Text_Farbe); 
       // Wir setzen den Text  
      ObjectSetString(_Symbol, "TextObjekt", OBJPROP_TEXT, 0, Text);
      // Wir setzen die text Position (Linker Rand))
      ObjectSetInteger(_Symbol, "TextObjekt", OBJPROP_XDISTANCE, Posi_link); 
      // Wir setzen die text Position (Oberen Rand))
      ObjectSetInteger(_Symbol, "TextObjekt", OBJPROP_YDISTANCE, Posi_oben);  
   }

Gruß Mücke

 
Auf die Schnelle: Tips und Links für den Neuling: https://www.mql5.com/de/forum/455957#comment_50048608
Neuling sucht Hilfe Unterstützung
Neuling sucht Hilfe Unterstützung
  • 2023.10.19
  • www.mql5.com
Hallo zusammen, ich habe gerade mit der Plattform MT4 angefangen und die ersten Gehversuche hinter mir...
 
Muecke82:

Hallo zusammen,

ich mache meine ersten Tests mit der MQL5 Plattform und versuche mich hier auch mit den Programmcodes.
Dabei habe ich mir als erste Übung gesetzt, Text auszugeben, ich schaffe es auch eine Zeile auszugeben.

Jetzt habe ich das in eine Funktion gepackt (hoffentlich heißt das so) und dachte ich kann mehrere Zeilen ausgeben, aber das funktioniert nicht, ich bekomme nur den letzten Text angezeigt, alle anderen sind verschwunden.

Wo liegt mein Denkfehler bzw. was mache ich falsch?


Gruß Mücke

Für die Textausgabe auf dem Chart ist Comment() viel, viel besser geeignet, graphische Objekte fressen ziemlich viel Zeit, müssen sie doch bei jedem neuen Balken neu platziert werden.

Dokumentation zu MQL5: Allgemeine Funktionen / Comment
Dokumentation zu MQL5: Allgemeine Funktionen / Comment
  • www.mql5.com
Comment - Allgemeine Funktionen - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
Muecke82:
TextObjekt

Hallo,

Sie haben zwei Fehler gemacht:

1: Objekt sollte bei jedem Tick gelöscht werden, da sonst die Daten bleiben immer gleichbestehen.

2: Sie haben Drei Objekte und gleichen Objektnamen.

Hier ist der Code, der funktioniert.

void OnTick() {
   // Wir holen uns deb Ask-Preis(Kauf Preis)
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK), _Digits);
   // Wir holen uns den Eigenkapitalwert
   double Balance=AccountInfoDouble(ACCOUNT_BALANCE);
   // Wir hilen uns unseren Kontostand
   double Equity=AccountInfoDouble(ACCOUNT_EQUITY);

   // Wir geben einen Text aus
   //  Drei Objekte und Drei verschiedene Namen
   xText("TextObjektAsk",5, 30, clrDeepPink, "Arial", 18, "Ask Preis       : " + (string)Ask);
   xText("TextObjektBal",5, 60, clrDeepPink, "Arial", 18, "Eigenkapitalwert: " + (string)Balance);
   xText("TextObjektEq",5, 90, clrDeepPink, "Arial", 18, "Kontostand      : " + (string)Equity);
}

// Text ausgabe
// ObjectName neudefiniert
void xText(string ObjName, int Posi_link, int Posi_oben, color Text_Farbe, string Text_Art, int Text_Groese, string Text) {
   // Wir setzen die Objekteigenschaften für unseren Textobjekt
   ObjectDelete(0,ObjName); // Objekt löschen dazu codiert. Da mit jedem Tick die Daten geändert werden!!
   ObjectCreate(0, ObjName, OBJ_LABEL, 0, 0, 0);
   // Wir waehlen eine Schriftart aus
   ObjectSetString(0, ObjName, OBJPROP_FONT, Text_Art);
   // Wir setzen die Schriftgroesse ein
   ObjectSetInteger(0, ObjName, OBJPROP_FONTSIZE, Text_Groese);
   // Wir setzen die Schriftgroesse ein
   ObjectSetInteger(0, ObjName, OBJPROP_COLOR, Text_Farbe);
   // Wir setzen den Text
   ObjectSetString(0, ObjName, OBJPROP_TEXT, 0, Text);
   // Wir setzen die text Position (Linker Rand))
   ObjectSetInteger(0, ObjName, OBJPROP_XDISTANCE, Posi_link);
   // Wir setzen die text Position (Oberen Rand))
   ObjectSetInteger(0, ObjName, OBJPROP_YDISTANCE, Posi_oben);
}
//+------------------------------------------------------------------+


Gruß Igor

 

@ Carl Schreibe: Das mit dem Comment() klingt wirklich gut, sieht auch gut aus. Hier muss man alles zusammenschreiben und auf einmal ausgeben lassen. und es ist sehr klein.
Aber das Argument mit der Geschwindigkeit ist ein sehr guter Hinweis und nicht zu vernachlässigen.


Igor Widiger: Oh, da hast du recht, danke, so funktioniert meine Ausgabe jetzt auch richtig. DANKE, und das mit dem Löschen vorher ist sehr sinnvoll, DANKE!


[OT] wie / Wo kann ich im Forum einstellen das ich per mail über neue Antworten benachrichtigt werden möchte?

 
Muecke82 #:

@ Carl Schreibe: Das mit dem Comment() klingt wirklich gut, sieht auch gut aus. Hier muss man alles zusammenschreiben und auf einmal ausgeben lassen. und es ist sehr klein.
Aber das Argument mit der Geschwindigkeit ist ein sehr guter Hinweis und nicht zu vernachlässigen.


Igor Widiger: Oh, da hast du recht, danke, so funktioniert meine Ausgabe jetzt auch richtig. DANKE, und das mit dem Löschen vorher ist sehr sinnvoll, DANKE!


[OT] wie / Wo kann ich im Forum einstellen das ich per mail über neue Antworten benachrichtigt werden möchte?

Hallo,

es können im Profil unter Einstellungen/Benachrichtigungen/Neue Forum Themen eingestellt werden.

Sonst als Push-Benachrichtigungen  ans Smartphone (sollte MT5 Terminal installiert sein).

Oder es gibt eine Möglichkeit in Favoriten abzuspeichern.

Gruß Igor

 

Oh perfekt, ich glaube ich habe es gefunden.

nent sich jedoch dann:


im Profil unter Einstellungen/Benachrichtigungen/

Benachrichtigungen per E-Mail erhalten:

> Themen im Forum


ich hoffe das es das war.



Gruß Mücke

 

Kann man die Schriftart bei Comment(?) auf "Courier New" ändern, dann könnte man sauber untereinander schreiben.

Ich habe dazu nichts gefunden :-(

Dokumentation zu MQL5: Allgemeine Funktionen / Comment
Dokumentation zu MQL5: Allgemeine Funktionen / Comment
  • www.mql5.com
Comment - Allgemeine Funktionen - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
Muecke82 #:

Kann man die Schriftart bei Comment(?) auf "Courier New" ändern, dann könnte man sauber untereinander schreiben.

Ich habe dazu nichts gefunden :-(

Hallo,

in Dokumentation steht nichts. Wahrscheinlich geht es nicht. Nur mit Objekten.

 
Muecke82 #:

Kann man die Schriftart bei Comment(?) auf "Courier New" ändern, dann könnte man sauber untereinander schreiben.

Ich habe dazu nichts gefunden :-(

Nein geht nicht, seit langem immer wieder vergeblich gewünscht ...

 

Ok, schade, ich dachte vielleicht, wenn es nicht über den Code geht, dass man das in der Konfiguration des Chartfensters einstellen kann, aber da habe ich auch nichts gefunden :-(.

Naja, ich muss damit leben, ich versuche mein Glück mit der PRINT Ausgabe.


[OT] Das mit der E-Mail-Benachrichtigung aus dem Forum hat leider immer noch nicht geklappt :-(