
MQL4MQL5 オブジェクト
ObjectCreate()
- できること
- チャートにライン・矢印・テキストなどのオブジェクトを作る
- 対応
- MQL4・MQL5
ObjectCreate() とは
チャートに水平線・トレンドライン・矢印・テキスト・ラベル・ボタンなどのオブジェクトを作る関数です。作ったあと、ObjectSetInteger() などで色や位置を設定します。
ObjectCreate() の書式と引数
bool ObjectCreate(
long chart_id,
string name,
ENUM_OBJECT type,
int sub_window,
datetime time1,
double price1,
...
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
chart_id | long | 必須 | チャートの ID。今のチャートなら 0。 |
name | string | 必須 | オブジェクトの名前(チャート内で重複しないもの)。 |
type | ENUM_OBJECT | 必須 | 種類。OBJ_HLINE(水平線)、OBJ_VLINE(垂直線)、OBJ_TREND(トレンドライン)、OBJ_ARROW(矢印)、OBJ_TEXT(テキスト)、OBJ_LABEL(画面に固定のラベル)、OBJ_BUTTON、OBJ_RECTANGLE など。 |
sub_window | int | 必須 | 表示するウィンドウの番号。メインのチャートは 0。 |
time1 | datetime | 必須 | 1点目の時刻。 |
price1 | double | 必須 | 1点目の価格。 |
戻り値
作成できたら true。同じ名前のオブジェクトがすでにあると false になります。
ObjectCreate() の使い方(コード例)
MQL4・MQL5 共通
// 現在値に水平線、1本前の高値に下向き矢印を置く
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
if(ObjectFind(0, "NowLine") < 0)
ObjectCreate(0, "NowLine", OBJ_HLINE, 0, 0, bid);
ObjectSetInteger(0, "NowLine", OBJPROP_COLOR, clrOrange);
datetime t1 = iTime(_Symbol, PERIOD_CURRENT, 1);
ObjectCreate(0, "Arrow_" + TimeToString(t1), OBJ_ARROW_DOWN, 0, t1, iHigh(_Symbol, PERIOD_CURRENT, 1));
ChartRedraw();OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
ObjectCreate() の注意点
- トレンドラインなど2点以上が必要なオブジェクトは、「...」の部分に time2, price2 を続けて書きます。
- OBJ_LABEL や OBJ_BUTTON は時刻・価格ではなく、OBJPROP_XDISTANCE・OBJPROP_YDISTANCE(画面の座標)で位置を決めます。時刻・価格には 0 を渡します。
- 同じ名前ですでにあるときは作成に失敗します。先に ObjectFind() で確認するか、ObjectDelete() してから作ります。
MQL4 と MQL5 の違い
MQL4 には、chart_id のない古い書き方 ObjectCreate(名前, 種類, ウィンドウ, 時刻1, 価格1, …) もあります。MQL5 と同じ新しい書き方は MQL4 でも使えます。












