MetaTrader 5 herunterladen

OBJ_ARROW_SELL

Zeichen "Sell".

ObjArrowSell

Beispiel

Das folgende Skript erstellt und bewegt auf dem Chart Zeichen "Sell". 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 "Der Skript zieht Zeichen \"Sell\" im Chartfenster."
//--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup
#property script_show_inputs
//--- Eingangsparameter von Skript
input color InpColor=C'225,68,29'// Farbe der Zeichen
//+------------------------------------------------------------------+
//| Erstellt das Zeichen "Sell"                                    |
//+------------------------------------------------------------------+
bool ArrowSellCreate(const long            chart_ID=0,        // ID des Charts
                     const string          name="ArrowSell",  // Name der Zeichen
                     const int             sub_window=0,      // Nummer des Unterfensters
               datetime              time=0,            // Zeit des Bezugspunkts
               double                price=0,           // Preis des Bezugspunkts
                     const color           clr=C'225,68,29',  // Farbe des Zeichens
                     const ENUM_LINE_STYLE style=STYLE_SOLID// Linienstil (zu wählen)
                    const int             width=1,           // Liniengröße (zu wählen)
                  const bool            back=false,        // In der Hintergrund
                     const bool            selection=false,   // Wählen für Bewegung
                const bool            hidden=true,       // Verborgen in der Liste der Objekten
                    const long            z_order=0)         // Priorität für Mausklick
  {
//--- Die Koordinaten des Bezugspunkts angeben, wenn sie nicht gesetzt sind
   ChangeArrowEmptyPoint(time,price);
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Zeichen erstellen
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_SELL,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": Kann nicht Zeichen \"Sell\ erstellen"! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- Die Farbe des Zeichens setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- Linienstil für Markierung setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- Liniengröße für Markierung setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,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);
 ;}
//+------------------------------------------------------------------+
//| Bewegt den Bezugspunkt |
//+------------------------------------------------------------------+
bool ArrowSellMove(const long   chart_ID=0,       // ID des Charts
                   const string name="ArrowSell"// Name des Objekts
                   datetime     time=0,           // Zeitkoordinate des Bezugspunkts
                   double       price=0)          // Preiskoordinate des Bezugspunkts
  {
//--- 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);
 ;}
//+------------------------------------------------------------------+
//| Löscht das Zeichen "Sell"                                    |
//+------------------------------------------------------------------+
bool ArrowSellDelete(const long   chart_ID=0,       // ID des Charts
                     const string name="ArrowSell"// Name des Zeichens
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Zeichen löschen
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": Kann nicht Zeichen \"Sell\ löschen"! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Überprüft den Wert des Bezugspunkts für lehre Werte |
//| setzt Standardwerte |
//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(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;
    ;}
//--- Erstellen Icons "Sell" auf High für jedes sichtbare Bar
   for(int i=0;i<bars;i++)
     {
      if(!ArrowSellCreate(0,"ArrowSell_"+(string)i,0,date[i],high[i],InpColor))
         return;
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- den Chart neu zeichnen
      ChartRedraw();
      // Verzögerung 0.05 Sekunden
      Sleep(50);
    ;}
//--- Bewegen Icons "Sell" auf Low für jedes sichtbare Bar
   for(int i=0;i<bars;i++)
     {
      if(!ArrowSellMove(0,"ArrowSell_"+(string)i,date[i],low[i]))
         return;
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- den Chart neu zeichnen
      ChartRedraw();
      // Verzögerung 0.05 Sekunden
      Sleep(50);
    ;}
//--- Zeichen "Sell" löschen
   for(int i=0;i<bars;i++)
     {
      if(!ArrowSellDelete(0,"ArrowSell_"+(string)i))
         return;
      //--- den Chart neu zeichnen
      ChartRedraw();
      // Verzögerung 0.05 Sekunden
      Sleep(50);
    ;}
//---
 ;}