//--- Beschreibung #property description "Das Skript erstellt eine Schaltfläche auf dem Chart." //--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup #property script_show_inputs //--- Eingangsparameter von Skript input string InpName="Button"; // Schaltflächenname input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Winkel des Charts zu binden input string InpFont="Arial"; // Schrift input int InpFontSize=14; // Schriftgröße input color InpColor=clrBlack; // Textfarbe input color InpBackColor=C'236,233,216'; // Hintergrundfarbe input color InpBorderColor=clrNONE; // Rahmenfarbe input bool InpState=false; // Gedrückt/Ungedrückt input bool InpBack=false; // Objekt im Hintergrund input bool InpSelection=false; // Wählen zu bewegen input bool InpHidden=true; // Ausgeblendet in der Liste der Objekte input long InpZOrder=0; // Priorität auf Mausklick //+------------------------------------------------------------------+ //| Erstellt eine Taste | //+------------------------------------------------------------------+ bool ButtonCreate(const long chart_ID=0, // ID des Charts const string name="Button", // Schaltflächenname const int sub_window=0, // Nummer des Unterfensters const int x=0, // X-Koordinate const int y=0, // Y-Koordinate const int width=50, // Breite der Schaltfläche const int height=18, // Höhe der Schaltfläche const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // Winkel des Charts zu binden const string text="Button", // Text const string font="Arial", // Schrift const int font_size=10, // Schriftgröße const color clr=clrBlack, // Textfarbe const color back_clr=C'236,233,216', // Hintergrundfarbe const color border_clr=clrNONE, // Rahmenfarbe const bool state=false, // Gedrückt/Ungedrückt const bool back=false, // Im Hintergrund const bool selection=false, // Auswählen um zu bewegen const bool hidden=true, // Ausgeblendet in der Objektliste const long z_order=0) // Priorität auf Mausklick { //--- Setzen den Wert des Fehlers zurück ResetLastError(); //--- eine Schaltfläche erstellen if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0)) { Print(__FUNCTION__, ": Konnte nicht Schaltfläche erstellen! Fehlercode = ",GetLastError()); return(false); } //--- Schaltflächenkoordinaten setzen ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- Schaltflächengröß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 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); //--- Textfarbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- Hintergrundfarbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); //--- Rahmenfarbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); //--- Im Vordergrund (false) oder Hintergrund (true) anzeigen ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- set button state ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); //--- aktivieren (true) oder deaktivieren (false) Bewegung der Schaltfläche 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 die Schaltfläche | //+------------------------------------------------------------------+ bool ButtonMove(const long chart_ID=0, // ID des Charts const string name="Button", // Name der Schaltfläche const int x=0, // X Koordinate const int y=0) // Y Koordinate { //--- Setzen den Wert des Fehlers zurück ResetLastError(); //--- Schaltfläche bewegen if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x)) { Print(__FUNCTION__, ": Kann nicht X-Koordinate der Schaltfläche bewegen! Fehlercode = ",GetLastError()); return(false); } if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y)) { Print(__FUNCTION__, ": Kann nicht Y-Koordinate der Schaltfläche bewegen! Fehlercode = ",GetLastError()); return(false); } //--- die erfolgreiche Umsetzung return(true); } //+------------------------------------------------------------------+ //| Ändert die Größe einer Schaltfläche | //+------------------------------------------------------------------+ bool ButtonChangeSize(const long chart_ID=0, // ID des Charts const string name="Button", // Name der Schaltfläche const int width=50, // Breite der Schaltfläche const int height=18) // Höhe der Schaltfläche { //--- Setzen den Wert des Fehlers zurück ResetLastError(); //--- Größe der Schaltfläche ändern if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width)) { Print(__FUNCTION__, ": Konnte nicht die Breite der Schaltfläche ändern! Fehlercode = ",GetLastError()); return(false); } if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height)) { Print(__FUNCTION__, ": Konnte nicht die Höhe der Schaltfläche ändern! Fehlercode = ",GetLastError()); return(false); } //--- die erfolgreiche Umsetzung return(true); } //+------------------------------------------------------------------+ //| Ändert Winkel des Charts die Taste zu binden | //+------------------------------------------------------------------+ bool ButtonChangeCorner(const long chart_ID=0, // ID des Charts const string name="Button", // Name der Schaltfläche const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER) // Winkel des Charts zu binden { //--- Setzen den Wert des Fehlers zurück ResetLastError(); //--- Winkel der Bindung ändern if(!ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner)) { Print(__FUNCTION__, ": Kann den Winkel der Bindung nicht ändern! Fehlercode = ",GetLastError()); return(false); } //--- die erfolgreiche Umsetzung return(true); } //+------------------------------------------------------------------+ //| Ändert Text der Schaltfläche | //+------------------------------------------------------------------+ bool ButtonTextChange(const long chart_ID=0, // ID des Chart const string name="Button", // Name der Schaltfläche 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 die Schaltfläche | //+------------------------------------------------------------------+ bool ButtonDelete(const long chart_ID=0, // ID des Charts const string name="Button") // Name der Schaltfläche { //--- Setzen den Wert des Fehlers zurück ResetLastError(); //--- die Schaltfläche löschen if(!ObjectDelete(chart_ID,name)) { Print(__FUNCTION__, ": Könnte nicht die Schaltfläche löschen! Fehlercode = ",GetLastError()); return(false); ;} //--- die erfolgreiche Umsetzung return(true); } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- 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; } //--- Schritt für Änderung der Schaltflächengröße definieren int x_step=(int)x_distance/32; int y_step=(int)y_distance/32; //--- Schaltflächenkoordinaten und ihre Größe setzen int x=(int)x_distance/32; int y=(int)y_distance/32; int x_size=(int)x_distance*15/16; int y_size=(int)y_distance*15/16; //--- eine Schaltfläche erstellen if(!ButtonCreate(0,InpName,0,x,y,x_size,y_size,InpCorner,"Press",InpFont,InpFontSize, InpColor,InpBackColor,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder)) { return; ;} //--- den Chart neu zeichnen ChartRedraw(); //--- Verkleinern die Schaltfläche im Zyklus int i=0; while(i<13) { //--- Halb-Sekunden-Verzögerung Sleep(500); //--- Die Schaltfläche gedrückt setzen ObjectSetInteger(0,InpName,OBJPROP_STATE,true); //--- Die Grafik neu zeichnen und 0,2 Sekunden warten ChartRedraw(); Sleep(200); //--- die Position und Größe der Schaltfläche neu definieren x+=x_step; y+=y_step; x_size-=x_step*2; y_size-=y_step*2; //--- Schaltfläche verkleinern ButtonMove(0,InpName,x,y); ButtonChangeSize(0,InpName,x_size,y_size); //--- Schaltfläche im ungedrückt Zustand setzen ObjectSetInteger(0,InpName,OBJPROP_STATE,false); //--- den Chart neu zeichnen ChartRedraw(); //--- Überprüfen die Fakten von Zwangsabschaltung der Skript if(IsStopped()) return; //--- Zykluszähler erhöhen i++; } //--- Halb-Sekunden-Verzögerung Sleep(500); //--- die Schaltfläche löschen ButtonDelete(0,InpName); ChartRedraw(); //--- 1 Sekunde warten Sleep(1000); //--- } |