ObjectSetString

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

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

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

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

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

パラメータ

chart_id

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

name

[in]  オブジェクト名

prop_id

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

prop_modifier

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

prop_value

[in]  プロパティ値

戻り値

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

注意事項

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

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

オブジェクトの名称が変更された場合、2 つのイベントが同時に形成されます。これらのイベントはエキスパートアドバイザーまたは指標の OnChartEvent() 関数によって処理されます。

  • 古い名称のオブジェクトの削除イベント
  • 新しい名称のオブジェクトの作成イベント

 

例:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link     "https://www.mql5.com"
#property version   "1.00"
 
#define   OBJ_NAME   "TestObjectSetString"   // オブジェクト名
 
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 現在のチャートIDとシンボル、オブジェクト説明表示フラグ
  long   chart_id= ChartID();
  string symbol  = ChartSymbol(chart_id);
  bool   descript= ChartGetInteger(chart_id, CHART_SHOW_OBJECT_DESCR);
 
//--- チャート上のオブジェクト説明表示を設定する
  ChartSetInteger(chart_id, CHART_SHOW_OBJECT_DESCR, true);
 
//--- 現在のBid値を取得する
  double bid=0;;
  ResetLastError();
  if(!SymbolInfoDouble(symbol, SYMBOL_BID, bid))
    {
    Print("SymbolInfoDouble() failed. Error ", GetLastError());
    return;
    }
   
//--- 現在のBid価格に「水平線」グラフィックオブジェクトを作成する
  if(!ObjectCreate(chart_id, OBJ_NAME, OBJ_HLINE, 0, 0, bid))
    {
    Print("ObjectCreate() failed. Error ", GetLastError());
    return;
    }
//--- オブジェクト説明にオブジェクト名+「Description」を入力する
  if(!ObjectSetString(chart_id, OBJ_NAME, OBJPROP_TEXT, "Bid: "+DoubleToString(bid, (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS))))
    {
    Print("ObjectSetString() failed. Error ", GetLastError());
    return;
    }
//--- チャートを即座に更新して変更を表示する
  ChartRedraw(chart_id);
 
//--- オブジェクトの説明を取得する
  string string_var="";
  if(!ObjectGetString(chart_id, OBJ_NAME, OBJPROP_TEXT, 0, string_var))
    {
    Print("ObjectGetInteger() failed. Error ", GetLastError());
    return;
    }
//--- オブジェクト名を取得する
  string obj_name=ObjectGetString(chart_id, OBJ_NAME, OBJPROP_NAME);
 
//--- オブジェクトの型を取得する
  ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(chart_id, OBJ_NAME, OBJPROP_TYPE);
 
//--- オブジェクトの型、名前、説明を操作ログに表示する
  PrintFormat("The %s object named \"%s\" has the description \"%s\"",EnumToString(object_type), obj_name, string_var);
 
//--- 2秒待ってから、作成されたオブジェクトを削除する
  Sleep(2000);
  ObjectDelete(chart_id, OBJ_NAME);
 
//--- チャート上のオブジェクト説明表示の初期フラグを返す
  ChartSetInteger(chart_id, CHART_SHOW_OBJECT_DESCR, descript);
  ChartRedraw(chart_id);
  /*
   結果:
  The OBJ_HLINE object named "TestObjectSetString" has the description "Bid: 0.62096"
  */
 }