OBJ_CHART

Objekt "Chart".

ObjChart

Hinweis

Koordinaten des Ankerpunkts werden in Pixeln angegeben. Sie können den Winkel des Bindungspunktes durch Enumeration ENUM_BASE_CORNER auswählen.

Für das Objekt "Chart" können Sie ein Symbol, Ausmaß und Periode Zeit, als auch aktivieren / deaktivieren Sie den Anzeigemodus der Skalen Preise und Termine auszuwählen.

Beispiel

Das folgende Skript erstellt und bewegt auf dem Chart Objekt "Chart". 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 das Objekt \"Chart\"."
//--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup
#property script_show_inputs
//--- Eingangsparameter von Skript
input string           InpName="Chart";             // Objektname
input string           InpSymbol="EURUSD";          // Symbol
input ENUM_TIMEFRAMES  InpPeriod=PERIOD_H1;         // Periode
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Winkel des Charts um Objekt zu binden
input int              InpScale=2;                  // Skala
input bool             InpDateScale=true;           // Anzeige der Zeitskala
input bool             InpPriceScale=true;          // Anzeige der Preisskala
input color            InpColor=clrRed;             // Rahmenfarbe bei dem Wählen
input ENUM_LINE_STYLE  InpStyle=STYLE_DASHDOTDOT;   // Linienstil bei dem Wählen
input int              InpPointWidth=1;             // Größe des Punktes für Bewegung
input bool             InpBack=false;               // Objekt im Hintergrund
input bool             InpSelection=true;           // Wählen um zu bewegen
input bool             InpHidden=true;              // Ausgeblendet in der Liste der Objekte
input long             InpZOrder=0;                 // Priorität auf Mausklick
//+------------------------------------------------------------------+
//| Erstellt das Objekt "Chart"                                      |
//+------------------------------------------------------------------+
bool ObjectChartCreate(const long              chart_ID=0,               // ID des Charts
                       const string            name="Chart",             // Objektname
                       const int               sub_window=0,             // Nummer des Unterfensters
                       const string            symbol="EURUSD",          // Symbol
                       const ENUM_TIMEFRAMES   period=PERIOD_H1,         // Periode
                       const int               x=0,                      // X-Koordinate
                       const int               y=0,                      // Y-Koordinate
                       const int               width=300,                // Breite
                       const int               height=200,               // Höhe
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// Winkel des Charts zu binden
                       const int               scale=2,                  // Skala
                       const bool              date_scale=true,          // Anzeige der Zeitskala
                       const bool              price_scale=true,         // Anzeige der Preisskala
                       const color             clr=clrRed,               // Rahmenfarbe bei der Markerung
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // Linienstil bei der Markierung
                       const int               point_width=1,            // Größe des Punktes
                       const bool              back=false,               // Im Hintergrund
                       const bool              selection=false,          // Markieren zu bewegen
                       const bool              hidden=true,              // Ausgeblendet in der Liste der Objekten
                       const long              z_order=0)                // Priorität für Mausklick
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Erstellen wir das Objekt "Chart"
   if(!ObjectCreate(chart_ID,name,OBJ_CHART,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": Objekt \"Chart\" konnte nicht erstellt werden! Fehlercode = ",GetLastError());
      return(false);
     }
//--- Objektkoordinaten angeben
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- Objektgröße setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- wählen die Ecke des Charts, relativ zu der die Punktkoordinaten eingegeben werden
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- den Symbol setzen
   ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol);
//--- den Zeitraum setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period);
//--- die Skala setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_CHART_SCALE,scale);
//--- die Zeitskala anzeigen (true) oder verbergen (false)
   ObjectSetInteger(chart_ID,name,OBJPROP_DATE_SCALE,date_scale);
//--- die Preisskala anzeigen (true) oder verbergen (false)
   ObjectSetInteger(chart_ID,name,OBJPROP_PRICE_SCALE,price_scale);
//--- Farbe des Rahmens bei der Markierung des Objektes
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- Linienstil des Rahmens bei der Markierung des Objektes
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- die Größe des Punktes, den benutzt werden kann, um ein Objekt zu bewegen
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- Im Vordergrund (false) oder Hintergrund (true) anzeigen
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Aktivieren (true) oder deaktivieren (false) Mausbewegung Modus
   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);
  }
//+------------------------------------------------------------------+
//| Setzt den Symbol und den Zeitraum des Objekts "Chart"            |
//+------------------------------------------------------------------+
bool ObjectChartSetSymbolAndPeriod(const long            chart_ID=0,       // ID des Charts (nicht des Objektes)
                                   const string          name="Chart",     // Objektname
                                   const string          symbol="EURUSD",  // Symbol
                                   const ENUM_TIMEFRAMES period=PERIOD_H1// Zeitrahmen
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Jetzt setzen wir den Symbol und den Zeitraum des Objekts "Chart"
   if(!ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol))
     {
      Print(__FUNCTION__,
            ": Konnte nicht den Symbol für Objekt \"Chart\" erstellen! Fehlercode = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period))
     {
      Print(__FUNCTION__,
            ": Konnte nicht den Zeitraum für Objekt \"Chart\" erstellen! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Bewegt das Objekt "Chart"                                        |
//+------------------------------------------------------------------+
bool ObjectChartMove(const long   chart_ID=0,   // ID des Charts (nicht des Objektes)
                     const string name="Chart"// Objektname
                     const int    x=0,          // X-Koordinate
                     const int    y=0)          // Y-Koordinate
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Objekt bewegen
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": Kann nicht X-Koordinate des Objektes \"Chart\" bewegen! Fehlercode = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": Kann nicht Y-Koordinate des Objektes \"Chart\" bewegen! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Ändert die Größe des Objektes "Chart"                            |
//+------------------------------------------------------------------+
bool ObjectChartChangeSize(const long   chart_ID=0,   // ID des Charts (nicht des Objektes)
                           const string name="Chart"// Objektname
                           const int    width=300,    // Breite
                           const int    height=200)   // Höhe
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Objektgröße ändern
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": Konnte nicht die Breite des Objekts \"Chart\" ändern! Fehlercode = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": Konnte nicht die Höhe des Objekts \"Chart\" ändern! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Gibt ID des Objektes "Chart" zurück                              |
//+------------------------------------------------------------------+
long ObjectChartGetID(const long   chart_ID=0,   // ID des Charts (nicht des Objekts)
                      const string name="Chart"// Objektname
  {
//--- eine Variable vorbereiten um ID des Objekts "Chart" zu erhalten
   long id=-1;
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- ID erhalten
   if(!ObjectGetInteger(chart_ID,name,OBJPROP_CHART_ID,0,id))
     {
      Print(__FUNCTION__,
            ": Konnte nicht ID des Objekts \"Chart\" erhalten! Fehlercode = ",GetLastError());
     }
//--- Ergebnis zurückgeben
   return(id);
 ;}
//+------------------------------------------------------------------+
//| Löscht das Objekt "Chart"                                        |
//+------------------------------------------------------------------+
bool ObjectChartDelete(const long   chart_ID=0,   // ID des Charts (nicht des Objektes)
                       const string name="Chart"// Objektname
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Objekt löschen
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": Objekt \"Chart\" konnte nicht gelöscht werden! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Die Anzahl der Symbolen in "Market Watch" erhalten
   int  symbols=SymbolsTotal(true);
//--- Bestimmen wir, ob es ein Symbol mit dem angegebenen Namen in der Liste der Symbole gibt
   bool exist=false;
   for(int i=0;i<symbols;i++)
      if(InpSymbol==SymbolName(i,true))
        {
         exist=true;
         break;
        }
   if(!exist)
     {
      Print("Fehler! Dieses Symbol ",InpSymbol," ist nicht in \"Market Watch\" verfügbar!");
      return;
    ;}
//--- Prüfung der Richtigkeit der Eingabeparameter
   if(InpScale<0 || InpScale>5)
     {
      Print("Fehler! Ungültige Eingabeparameter! ");
      return;
     }
 
//--- Größe des Chartfensters
   long x_distance;
   long y_distance;
//--- Größe des Chartfensters definieren
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Konnte nicht Breite des Charts bekommen! Fehlercode = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Konnte nicht Höhe des Charts bekommen! Fehlercode = ",GetLastError());
      return;
     }
//--- Objektkoordinaten und seine Größe setzen
   int x=(int)x_distance/16;
   int y=(int)y_distance/16;
   int x_size=(int)x_distance*7/16;
   int y_size=(int)y_distance*7/16;
//--- Erstellen wir das Objekt "Chart"
   if(!ObjectChartCreate(0,InpName,0,InpSymbol,InpPeriod,x,y,x_size,y_size,InpCorner,InpScale,InpDateScale,
      InpPriceScale,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- den Chart neu zeichnen und 1 Sekunde warten
   ChartRedraw();
   Sleep(1000);
//--- Dehnen wir das Objekt "Chart"
   int steps=(int)MathMin(x_distance*7/16,y_distance*7/16);
   for(int i=0;i<steps;i++)
     {
      //--- Größe ändern
      x_size+=1;
      y_size+=1;
      if(!ObjectChartChangeSize(0,InpName,x_size,y_size))
         return;
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- Die Grafik neu zeichnen und 0,01 Sekunden warten
      ChartRedraw();
      Sleep(10);
     }
//--- Halb-Sekunden-Verzögerung
   Sleep(500);
//--- Zeitrahmen des Charts ändern
   if(!ObjectChartSetSymbolAndPeriod(0,InpName,InpSymbol,PERIOD_M1))
      return;
   ChartRedraw();
//--- Verzögerung von 3 Sekunden
   Sleep(3000);
//--- das Objekt löschen
   ObjectChartDelete(0,InpName);
   ChartRedraw();
//--- 1 Sekunde warten
   Sleep(1000);
//---
  }