MARKET
9/25 8:27 時点|ドル円158.78▼-7 pips|ドル円 予想レンジ158.41 〜 159.23|ドル円 上の節目158.90▲|ドル円 下の節目157.80▼|ユーロドル1.1378▼-2 pips|ユーロドル 予想レンジ1.1351 〜 1.1408|ユーロドル 上の節目1.1403▲|ユーロドル 下の節目1.1359▼|きょうの指標重要指標なし|

ObjectCreate ― チャートに部品を置く|MQL4/MQL5リファレンス

MQLリファレンス›関数オブジェクトObjectCreate
MQL4 / MQL5 両対応オブジェクトパネル系ツールの基本

ObjectCreateチャートに部品(線・ラベル・ボタン等)を置く

チャートの上に矢印・線・ラベル・ボタンなどを置く、いちばん基本の関数。パネルを持つインジ・EAは、ほぼ必ずこれを呼んでいる。同じ名前が既にあると失敗するため、名前の付け方と存在確認が実務の9割を占める。

1書式

bool ObjectCreate(
   string        name,     // オブジェクトの名前(一意)
   int           type,     // OBJ_LABEL などの種類
   int           window,   // サブウィンドウ番号(0=本窓)
   datetime      time1, double price1,
   datetime      time2=0, double price2=0,
   datetime      time3=0, double price3=0
);

MQL5は先頭に chart_id が増える点と、type の型が変わる点の2つを直せば、ほぼそのまま動く。

2引数

引数 内容
chart_id MQL5のみ 対象のチャート。0でいま実行しているチャート
name オブジェクト名。他のオブジェクトと重複できない(重複時は失敗しGetLastErrorに4200が入る)
type 種類。OBJ_LABEL(文字)・OBJ_RECTANGLE_LABEL(塗り枠)・OBJ_BUTTON・OBJ_HLINEなど
window / sub_window サブウィンドウ番号。0で価格の本窓
time1,price1… 種類ごとに使う数が違う(ラベル系は無視され、座標は別途 OBJPROP_XDISTANCE 等で指定する)

3戻り値

成功でtrue。同じ名前のオブジェクトが既にあるとfalse(上書きはされない)。作る前にObjectFindで存在を確かめ、無いときだけ作るのが定石。

4実際に動かした結果

✓ 実測

同名で2回 ObjectCreate を呼んだときの挙動を確認。

操作 結果
1回目:ObjectCreate(0,”lab1″,OBJ_LABEL,0,0,0) true・作成される
2回目:同じ名前でもう一度 false(既存のオブジェクトはそのまま残る)
ObjectSetString で位置だけ更新 既存のオブジェクトの座標が動く(作り直し不要)

5使用例:無ければ作り、あれば動かすだけにする

void Lab(string name, int x, int y, string txt, color c)
{
   if(ObjectFind(0, name) < 0)
      ObjectCreate(0, name, OBJ_LABEL, 0, 0, 0);
   ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x);
   ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y);
   ObjectSetInteger(0, name, OBJPROP_CORNER, CORNER_LEFT_UPPER);
   ObjectSetString (0, name, OBJPROP_TEXT, txt);
   ObjectSetInteger(0, name, OBJPROP_COLOR, c);
}

毎ティック呼んでも、2回目以降は座標と文字を書き換えるだけになる(作り直さない)。MetaEditorでコンパイル0エラー・0警告を確認済み。

6MQL4→MQL5の違い

🔁 差分

クリックの当たり判定の優先順位が逆になる。MT4はボタンを最優先で拾うが、MT5はボタンの上を横切る線(水平線など)をボタンより先に拾う(線から約7ドット以内)。目盛り線とボタンを両方持つパネルは、MT5だけボタンが反応しない、という形で症状が出る。

直し方は、クリックされたいオブジェクトに OBJPROP_ZORDER を高い値(例:10)で設定すること。

同じ見た目でも、クリックの相手がMT4とMT5で違う

MT4 HIGHボタン クリック → ボタンが反応 MT5(ZORDER未設定) HIGHボタン 同じ場所をクリック → 線が反応(ボタンは反応しない) 点線=水平線オブジェクト/◯=クリックした位置(線から約7ドット以内) ZORDER=10 を付けると、MT5でもボタン側が反応するようになる

7よくある罠

⚠ 実務で踏んだもの
  • OBJ_LABELは横幅およそ375pxで描画が切れる。長い注記は全角30字程度までに収める。
  • OBJ_BUTTON等は全角記号(− ◀ ▶ +)を描けず「?」になる。矢印は▲▼のみ描ける。半角の - + < > を使う。
  • OBJ_RECTANGLE_LABELを重ねると色が混ざって見えることがある(透過ではなく色そのものが変わって見える)。塗り分けは重ねずに済む配置にする。
  • OBJPROP_TIMEFRAMESを切り替えると描画の順番が変わり、文字が枠の下に隠れることがある。

8関連する関数

9使っている無料ツール

REI_RolloverGuard — ロールオーバー時間帯だけ色を変える「危険帯・警戒帯」の帯を、時刻に合わせて描くために使用(製品ページへ)
公式リファレンス:MQL4 / MQL5(英語・要約は転載しません)

MORNING BRIEF平日 毎朝7時までに更新

今日はどこを見ればいいか。

ドル円とユーロドルの主要ライン・予想高値安値を、平日の朝に図1枚にまとめています。

朝刊を見る→
9/25 8:27 時点ドル円158.78▼-7 pipsドル円 予想レンジ158.41 〜 159.23ドル円 上の節目158.90▲ドル円 下の節目157.80▼ユーロドル1.1378▼-2 pipsユーロドル 予想レンジ1.1351 〜 1.1408ユーロドル 上の節目1.1403▲ユーロドル 下の節目1.1359▼きょうの指標重要指標なし
REI-FX&BO OFFICIAL LINE

ツールのダウンロードパスワードは
公式LINEで、すぐ届きます。

友だち追加の自動返信でパスワードをお送りします。
新しいツールの公開や、検証でわかったことも先にお知らせします。

全ツールのパスワード新作ツールをいち早く配信は月1〜2回だけ
LINEで友だち追加 パスワードを受け取る ›

追加後にひとことメッセージをいただけると、ツールづくりの参考にします。