ObjectSetString

Gibt den Wert der entsprechenden Eigenschaftdes Objekts. Eigenschaft muss des Typs string sein. Es gibt 2 Varianten der Funktion.

Einstellung des Wertes der Eigenschaft ohne Modifikator

bool  ObjectSetString(
   long                            chart_id,          // Identifikator des Charts
   string                          name,              // Name
   ENUM_OBJECT_PROPERTY_STRING     prop_id,           // Eigenschaft
   string                          prop_value         // Wert
   );

Einstellung des Wertes der Eigenschaft mit Andeutung von Modifikator

bool  ObjectSetString(
   long                            chart_id,          // Identifikator des Charts
   string                          name,              // Name
   ENUM_OBJECT_PROPERTY_STRING     prop_id,           // Eigenschaft
   int                             prop_modifier,     // Modifikator
   string                          prop_value         // Wert
   );

Parameter

chart_id

[in]  Identifikator des Charts. 0 bedeutet den laufenden Chart.

name

[in]  Objektname.

prop_id

[in]  Identifikator der Eigenschaft des Objekts. Wert kann einer der Enumerationswerte ENUM_OBJECT_PROPERTY_STRING sein.

prop_modifier

[in] Modifikator der angegebenen Eigenschaft. Die meisten Eigenscgaften erfordern keinen Modifikator. Bedeutet die Standnummer in Fibonacci Werkzeuge und in Andrew's Pitchfork. Nummerierung beginnt bei Null.

prop_value

[in]  Wert der Eigenschaft.

Rückgabewert

Die Funktion gibt true zurück nur wenn der Befehl zum Ändern der Eigenschaften von Objekten zum Chart erfolgreich gesendet wurde. Ansonsten gibt es false zurück. Für die Erhaltung der weiteren Information über den Fehler, muss die Funktion GetLastError() aufgerufen werden.

Hinweis

Die Funktion verwendet einen asynchronen Aufruf, d.h. dass die Funktion nicht auf die Ausführung des zur Warteschlange des Charts erfolgreich hinzugefügten Befehls wartet, sondern direkt die Kontrolle zurückgibt.

Für die Überprüfung des Ergebnisses der Ausführung in einem anderen Chart kann man eine Funktion verwenden, die die angegebene Eigenschaft des Objektes abruft. Dabei sollte man beachten, dass solche Funktion am Ende der Warteschlange von Befehlen eines anderen Charts hinzugefügt werden und auf das Ergebnis der Ausführung warten. D.h. sie können viel Zeit in Anspruch nehmen. Dies muss man beachten, wenn man mit vielen Objekten im Chart arbeitet.

Bei der Umbenennung des graphischen Objekts werden gleichzeitig zwei Ereignisse gebildet, die durch die Funktion OnChartEvent() im Expert oder Anzeiger verarbeitet werden können:

  • Entfernung des Objekts mit dem alten Namen;
  • Erzeugung des graphischen Objekts mit dem neuen Namen.

 

Beispiel:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   OBJ_NAME   "TestObjectSetString"   // Objekt-Name
 
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- aktuelle Chart-ID und Symbol, das Flag zur Anzeige von Objektbeschreibungen
   long   chart_idChartID();
   string symbol  = ChartSymbol(chart_id);
   bool   descriptChartGetInteger(chart_idCHART_SHOW_OBJECT_DESCR); 
   
//--- Anzeige der Objektbeschreibungen im Chart festlegen
   ChartSetInteger(chart_idCHART_SHOW_OBJECT_DESCRtrue);
 
//--- Ermitteln des aktuellen Bid-Preises
   double bid=0;;
   ResetLastError();
   if(!SymbolInfoDouble(symbolSYMBOL_BIDbid))
     {
      Print("SymbolInfoDouble() fehlgeschlagen. Error "GetLastError());
      return;
     }
     
//--- Erstellen Sie das grafische Objekt "Horizontale Linie" auf dem aktuellen Geldkurs (Bid)
   if(!ObjectCreate(chart_idOBJ_NAMEOBJ_HLINE00bid))
     {
      Print("ObjectCreate() fehlgeschlagen. Error "GetLastError());
      return;
     }
//--- Objektname+"Description" in die Objektbeschreibung eingeben
   if(!ObjectSetString(chart_idOBJ_NAMEOBJPROP_TEXT"Bid: "+DoubleToString(bid, (int)SymbolInfoInteger(symbolSYMBOL_DIGITS))))
     {
      Print("ObjectSetString() fehlgeschlagen. Error "GetLastError());
      return;
     }
//--- Aktualisieren des Charts, um die Änderungen sofort widerzuspiegeln
   ChartRedraw(chart_id);
   
//--- Objektbeschreibung abrufen
   string string_var="";
   if(!ObjectGetString(chart_idOBJ_NAMEOBJPROP_TEXT0string_var))
     {
      Print("ObjectGetInteger() fehlgeschlagen. Error "GetLastError());
      return;
     }
//--- Objektnamen abrufen
   string obj_name=ObjectGetString(chart_idOBJ_NAMEOBJPROP_NAME);
   
//--- Objekttyp abrufen
   ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TYPE);
   
//--- Anzeige des Objekttyps, seines Namens und seiner Beschreibung im Journal
   PrintFormat("The %s object named \"%s\" has the description \"%s\"",EnumToString(object_type), obj_namestring_var);
   
//--- zwei Sekunden warten und das erstellte Objekt löschen
   Sleep(2000);
   ObjectDelete(chart_idOBJ_NAME);
   
//--- Gibt das anfängliche Flag zurück, um Beschreibungen von Objekten für das Chart anzuzeigen
   ChartSetInteger(chart_idCHART_SHOW_OBJECT_DESCRdescript);
   ChartRedraw(chart_id);
   /*
   Ergebnis:
   The OBJ_HLINE object named "TestObjectSetString" has the description "Bid: 0.62096"
   */
  }