ObjectSetDouble

この関数は、対応するオブジェクトプロパティの値を設定します。オブジェクトプロパティはdouble型である必要があります。この関数には2つのバリアントがあります。

修飾子なしのプロパティ値の設定。

bool  ObjectSetDouble(
   long     chart_id,        // chart identifier
   string   object_name,     // object name
   int      prop_id,         // property
   double   prop_value       // value
   );

修飾子を示すプロパティ値を設定します。

bool  ObjectSetDouble(
   long     chart_id,        // chart identifier
   string   object_name,     // object name
   int      prop_id,         // property
   int      prop_modifier,   // modifier
   double   prop_value       // value
   );

パラメーター

chart_id

[in]チャート識別子。0は現在のチャートを意味します。

object_name

[入力]オブジェクトの名前。

prop_id

[入力]オブジェクトプロパティのID。値は、ENUM_OBJECT_PROPERTY_DOUBLE列挙の値のいずれかです。

prop_modifier

[in]指定されたプロパティの修飾子。これは、フィボナッチツールとグラフィカルオブジェクトAndrewの熊手でのレベルの数を示します。レベルの数え方はゼロから始まります。

prop_value

[入力]プロパティの値。

戻り値

この関数は、グラフィカルオブジェクトのプロパティを変更するコマンドがチャートに正常に送信された場合にのみtrueを返します。それ以外の場合は、falseを返します。エラーの詳細については、GetLastError()を呼び出してください

注意

現在のチャートでこの関数を使用すると、このチャートに直接アクセスし、結果がすぐに返されます。別のチャートにオブジェクトプロパティを設定するために、非同期呼び出しが使用されます。非同期呼び出しとは、別のチャートのキューに追加されたコマンドの実行を関数が待機しないことを意味します。代わりに、すぐに制御を返します。

現在のチャート以外のチャートでコマンドを実行した結果を確認するには、指定したオブジェクトプロパティを確認する関数を使用できます。ただし、そのような関数はそのチャートのキューの最後に追加され、実行結果を待つため、時間がかかる場合があることに注意してください。チャート上の多数のオブジェクトを操作する場合、この機能を考慮する必要があります。

フィボナッチオブジェクトを作成し、新しいレベルを追加する例

//| Script program start function                                    |
//+——————————————————————+
void OnStart()
  {
//— auxiliary arrays
   double high[],low[],price1,price2;
   datetime time[],time1,time2;
//— Copy the open prices – 100 latest bars are enough
   int copied=CopyHigh(Symbol(),0,0,100,high);
   if(copied<=0)
     {
      Print(“Failed to copy the values of the High price series”);
      return;
     }
//— Copy the close price – 100 latest bars are enough
   copied=CopyLow(Symbol(),0,0,100,low);
   if(copied<=0)
     {
      Print(“Failed to copy the values of the Low price series”);
      return;
     }
//— Copy the open time for the last 100 bars
   copied=CopyTime(Symbol(),0,0,100,time);
   if(copied<=0)
     {
      Print(“Failed to copy the values of the price series of Time”);
      return;
     }
//— Organize access to the copied data as to timeseries – backwards
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(time,true);
 
//— Coordinates of the first anchor point of the Fibo object
   price1=high[70];
   time1=time[70];
//— Coordinates of the second anchor point of the Fibo object
   price2=low[50];
   time2=time[50];
 
//— Time to create the Fibo object
   bool created=ObjectCreate(0,“Fibo”,OBJ_FIBO,0,time1,price1,time2,price2);
   if(created) // If the object is created successfully
     {
      //— set the color of Fibo levels
      ObjectSetInteger(0,“Fibo”,OBJPROP_LEVELCOLOR,Blue);
      //— by the way, how much Fibo levels do we have?
      int levels=ObjectGetInteger(0,“Fibo”,OBJPROP_LEVELS);
      Print(“Fibo levels before = “,levels);
      //—output to the Journal => number of level:value level_desription
      for(int i=0;i<levels;i++)
        {
         Print(i,“: “,ObjectGetDouble(0,“Fibo”,OBJPROP_LEVELVALUE,i),
               ”  “,ObjectGetString(0,“Fibo”,OBJPROP_LEVELTEXT,i));
        }
      //— Try to increase the number of levels per unit
      bool modified=ObjectSetInteger(0,“Fibo”,OBJPROP_LEVELS,levels+1);
      if(!modified) // failed to change the number of levels
        {
         Print(“Failed to change the number of levels of Fibo, error “,GetLastError());
        }
      //— just inform
      Print(“Fibo levels after = “,ObjectGetInteger(0,“Fibo”,OBJPROP_LEVELS));
      //— set a value for a newly created level
      bool added=ObjectSetDouble(0,“Fibo”,OBJPROP_LEVELVALUE,levels,133);
      if(added) // managed to set a value for the level
        {
         Print(“Successfully set one more Fibo level”);
         //— Also do not forget to set the level description
         ObjectSetString(0,“Fibo”,OBJPROP_LEVELTEXT,levels,“my level”);
         ChartRedraw(0);
         //— Get the actual value of the number of levels in the Fibo object
         levels=ObjectGetInteger(0,“Fibo”,OBJPROP_LEVELS);
         Print(“Fibo levels after adding = “,levels);
         //— once again output all levels – just to make sure
         for(int i=0;i<levels;i++)
           {
            Print(i,“:”,ObjectGetDouble(0,“Fibo”,OBJPROP_LEVELVALUE,i),
                  ”  “,ObjectGetString(0,“Fibo”,OBJPROP_LEVELTEXT,i));
           }
        }
      else // Fails if you try to increase the number of levels in the Fibo object
        {
         Print(“Failed to set one more Fibo level. Error “,GetLastError());
        }
     }
  }

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">