MetaTrader 5 herunterladen

OBJ_TEXT

Objekt "Text".

ObjText

Hinweis

Sie können die Position des Ankerpunkts relativ zum Text aus der Enumeration ENUM_ANCHOR_POINT wählen. Sie können auch den Textwinkel durch die Eigenschaft OBJPROP_ANGLE geändert werden.

Beispiel

Das folgende Skript erstellt auf dem Chart einige Objekte "Text". Um die Eigenschaften eines grafischen Objekts zu erstellen und ändern, gibt es speziale Funktionen, die Sie "wie es ist" für Ihre eigenen Programme verwenden können.

 

//--- Beschreibung
#property description "Das Skript erstellt ein graphisches Objekt \"Text\"."
//--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup
#property script_show_inputs
//--- Eingangsparameter von Skript
input string            InpFont="Arial";         // Schrift
input int               InpFontSize=10;          // Schriftgröße
input color             InpColor=clrRed;         // Farbe
input double            InpAngle=90.0;           // Der Winkel in Grad
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_LEFT;   // Bindungsmethode
input bool              InpBack=false;           // Objekt im Hintergrund
input bool              InpSelection=false;      // Wählen zu bewegen
input bool              InpHidden=true;          // Ausblenden in der Liste der Objekten
input long              InpZOrder=0;             // Priorität auf Mausklick
//+------------------------------------------------------------------+
//| Erstellt das Objekt "Text"                                       |
//+------------------------------------------------------------------+
bool TextCreate(const long              chart_ID=0,               // ID des Charts
                const string            name="Text",              // Objektname
                const int               sub_window=0,             // Nummer des Unterfensters
                datetime                time=0,                   // Zeit des Ankerpunktes
                double                  price=0,                  // Preis des Ankerpunktes
                const string            text="Text",              // Der Text
                const string            font="Arial",             // Schrift
                const int               font_size=10,             // Schriftgröße
                const color             clr=clrRed,               // Farbe
                const double            angle=0.0,                // Text Winkel
                const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER// Bindungsmethode
                const bool              back=false,               // Im Hintergrund
                const bool              selection=false,          // Wählen um zu bewegen
                const bool              hidden=true,              // Ausgeblendet in der Objektliste
                const long              z_order=0)                // Priorität auf Mausklick
  {
//--- Die Koordinaten des Bezugspunkts angeben, wenn sie nicht gesetzt sind
   ChangeTextEmptyPoint(time,price);
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Erstellen wir das Objekt "Text"
   if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": Objekt \"Text\" konnte nicht erstellt werden! Fehlercode = ",GetLastError());
      return(false);
     }
//--- den Text setzen
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- Textschrift setzen
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- Schriftgröße setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- Text-Winkel angeben
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- die Bindungsmethode setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- Farbe setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- Im Vordergrund (false) oder Hintergrund (true) anzeigen
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- aktivieren (true) oder deaktivieren (false) Bewegung des Objekts mit dem Maus
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- Verbergen (true) oder Anzeigen (false) den Namen des graphischen Objektes in der Objektliste
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- setzen die Priorität für eine Mausklick-Ereignisse auf dem Chart
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Bewegt den Bezugspunkt                                           |
//+------------------------------------------------------------------+
bool TextMove(const long   chart_ID=0,  // ID des Charts
              const string name="Text"// Objektname
              datetime     time=0,      // Zeitkoordinate des Punktes
              double       price=0)     // Preiskoordinate des Punktes
  {
//--- Wenn die Koordinaten des Punktes nicht angegeben sind, dann verschieben wir es an den aktuellen Bar mit dem Preis Bid
   if(!time)
      time=TimeCurrent();
   if(!price)
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- bewegen den Bezugspunkt
   if(!ObjectMove(chart_ID,name,0,time,price))
     {
      Print(__FUNCTION__,
            ": der Bezugspunkt konnte nicht bewegt werden! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Ändert den Text des Objektes                                     |
//+------------------------------------------------------------------+
bool TextChange(const long   chart_ID=0,  // ID des Charts
                const string name="Text"// Objektname
                const string text="Text"// Text
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- ändern wir den Text des Objektes
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            ": Konnte nicht den Text ändern! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Löscht das Objekt "Text"                                         |
//+------------------------------------------------------------------+
bool TextDelete(const long   chart_ID=0,  // ID des Charts
                const string name="Text"// Objektname
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- das Objekt löschen
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": Objekt \"Text\" konnte nicht gelöscht werden! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Überprüft den Wert des Bezugspunkts für lehre Werte              |
//| setzt Standardwerte                                              |
//+------------------------------------------------------------------+
void ChangeTextEmptyPoint(datetime &time,double &price)
  {
//--- Wenn Punktzeit nicht angegeben ist, wird es auf dem aktuellen Bar sein
   if(!time)
      time=TimeCurrent();
//--- Wenn der Preis des Punktes nicht angegeben wird, dann wird es einen Wert von Bid haben
   if(!price)
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date[]; // Array zu speichern Daten von sichtbaren Bars
   double   low[];  // Array zu speichern Low-Priese von sichtbaren Bars
   double   high[]; // Array zu speichern High-Preise von sichtbaren Bars
//--- Die Anzahl der sichtbaren Bars im Chart-Fenster
   int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- Speicher reservieren
   ArrayResize(date,bars);
   ArrayResize(low,bars);
   ArrayResize(high,bars);
//--- Füllen die Anordnung von Daten
   ResetLastError();
   if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
     {
      Print("Kann nicht den Wert der Zeit kopieren! Fehlercode = ",GetLastError());
      return;
     }
//--- Füllen die Anordnung von Low-Preise
   if(CopyLow(Symbol(),Period(),0,bars,low)==-1)
     {
      Print("Kann nicht den Wert der Low-Preise kopieren! Fehlercode = ",GetLastError());
      return;
     }
//--- Füllen die Anordnung von High-Preise
   if(CopyHigh(Symbol(),Period(),0,bars,high)==-1)
     {
      Print("Kann nicht den Wert der High-Preise kopieren! Fehlercode = ",GetLastError());
      return;
     }
//--- Definieren wir, wie oft die Inschriften zu Tun
   int scale=(int)ChartGetInteger(0,CHART_SCALE);
//--- Schritt definieren
   int step=1;
   switch(scale)
     {
      case 0:
         step=12;
         break;
      case 1:
         step=6;
         break;
      case 2:
         step=4;
         break;
      case 3:
         step=2;
         break;
     }
//--- Text für die Werte von High und Low der Baren erstellen (mit Zwischenräume)
   for(int i=0;i<bars;i+=step)
     {
      //--- Texte erstellen
      if(!TextCreate(0,"TextHigh_"+(string)i,0,date[i],high[i],DoubleToString(high[i],5),InpFont,InpFontSize,
         InpColor,InpAngle,InpAnchor,InpBack,InpSelection,InpHidden,InpZOrder))
        {
         return;
        }
      if(!TextCreate(0,"TextLow_"+(string)i,0,date[i],low[i],DoubleToString(low[i],5),InpFont,InpFontSize,
         InpColor,-InpAngle,InpAnchor,InpBack,InpSelection,InpHidden,InpZOrder))
        {
         return;
        }
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- den Chart neu zeichnen
      ChartRedraw();
      // Verzögerung 0.05 Sekunden
      Sleep(50);
     }
//--- Halb-Sekunden-Verzögerung
   Sleep(500);
//--- Texte löschen
   for(int i=0;i<bars;i+=step)
     {
      if(!TextDelete(0,"TextHigh_"+(string)i))
         return;
      if(!TextDelete(0,"TextLow_"+(string)i))
         return;
      //--- den Chart neu zeichnen
      ChartRedraw();
      // Verzögerung 0.05 Sekunden
      Sleep(50);
     }
//---
  }