//--- 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);
//---
}
|