MQL5チャートオブジェクト辞典|ObjectCreate・OBJ_LABEL・OBJ_BUTTON・OnChartEvent一覧
MQL5でEAやインジケーターを開発する場合、チャート上の表示、ボタン、ステータスパネル、水平線、トレンドライン、矩形、ラベルなどを扱うために、チャートオブジェクト関数を使います。
特に、ObjectCreate、ObjectSetInteger、ObjectSetDouble、ObjectSetString、ObjectGetInteger、ObjectGetDouble、ObjectGetString、ObjectFind、ObjectDelete、ObjectsDeleteAll、ChartRedraw、OnChartEvent、OBJ_LABEL、OBJ_BUTTON、OBJ_HLINE、OBJ_TREND、OBJ_RECTANGLE_LABEL は、EAの画面表示や半裁量パネルでよく使う基本項目です。
この記事では、MQL5のチャートオブジェクトを、EA開発や不具合調査で確認しやすい辞典形式で整理します。公式リファレンスの代わりに丸暗記するためではなく、どの関数を、どの場面で使い、どのobject名・プロパティ・イベント・ログを確認するかを整理するための記事です。
注意:この記事はMQL5開発・EA表示確認・パネルUI・チャート操作・不具合調査のための技術解説です。特定の売買判断、推奨エントリー、推奨ロット、推奨銘柄、利益保証、勝率保証、損失回避保証を行うものではありません。実運用前には、必ずデモ環境や検証環境で動作を確認してください。
- MQL5チャートオブジェクトの全体像
- 表示系と判定系を混同しない
- ObjectCreate
- ObjectSetInteger / ObjectSetDouble / ObjectSetString
- ObjectGetInteger / ObjectGetDouble / ObjectGetString
- ObjectFind
- ObjectDelete / ObjectsDeleteAll
- ChartRedraw
- OnChartEvent
- OBJ_LABEL
- OBJ_BUTTON
- OBJ_HLINE / OBJ_TREND / OBJ_RECTANGLE_LABEL
- object名 / prefix / cleanup
- z-order / click priority
- EA利用者向けの確認ポイント
- MQL5開発者向けの実装確認ポイント
- チャートオブジェクト関数・用語の辞典表
- 開発依頼前に整理する情報
- 関連するMQL5技術辞典
- 関連する技術講座
- FAQ
- まとめ
MQL5チャートオブジェクトの全体像
チャートオブジェクトは、チャート上に表示する部品です。ラベル、ボタン、水平線、トレンドライン、矩形、矢印、テキストなどを使って、EAやインジケーターの状態を視覚的に確認できます。
ただし、チャートオブジェクトは基本的に表示系です。EAの判定そのもの、runtime状態、注文許可状態、ロット計算結果などは、内部変数やログで管理し、object表示だけに依存しない設計が安全です。
| 分類 | 主な用途 | 代表関数・object | 確認すること |
|---|---|---|---|
| 作成 | チャート上にobjectを作る | ObjectCreate | object名、object種別、chart_id、subwindow、座標 |
| 設定 | 色、位置、文字、価格、時刻などを設定する | ObjectSetInteger、ObjectSetDouble、ObjectSetString | プロパティ種別、設定値、戻り値、GetLastError |
| 取得 | objectの現在設定を読む | ObjectGetInteger、ObjectGetDouble、ObjectGetString | object名、プロパティ、取得値 |
| 検索 | objectが存在するか確認する | ObjectFind | 戻り値、subwindow、object名 |
| 削除 | 不要なobjectを削除する | ObjectDelete、ObjectsDeleteAll | 削除対象、prefix、他EA objectの巻き込み防止 |
| 再描画 | 表示更新を反映する | ChartRedraw | 呼び出し頻度、描画負荷、更新タイミング |
| イベント | クリックやチャート操作を受け取る | OnChartEvent、OBJ_BUTTON | event id、sparam、object名、z-order |
表示系と判定系を混同しない
チャートオブジェクトを使う時に重要なのは、表示されている状態と、EA内部の判定状態を混同しないことです。
たとえば、チャート上のボタンが「ON」と表示されていても、EA内部のruntime状態が本当にONとは限りません。再初期化、時間足変更、object残存、削除漏れ、手動変更などにより、表示と内部状態がズレる可能性があります。
| 区分 | 管理するもの | 確認方法 | 注意点 |
|---|---|---|---|
| 表示系 | ラベル、ボタン、ライン、パネル、色、文字 | ObjectFind、ObjectGet系、チャート表示 | 表示は内部状態の結果として更新します。 |
| 判定系 | EA内部の許可状態、risk状態、entry状態、runtime変数 | 内部変数、ログ、状態管理構造体 | object表示だけをtruthにしないようにします。 |
| 操作系 | ボタンクリック、ドラッグ、チャートイベント | OnChartEvent、sparam、event id | クリックイベントと内部状態更新を分けます。 |
| 復元系 | 再初期化後の状態復元、object再作成 | OnInit、OnDeinit、Object auditログ | 残存objectと新規作成objectを整理します。 |
ObjectCreate
ObjectCreateは、チャート上にobjectを作成する関数です。ラベル、ボタン、水平線、トレンドライン、矩形ラベルなどを作る時に使います。
ObjectCreateが失敗した場合、object名の重複、chart_id、subwindow、座標指定、object種別、既存objectとの衝突などを確認します。
| 項目 | 内容 |
|---|---|
| 主な用途 | ラベル、ボタン、ライン、矩形、矢印、テキストなどを作成する |
| 主な確認値 | 戻り値、object名、object種別、chart_id、subwindow、time、price、GetLastError |
| よくある失敗 | 名前衝突、subwindow違い、座標不備、既存object残存、object種別違い |
| 確認ログ | OBJECT_CREATE、OBJECT_CREATE_FAIL、OBJECT_UPSERT、OBJECT_AUDIT |
ObjectCreateで確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| object名 | 一意の名前、prefix、ロジック番号、symbolなど | 他EAや過去objectとの衝突を防ぐため |
| object種別 | OBJ_LABEL、OBJ_BUTTON、OBJ_HLINE、OBJ_TRENDなど | 種別により使う座標やプロパティが異なるため |
| chart_id | 対象チャート | 通常は現在チャートを対象にしますが、明示確認が必要です。 |
| subwindow | メインチャートかサブウィンドウか | インジケーターサブウィンドウで表示する場合に重要です。 |
| 座標 | time / price、またはpixel基準の位置 | object種別により指定方法が異なるため |
| 戻り値 | true / false | 失敗時はGetLastErrorとobject名をログに残します。 |
ObjectSetInteger / ObjectSetDouble / ObjectSetString
ObjectSetInteger、ObjectSetDouble、ObjectSetStringは、作成したobjectのプロパティを設定するための関数です。色、位置、サイズ、文字、価格、時刻、z-order、クリック可否などを設定します。
| 関数 | 主な用途 | よく設定する内容 | 失敗時の確認 | 関連ログ |
|---|---|---|---|---|
| ObjectSetInteger | 整数・色・bool系プロパティの設定 | 色、サイズ、corner、x/y距離、z-order、選択可否、背景表示 | object名、プロパティID、設定値、GetLastError | OBJECT_SET_INT、OBJECT_STYLE |
| ObjectSetDouble | double系プロパティの設定 | 価格、角度、倍率、level値など | object種別、価格値、桁数、GetLastError | OBJECT_SET_DOUBLE、PRICE_LINE_SET |
| ObjectSetString | 文字列系プロパティの設定 | 表示テキスト、フォント名、tooltip、説明文字 | 文字列、object名、フォント、GetLastError | OBJECT_SET_STRING、LABEL_TEXT_UPDATE |
ObjectSet系でよく確認するプロパティ
| プロパティ例 | 主な意味 | 使う場面 |
|---|---|---|
| OBJPROP_COLOR | 色 | ラベル、ライン、ボタン、状態表示 |
| OBJPROP_XDISTANCE / OBJPROP_YDISTANCE | 画面端からの距離 | パネル、ラベル、ボタンの配置 |
| OBJPROP_CORNER | 基準コーナー | 左上、右上、左下、右下を基準にした配置 |
| OBJPROP_FONTSIZE | 文字サイズ | ラベル、ボタン、説明文 |
| OBJPROP_TEXT | 表示文字 | ステータス、ボタン名、状態表示 |
| OBJPROP_PRICE | 価格座標 | 水平線、トレンドライン、価格ラベル |
| OBJPROP_TIME | 時刻座標 | トレンドライン、縦線、時間位置指定 |
| OBJPROP_ZORDER | クリック優先や重なり順の補助 | ボタンやパネルのクリック競合を避ける時 |
| OBJPROP_SELECTABLE | 選択可否 | 手動操作させるか、固定表示にするか |
| OBJPROP_HIDDEN | オブジェクトリストでの表示制御 | 管理用object、内部表示補助 |
ObjectGetInteger / ObjectGetDouble / ObjectGetString
ObjectGetInteger、ObjectGetDouble、ObjectGetStringは、objectの現在のプロパティを取得する関数です。表示が想定どおりか、手動操作で値が変わったか、位置や状態がズレていないかを確認する時に使います。
| 関数 | 主な用途 | 確認する内容 | 注意点 |
|---|---|---|---|
| ObjectGetInteger | 整数・色・bool系プロパティの取得 | 色、位置、z-order、選択状態、表示状態 | objectが存在するか確認してから取得します。 |
| ObjectGetDouble | double系プロパティの取得 | 価格、座標、level値など | 価格桁数や対象object種別に注意します。 |
| ObjectGetString | 文字列系プロパティの取得 | 表示文字、tooltip、descriptionなど | 表示文字をEA内部状態の唯一の根拠にしないようにします。 |
ObjectFind
ObjectFindは、指定したobjectがチャート上に存在するかを確認する関数です。objectを新規作成する前、更新する前、削除する前、残存objectを監査する時に使います。
| 項目 | 内容 |
|---|---|
| 主な用途 | object存在確認、upsert処理、残存確認、削除前確認 |
| 主な確認値 | 戻り値、object名、subwindow |
| よくある失敗 | object名違い、prefix違い、別チャート参照、削除済みobject参照 |
| 確認ログ | OBJECT_FIND、OBJECT_EXISTS、OBJECT_MISSING、OBJECT_AUDIT |
ObjectDelete / ObjectsDeleteAll
ObjectDeleteは、指定したobjectを削除する関数です。ObjectsDeleteAllは、条件に合うobjectをまとめて削除するために使います。
削除処理では、他EAのobject、ユーザーが手動で引いたライン、別機能のobjectを巻き込まないように、prefix設計が重要です。
| 関数 | 主な用途 | 確認すること | 注意点 |
|---|---|---|---|
| ObjectDelete | 指定objectを1つ削除する | object名、戻り値、GetLastError | 削除対象が正しいか確認します。 |
| ObjectsDeleteAll | 条件に合うobjectをまとめて削除する | chart_id、subwindow、prefix、object種別 | 削除範囲が広すぎると他objectを消す可能性があります。 |
削除処理で注意すること
| 注意点 | 内容 | 確認ログ |
|---|---|---|
| prefixを使う | EA専用の接頭辞をobject名に付ける | OBJECT_PREFIX、OBJECT_SCOPE |
| 削除範囲を限定する | EAが作成したobjectだけを削除する | OBJECT_DELETE_SCOPE |
| 手動ラインを消さない | ユーザーが引いたラインや他EAのobjectを巻き込まない | MANUAL_OBJECT_GUARD |
| OnDeinit理由を確認する | 削除、時間足変更、再コンパイル、パラメータ変更など | DEINIT_REASON、CLEANUP_ROUTE |
| 残存objectを監査する | 削除後に残っているobjectを確認する | OBJECT_AUDIT、RESIDUAL_CHECK |
ChartRedraw
ChartRedrawは、チャートの再描画を促す関数です。objectを作成・更新した後、表示反映を明示したい場合に使います。
ただし、ChartRedrawを毎tick過剰に呼ぶと、チャート描画負荷が増え、バックテストや実運用時の動作が重くなる場合があります。状態変化時、表示更新時、操作後など、必要なタイミングに限定する設計が安全です。
| 項目 | 内容 |
|---|---|
| 主な用途 | object作成・更新後の表示反映 |
| 主な確認値 | 呼び出しタイミング、更新対象、描画頻度 |
| よくある失敗 | 毎tick過剰呼び出し、描画負荷、ちらつき、バックテスト低速化 |
| 確認ログ | CHART_REDRAW、UI_REFRESH、DRAW_THROTTLE |
OnChartEvent
OnChartEventは、チャート上のイベントを受け取るためのイベント関数です。OBJ_BUTTONのクリック、オブジェクト操作、キーボード操作、チャート変更などを扱う場合に使います。
半裁量EAや操作パネルでは、OnChartEventで受け取ったobject名を確認し、どのボタンが押されたかを判定します。ただし、クリックイベントと注文実行を直結させる場合は、誤操作防止、二重クリック防止、確認状態、ログ出力を設計する必要があります。
| 確認項目 | 内容 | 理由 |
|---|---|---|
| event id | クリック、ドラッグ、キー入力などのイベント種別 | 想定したイベントだけ処理するため |
| sparam | object名などの文字列情報 | どのボタンやobjectが操作されたか確認するため |
| lparam / dparam | 座標や補助値 | マウス位置やチャート操作の確認に使う場合があります。 |
| 二重クリック | 短時間の連続イベント | 重複処理や重複発注を防ぐため |
| 内部状態更新 | クリック後にruntime状態を更新する | 表示と内部状態を一致させるため |
OBJ_LABEL
OBJ_LABELは、チャート上に固定位置の文字を表示するためのobjectです。ステータス表示、EA状態、spread、認証状態、エラー表示、簡易パネルなどに使います。
| 項目 | 内容 |
|---|---|
| 主な用途 | 固定位置の文字表示、ステータス表示、情報パネル |
| 主な設定 | OBJPROP_TEXT、OBJPROP_COLOR、OBJPROP_FONTSIZE、OBJPROP_CORNER、OBJPROP_XDISTANCE、OBJPROP_YDISTANCE |
| よくある失敗 | 文字が重なる、位置がずれる、フォントサイズが合わない、更新されない |
| 確認ログ | LABEL_CREATE、LABEL_UPDATE、STATUS_RENDER |
OBJ_BUTTON
OBJ_BUTTONは、チャート上にボタンを表示するためのobjectです。半裁量EA、操作パネル、ON/OFF切替、手動エントリー、フィルター切替などで使います。
ボタンを使う場合は、OnChartEventでクリックを受け取り、object名から処理を分岐します。表示文字だけで判定せず、object名や内部状態を基準に処理する方が安全です。
| 項目 | 内容 |
|---|---|
| 主な用途 | クリック操作、ON/OFF切替、半裁量パネル、手動操作 |
| 主な設定 | OBJPROP_TEXT、OBJPROP_XSIZE、OBJPROP_YSIZE、OBJPROP_XDISTANCE、OBJPROP_YDISTANCE、OBJPROP_ZORDER |
| よくある失敗 | クリックできない、別objectに隠れる、z-order不整合、二重クリック処理 |
| 確認ログ | BUTTON_CREATE、BUTTON_CLICK、EVENT_ROUTE、BUTTON_STATE |
OBJ_HLINE / OBJ_TREND / OBJ_RECTANGLE_LABEL
OBJ_HLINE、OBJ_TREND、OBJ_RECTANGLE_LABELは、価格ライン、トレンドライン、背景パネルや矩形表示でよく使うobjectです。
| object | 主な用途 | 確認すること | 注意点 |
|---|---|---|---|
| OBJ_HLINE | 水平線、価格ライン、SL/TP目安、平均価格線 | 価格、色、線種、表示対象 | 価格桁数、symbol違い、削除範囲に注意します。 |
| OBJ_TREND | トレンドライン、時間と価格を持つ線 | time1、price1、time2、price2 | 時刻と価格の指定が必要です。 |
| OBJ_RECTANGLE_LABEL | 固定位置の背景パネル、UI枠 | corner、x/y距離、サイズ、背景色、z-order | ボタンやラベルとの重なり順に注意します。 |
object名 / prefix / cleanup
チャートオブジェクトを安定して管理するには、object名とprefix設計が重要です。EAごと、機能ごと、ロジックごとにprefixを分けると、更新・削除・監査がしやすくなります。
| 設計項目 | 内容 | 目的 |
|---|---|---|
| EA prefix | EA固有の接頭辞 | 他EAや手動objectとの衝突を避けるため |
| 機能prefix | STATUS、BUTTON、LINE、PANELなど | 機能別に削除・更新しやすくするため |
| symbol / timeframe | 銘柄や時間足を名前に含める | 複数チャートで混同しないため |
| logic id | ロジック番号やMagic Numberを含める | ロジック別表示や削除に使うため |
| cleanup範囲 | 削除対象prefixを限定する | 他objectの誤削除を防ぐため |
z-order / click priority
複数のobjectが重なるパネルでは、z-orderやクリック優先の確認が必要です。背景パネルがボタンより前に出ると、ボタンがクリックできないことがあります。
| 症状 | よくある原因 | 確認すること | 対応方針 |
|---|---|---|---|
| ボタンがクリックできない | 背景objectが前面にある、z-order不整合 | OBJPROP_ZORDER、作成順、背景設定 | ボタンを前面にし、背景はクリック対象外にします。 |
| 文字が隠れる | 矩形や背景objectとの重なり | 作成順、z-order、色、背景設定 | ラベルの表示順と背景色を調整します。 |
| クリックイベントが別objectになる | objectが重なっている | OnChartEventのsparam、object名 | クリック対象を明確に分けます。 |
| 時間足変更後に表示が崩れる | 再初期化時のcleanup不足 | OnDeinit、OnInit、Object audit | prefix cleanupと再作成を整理します。 |
EA利用者向けの確認ポイント
EAのパネルやボタンが表示されない、クリックできない、ラインが残る、時間足変更後に表示が崩れる場合は、チャートオブジェクトの作成・更新・削除が関係している可能性があります。
| 確認すること | 内容 | 開発者へ伝えるとよい情報 |
|---|---|---|
| EA名・バージョン | 設置しているEA名と版 | 対象ファイルと仕様を特定するため |
| 表示されないobject | ラベル、ボタン、ライン、パネルなど | どのobject種別の問題か切り分けるため |
| 発生タイミング | 起動時、時間足変更時、設定変更時、EA削除時など | OnInit / OnDeinit / OnChartEventのどこを見るかを絞るため |
| チャート状態 | 銘柄、時間足、表示スケール、サブウィンドウ | 位置ズレや表示崩れの確認に必要です。 |
| Expertsログ | ObjectCreate、ObjectSet、ObjectDelete、OnChartEvent関連ログ | object操作の成否確認に使います。 |
| Journalログ | 端末側ログ、再初期化、削除、エラー | 端末側イベント確認に使います。 |
| スクリーンショット | チャート全体、パネル、ボタン、ライン、ログ画面 | 表示状態とログを照合するために役立ちます。 |
MQL5開発者向けの実装確認ポイント
MQL5開発では、チャートオブジェクトの作成、更新、イベント処理、削除、監査を分けて設計すると、不具合調査がしやすくなります。
| 責務 | 主な確認対象 | 実装上の注意 | 確認ログ |
|---|---|---|---|
| create | ObjectCreate、object名、object種別 | 作成失敗時はGetLastErrorとobject名を出します。 | OBJECT_CREATE、OBJECT_CREATE_FAIL |
| update | ObjectSetInteger / Double / String | 表示更新と内部状態更新を分けます。 | OBJECT_UPDATE、LABEL_UPDATE |
| event | OnChartEvent、OBJ_BUTTON、sparam | クリック対象、二重クリック、誤操作を確認します。 | BUTTON_CLICK、EVENT_ROUTE |
| delete | ObjectDelete、ObjectsDeleteAll | prefixを限定し、他objectを巻き込まないようにします。 | OBJECT_DELETE、CLEANUP_ROUTE |
| audit | ObjectFind、ObjectsTotal、prefix scan | 残存object、ゴーストボタン、削除漏れを確認します。 | OBJECT_AUDIT、RESIDUAL_CHECK |
| performance | ChartRedraw、更新頻度、object数 | 毎tick過剰更新や大量object生成を避けます。 | DRAW_THROTTLE、UI_REFRESH |
実装時の注意点
- object名にはEA固有prefixを付ける
- ObjectCreateの戻り値とGetLastErrorを確認する
- 表示系objectをEA内部状態の唯一の根拠にしない
- ObjectSet系のプロパティ種別を間違えない
- OBJ_LABELとOBJ_BUTTONでは座標や使うプロパティが異なる
- OnChartEventではevent idとsparamを確認する
- ボタンクリック時は二重処理や誤操作を防ぐ
- 背景パネルとボタンのz-orderを確認する
- ObjectsDeleteAllは削除範囲をprefixで限定する
- 時間足変更、EA削除、再初期化時のcleanupを確認する
- 毎tickのChartRedrawや大量object更新を避ける
- ユーザーが手動で引いたラインを削除しない
チャートオブジェクト関数・用語の辞典表
| 関数/用語 | 役割 | 使う場面 | 確認値 | 出やすい問題 | 関連ログ |
|---|---|---|---|---|---|
| ObjectCreate | チャート上にobjectを作成する | ラベル、ボタン、ライン、矩形の作成 | 戻り値、object名、種別、GetLastError | 名前衝突、座標不備、subwindow違い | OBJECT_CREATE、OBJECT_CREATE_FAIL |
| ObjectSetInteger | 整数・色・bool系プロパティを設定する | 色、位置、サイズ、z-order、選択可否 | 戻り値、プロパティ、設定値 | プロパティ種別違い、表示崩れ | OBJECT_SET_INT、OBJECT_STYLE |
| ObjectSetDouble | double系プロパティを設定する | 価格、level、座標系の設定 | 戻り値、価格、object種別 | 価格桁数違い、対象object違い | OBJECT_SET_DOUBLE、PRICE_LINE_SET |
| ObjectSetString | 文字列系プロパティを設定する | 表示文字、フォント、tooltip | 戻り値、文字列、object名 | 文字更新失敗、古い表示残り | OBJECT_SET_STRING、LABEL_TEXT_UPDATE |
| ObjectGetInteger | 整数・色・bool系プロパティを取得する | 位置、z-order、選択状態、表示状態の確認 | 取得値、object名、プロパティ | object未存在、プロパティ違い | OBJECT_GET_INT、OBJECT_AUDIT |
| ObjectGetDouble | double系プロパティを取得する | ライン価格、座標、level値の確認 | 取得値、価格、object種別 | 価格取得ミス、object種別違い | OBJECT_GET_DOUBLE、LINE_AUDIT |
| ObjectGetString | 文字列系プロパティを取得する | 表示文字、tooltip、description確認 | 取得文字列、object名 | 表示文字と内部状態の混同 | OBJECT_GET_STRING、LABEL_AUDIT |
| ObjectFind | objectの存在を確認する | upsert、削除前確認、残存監査 | 戻り値、object名、subwindow | prefix違い、別チャート参照 | OBJECT_FIND、OBJECT_EXISTS |
| ObjectDelete | 指定objectを削除する | 個別削除、再描画前cleanup | 戻り値、object名、GetLastError | 削除対象ミス、削除漏れ | OBJECT_DELETE、OBJECT_DELETE_FAIL |
| ObjectsDeleteAll | 条件に合うobjectをまとめて削除する | prefix cleanup、再初期化、EA削除時 | 削除数、prefix、subwindow | 他EA objectや手動ラインの誤削除 | OBJECTS_DELETE_ALL、CLEANUP_SCOPE |
| ChartRedraw | チャート再描画を促す | 表示更新、パネル更新、操作後反映 | 呼び出しタイミング、頻度 | 過剰呼び出し、描画負荷、ちらつき | CHART_REDRAW、UI_REFRESH |
| OnChartEvent | チャートイベントを受け取る | ボタンクリック、object操作、キー入力 | event id、sparam、lparam、dparam | クリック未検出、object名不一致、二重処理 | CHART_EVENT、BUTTON_CLICK |
| OBJ_LABEL | 固定位置の文字表示object | ステータス表示、パネル、説明文 | text、corner、x/y距離、font size | 文字重なり、位置ズレ、更新漏れ | LABEL_CREATE、LABEL_UPDATE |
| OBJ_BUTTON | クリック可能なボタンobject | 半裁量操作、ON/OFF切替、パネル操作 | text、size、position、z-order、sparam | クリック不可、二重処理、z-order不整合 | BUTTON_CREATE、BUTTON_CLICK |
| OBJ_HLINE | 水平線object | 価格ライン、SL/TP目安、平均価格 | price、color、style、width | 価格桁数違い、削除漏れ | HLINE_CREATE、PRICE_LINE_AUDIT |
| OBJ_TREND | トレンドラインobject | 時間と価格を持つ線、補助ライン | time1、price1、time2、price2 | 座標不備、時間足変更時のズレ | TREND_CREATE、LINE_AUDIT |
| OBJ_RECTANGLE_LABEL | 固定位置の矩形ラベル | 背景パネル、UI枠、情報エリア | corner、x/y距離、size、z-order | ボタンを隠す、クリック競合 | PANEL_CREATE、PANEL_LAYER |
開発依頼前に整理する情報
チャートオブジェクト、パネルUI、ボタン、ライン表示まわりの不具合調査や改修依頼を行う場合は、次の情報を整理してください。
| 整理する情報 | 内容 | 理由 |
|---|---|---|
| 対象EA名・インジ名・バージョン | mq5/ex5名、商品名、バージョン | 対象ファイルと仕様を特定するため |
| 対象機能 | ラベル、ボタン、ライン、パネル、クリック操作など | 見るべきobject種別を絞るため |
| 発生タイミング | 起動時、時間足変更時、設定変更時、EA削除時、クリック時など | OnInit、OnDeinit、OnChartEventのどこを見るかを分けるため |
| 対象銘柄・時間足 | symbol、timeframe、ブローカー表記 | 複数チャートや時間足変更時の表示確認に必要です。 |
| object名・prefix | 対象object名、EA固有prefix、残存object名 | 削除漏れや重複作成を確認するため |
| 表示状態 | 表示されない、重なる、クリックできない、残るなど | UI不具合の症状を明確にするため |
| Expertsログ | ObjectCreate、ObjectSet、ObjectDelete、OnChartEvent関連ログ | object操作の成否を追うため |
| Journalログ | 端末側ログ、再初期化、削除、エラー | 端末側状態を確認するため |
| スクリーンショット | チャート、パネル、ボタン、ライン、ログ画面 | 表示状態とログを照合するため |
| 再現手順 | どの操作・条件で発生したか | クリック、時間足変更、EA削除などの発生経路を特定するため |
送ってはいけない情報:口座パスワード、投資家パスワード、Webhook URL、GAS URL、APIキー、認証トークン、口座番号の全桁、個人情報は、そのまま送らないでください。必要に応じて必ずマスクしてください。
関連するMQL5技術辞典
チャートオブジェクトの確認では、関数全体、エラーコード、時系列取得、注文処理、ファイル操作、列挙型、標準ライブラリの理解も関係します。関連するMQL5技術辞典もあわせて確認してください。
| 技術辞典 | 確認できる内容 | リンク |
|---|---|---|
| MQL5エラーコード辞典 | GetLastError、TRADE_RETCODE、コンパイルエラー、WebRequest、Strategy Tester関連エラーを確認できます。 | MQL5エラーコード辞典 |
| MQL5関数辞典 | EA・インジケーター開発で使う主要関数を、目的別・確認ログ別に確認できます。 | MQL5関数辞典 |
| MQL5注文関数・取引構造体辞典 | OrderSend、OrderCheck、MqlTradeRequest、MqlTradeResult、TRADE_RETCODEなどを確認できます。 | MQL5注文関数・取引構造体辞典 |
| MQL5ポジション・注文・約定・履歴用語辞典 | Order、Position、Deal、History、ticket、magic、commentなど、取引管理で混同しやすい用語を確認できます。 | MQL5ポジション・注文・約定・履歴用語辞典 |
| MQL5インジケーター関数辞典 | iCustom、CopyBuffer、SetIndexBuffer、OnCalculate、IndicatorRelease、buffer index、shiftなどを確認できます。 | MQL5インジケーター関数辞典 |
| MQL5時系列・価格取得関数辞典 | CopyRates、CopyClose、iClose、iTime、SymbolInfoDouble、TimeCurrentなどを確認できます。 | MQL5時系列・価格取得関数辞典 |
| MQL5ファイル操作関数辞典 | FileOpen、FileRead、FileWrite、FileClose、FILE_COMMON、CSV出力、ログ保存を確認できます。 | MQL5ファイル操作関数辞典 |
| MQL5列挙型・定数辞典 | ENUM_TIMEFRAMES、ENUM_ORDER_TYPE、ORDER_FILLING、POSITION_TYPE、SymbolInfo系定数などを確認できます。 | MQL5列挙型・定数辞典 |
| MQL5標準ライブラリ辞典 | CTrade、CPositionInfo、COrderInfo、CDealInfo、CSymbolInfo、CAccountInfoなどを確認できます。 | MQL5標準ライブラリ辞典 |
確認ポイント:チャートオブジェクトでは、ObjectCreateの戻り値、ObjectSet系のプロパティ、object名、prefix、z-order、OnChartEventのsparam、ObjectsDeleteAllの削除範囲、表示系と内部状態の分離をセットで確認してください。
関連する技術講座
| 関連ページ | 確認できる内容 |
|---|---|
| 技術講座ハブ | MT5・MQL5・EA開発関連の技術講座一覧を確認できます。 |
| MQL5開発入門 | OnInit、OnDeinit、OnTick、OnChartEventなどの基本構造を確認できます。 |
| MQL5デバッグ・ログファースト開発完全ガイド | ObjectCreate失敗、表示ズレ、イベント未検出、ログ追跡に使えます。 |
| MT5開発依頼前に用意する資料まとめ | 開発依頼前に整理するログ、setファイル、再現条件を確認できます。 |
FAQ
ObjectCreateが失敗する場合は何を確認しますか?
object名、object種別、chart_id、subwindow、座標、既存objectとの名前衝突、GetLastErrorを確認してください。作成失敗時はobject名と戻り値をログに残すことが重要です。
OBJ_LABELとOBJ_BUTTONは何が違いますか?
OBJ_LABELは固定位置の文字表示に使います。OBJ_BUTTONはクリック可能なボタンとして使います。ボタン操作を扱う場合は、OnChartEventでクリックイベントとobject名を確認します。
ボタンがクリックできない場合は何を確認しますか?
OBJPROP_ZORDER、背景objectとの重なり、OnChartEventのsparam、object名、クリック対象、作成順を確認してください。背景パネルが前面にあるとボタンをクリックできない場合があります。
ObjectsDeleteAllを使えばすべて消してよいですか?
削除範囲を限定しないObjectsDeleteAllは危険です。他EAのobjectやユーザーが手動で引いたラインを消す可能性があります。EA専用prefixを使い、削除対象を限定してください。
時間足変更後に表示が崩れる場合は何を確認しますか?
OnDeinit、OnInit、object cleanup、prefix、ObjectFind、残存object、再作成処理を確認してください。時間足変更や設定変更では再初期化が発生する場合があります。
チャート上の表示をEA内部状態として使ってもよいですか?
表示だけを内部状態の唯一の根拠にする設計は避けた方が安全です。表示は内部状態の結果として更新し、runtime状態は内部変数やログで管理してください。
ChartRedrawは毎tick呼んでもよいですか?
毎tickの過剰なChartRedrawは描画負荷やバックテスト低速化につながる場合があります。状態変化時、表示更新時、クリック処理後など必要なタイミングに限定する方が安全です。
object名はどのように決めるべきですか?
EA固有prefix、機能名、symbol、timeframe、logic id、Magic Numberなどを組み合わせ、他EAや手動objectと衝突しない名前にします。削除や監査をしやすいprefix設計が重要です。
開発依頼前に何を整理すればよいですか?
EA名、インジケーター名、バージョン、表示されないobject、発生タイミング、対象銘柄、時間足、Expertsログ、Journalログ、スクリーンショット、再現手順を整理してください。
この記事にない項目はどのように確認すればよいですか?
まず公式リファレンス、MetaEditorのコンパイル結果、Expertsログ、Journalログ、実際のチャート表示を確認してください。object操作が関係する場合は、object名、prefix、戻り値、GetLastError、OnChartEventのsparamを整理して確認します。
まとめ
MQL5のチャートオブジェクトでは、ObjectCreate、ObjectSetInteger、ObjectSetDouble、ObjectSetString、ObjectGet系、ObjectFind、ObjectDelete、ObjectsDeleteAll、ChartRedraw、OnChartEventを目的別に使い分けることが重要です。
ラベル、ボタン、水平線、トレンドライン、矩形パネルなどは、EAやインジケーターの状態表示に便利ですが、表示系と判定系を混同しないようにしてください。EA内部状態は内部変数やログで管理し、object表示はその結果として更新する設計が安全です。
ボタンやパネルを使う場合は、OnChartEvent、object名、sparam、z-order、二重クリック防止、prefix cleanupを確認してください。削除処理では、他EAのobjectや手動ラインを巻き込まないように削除範囲を限定します。
不具合調査や開発依頼を行う場合は、EA名、インジケーター名、バージョン、表示状態、object名、発生タイミング、Expertsログ、Journalログ、スクリーンショット、再現手順を整理してください。

