ObjectSetDouble

Gibt den Wert der entsprechenden Eigenschaft des Objekts vor. Eigenschaft des Objekts muss des Typs double sein. Es gibt 2 Varianten der Funktion.

Einstellung des Wertes der Eigenschaft ohne Modifikator

bool  ObjectSetDouble(
   long                            chart_id,          // Identifikator des Charts
   string                          name,              // Name
   ENUM_OBJECT_PROPERTY_DOUBLE     prop_id,           // Eigenschaft
   double                          prop_value         // Wert
   );

Einstellung des Wertes der Eigenschaft mit Andeutung des Modifikatoren

bool  ObjectSetDouble(
   long                            chart_id,          // Identifikator des Charts 
   string                          name,              // Name
   ENUM_OBJECT_PROPERTY_DOUBLE     prop_id,           // Eigenschaft
   int                             prop_modifier,     // Modifikator
   double                          prop_value         // Wert
   );

Parameter

chart_id

[in]  Identifikator des Charts. 0 bedeutet den laufenden Chart.

name

[in]  Objektname.

prop_id

[in]  Identifikator der Eigenschaft des Objekts. Wert kann einer der Enumerationswerte ENUM_OBJECT_PROPERTY_DOUBLE sein.

prop_modifier

[in]  Modifikator der angegebenen Eigenschaft. Die meisten Eigenschaften erfordern keinen Modifikatoren.

prop_value

[in] Wert der Eigenschaft.

Rückgabewert

Die Funktion gibt true zurück nur wenn der Befehl zum Ändern der Eigenschaften von Objekten zum Chart erfolgreich gesendet wurde. Ansonsten gibt es false zurück. Für die Erhaltung der weiteren Information über den Fehler, muss die Funktion GetLastError() aufgerufen werden.

Hinweis

Die Funktion verwendet einen asynchronen Aufruf, d.h. dass die Funktion nicht auf die Ausführung des zur Warteschlange des Charts erfolgreich hinzugefügten Befehls wartet, sondern direkt die Kontrolle zurückgibt.

Für die Überprüfung des Ergebnisses der Ausführung in einem anderen Chart kann man eine Funktion verwenden, die die angegebene Eigenschaft des Objektes abruft. Dabei sollte man beachten, dass solche Funktion am Ende der Warteschlange von Befehlen eines anderen Charts hinzugefügt werden und auf das Ergebnis der Ausführung warten. D.h. sie können viel Zeit in Anspruch nehmen. Dies muss man beachten, wenn man mit vielen Objekten im Chart arbeitet.

Beispiel der Erzeugung des Objekts Fibonacci und der Hinzufuegung des neuen Levels darin

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Hilfsfelder
   double high[],low[],price1,price2;
   datetime time[],time1,time2;
//--- kopieren wir Eroeffnungspreise - 100 letzte Bars reicht es 
   int copied=CopyHigh(Symbol(),0,0,100,high);
   if(copied<=0)
     {
      Print("Nicht gelungen, Werte der Preisserie zu kopieren High");
      return;
     }
//--- kopieren wir Schlusspreise - 100 letzte Bars reicht es 
   copied=CopyLow(Symbol(),0,0,100,low);
   if(copied<=0)
     {
      Print("Misslugen, die Werte der Preisserie Low" zu kopieren);
      return;
     }
//--- kopieren wir Eroeffnungszeit für 100 letzte Bars 
   copied=CopyTime(Symbol(),0,0,100,time);
   if(copied<=0)
     {
      Print("Misslungen, die Werte der Preisserie Time zu kopieren");
      return;
     }
//--- organisieren wir Zugang zu kopierten Daten als zu einer Preisserie -  umgekehrt
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(time,true);
 
//--- Koordinaten des ersten Bezugspunktes des Fibo-Objektes 
   price1=high[70];
   time1=time[70];
//--- Koordinaten des ersten Bezugspunktes des Fiboobjektes 
   price2=low[50];
   time2=time[50];
 
//--- nun muessen wir ein Fibo-Objekt selbst erzeugen 
   bool created=ObjectCreate(0,"Fibo",OBJ_FIBO,0,time1,price1,time2,price2);
   if(created) // wenn das Objekt erfolgreich erzeugt wurde 
     {
      //--- geben wir die Farbe der Fibo-Levels vor 
      ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,Blue);
      //--- uebrigens, wieviel Fibo-Levels haben wir ?
      int levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
      Print("Fibo levels before = ",levels);
      //---geben wir in Journal=> Levelnummer:Werte Beschreibung_des Levels
      for(int i=0;i<levels;i++)
        {
         Print(i,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
               "  ",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));
        }
      //--- versuchen wir, die Anzahl der Levels um 1 zu vergroessern
      bool modified=ObjectSetInteger(0,"Fibo",OBJPROP_LEVELS,levels+1);
      if(!modified) // Misslungen, die Anzahl der Levels zu verändern
        {
         Print("Misslungen die Anzahl der Levels Fibo zu verändern, Fehler ",GetLastError());
        }
      //--- wir melden nur  
      Print("Fibo levels after = ",ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS));
      //--- geben wir den Wert für den nur erzeugten Level vor 
      bool added=ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,levels,133);
      if(added) // gelungen, Wert für Level vorzugeben 
        {
         Print("Gelungen, noch einen Level Fibo einzustellen");
         //--- nicht vergessen, Levelbeschreibung vorzugeben  
         ObjectSetString(0,"Fibo",OBJPROP_LEVELTEXT,levels,"my level");
         ChartRedraw(0);
         //--- bekommen wir aktuelle Werte der Levelsanzahl in Fibo-Objekt 
         levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
         Print("Fibo levels after adding = ",levels);
         //--- geben wir nochmals alle Levels aus - nur um uns zu versichern 
         for(int i=0;i<levels;i++)
           {
            Print(i,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
                  "  ",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));
           }
        }
      else // Misserfolg beim Versuch Levelsanzahl in einem Fibo-Objekt zu vergroessern 
        {
         Print("Misslungen, noch einen Level Fibo einzustellen. Fehler ",GetLastError());
        }
     }
  }

Sehen Sie auch

Objekttypen, Objekteigenschaften