ObjectSetDouble

この関数は、対応するオブジェクトプロパティの値を設定します。オブジェクトプロパティは double 型でなければなりません。この関数には 2 つのバージョンがあります。

修飾語なしでのプロパティ値の設定

bool  ObjectSetDouble(
  long                            chart_id,          // チャート識別子
  string                          name,              // オブジェクト名
  ENUM_OBJECT_PROPERTY_DOUBLE    prop_id,          // プロパティ
  double                          prop_value         // 値
  );

修飾子を使用してのプロパティ値の設定

bool  ObjectSetDouble(
  long                            chart_id,          // チャート識別子
  string                          name,              // オブジェクト名
  ENUM_OBJECT_PROPERTY_DOUBLE    prop_id,          // プロパティ
  int                            prop_modifier,    // 修飾子
  double                          prop_value         // 値
  );

パラメータ

chart_id

[in]  チャート識別子( 0 は現在のチャート)

name

[in]  オブジェクト名

prop_id

[in]  オブジェクトプロパティ識別子。値は ENUM_OBJECT_PROPERTY_DOUBLE 列挙のいずれかです。

prop_modifier

[in]  指定されたプロパティの修飾子。修飾子はフィボナッチツールのレべル数及びグラフィックオブジェクトのアンドリューズピッチフォークを示します。 レベルの番号付けは0から始まります。

prop_value

[in]  プロパティ値

戻り値

グラフィックオブジェクトのプロパティ変更コマンドが正常にチャートに送信された場合にのみ true、その他の場合は false。エラーの詳細を読むには GetLastError() を呼びます。

注意事項

この関数は非同期呼び出しを使用します。つまり、この関数は指定されたチャートのキューに追加されたコマンドの実行を待機せずに、代わりに、すぐに制御を返します。

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

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

//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 補助配列
  double high[],low[],price1,price2;
  datetime time[],time1,time2;
//--- 始値のコピー - 最新の100バーで充分
  int copied=CopyHigh(Symbol(),0,0,100,high);
  if(copied<=0)
    {
    Print("Failed to copy the values of the High price series");
    return;
    }
//--- 終値のコピー - 最新の100バーで充分
  copied=CopyLow(Symbol(),0,0,100,low);
  if(copied<=0)
    {
    Print("Failed to copy the values of the Low price series");
    return;
    }
//--- 最後の100バーの始値を複製する
  copied=CopyTime(Symbol(),0,0,100,time);
  if(copied<=0)
    {
    Print("Failed to copy the values of the price series of Time");
    return;
    }
//--- 複製されたデータへのアクセスを時系列のように(反対に)整理する
  ArraySetAsSeries(high,true);
  ArraySetAsSeries(low,true);
  ArraySetAsSeries(time,true);
 
//--- フィボナッチオブジェクトの初めのアンカーポイントの座標
  price1=high[70];
  time1=time[70];
//--- フィボナッチオブジェクトの2 番目のアンカーポイントの座標
  price2=low[50];
  time2=time[50];
 
//--- フィボナッチオブジェクトを作成する
  bool created=ObjectCreate(0,"Fibo",OBJ_FIBO,0,time1,price1,time2,price2);
  if(created) // オブジェクト作成が成功した場合
    {
    //--- フィボナッチレベルの色を設定する
    ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,Blue);
    //--- フィボナッチレベルの数を見つける
    int levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
    Print("Fibo levels before = ",levels);
    //---操作ログに出力 => 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));
       }
    //--- 単位当たりのレベルの数の増加を試みる
    bool modified=ObjectSetInteger(0,"Fibo",OBJPROP_LEVELS,levels+1);
    if(!modified) // レベル数の変更に失敗
       {
        Print("Failed to change the number of levels of Fibo, error ",GetLastError());
       }
    //--- 情報のみ
    Print("Fibo levels after = ",ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS));
    //--- 新しく作成したレベルの値を設定する
    bool added=ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,levels,133);
    if(added) // レベルに値を設定することができた
       {
        Print("Successfully set one more Fibo level");
        //--- レベル説明を忘れずに設定
        ObjectSetString(0,"Fibo",OBJPROP_LEVELTEXT,levels,"my level");
        ChartRedraw(0);
        //--- フィボナッチオブジェクトの実際のレベル数を取得する
        levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
        Print("Fibo levels after adding = ",levels);
        //--- 確認のためにもう一度全レベルを出力する
        for(int i=0;i<levels;i++)
          {
          Print(i,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
                "  ",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));
          }
       }
    else // フィボナッチオブジェクトのレベル数を増加しようとすると失敗する
       {
        Print("Failed to set one more Fibo level. Error ",GetLastError());
       }
    }
 }

参照

オブジェクトの型オブジェクトプロパティ