技術辞典

MQL5チャートオブジェクト辞典|ObjectCreate・OBJ_LABEL・OBJ_BUTTON・OnChartEvent一覧

EAファンクラブ

MQL5でEAやインジケーターを開発する場合、チャート上の表示、ボタン、ステータスパネル、水平線、トレンドライン、矩形、ラベルなどを扱うために、チャートオブジェクト関数を使います。

特に、ObjectCreateObjectSetIntegerObjectSetDoubleObjectSetStringObjectGetIntegerObjectGetDoubleObjectGetStringObjectFindObjectDeleteObjectsDeleteAllChartRedrawOnChartEventOBJ_LABELOBJ_BUTTONOBJ_HLINEOBJ_TRENDOBJ_RECTANGLE_LABEL は、EAの画面表示や半裁量パネルでよく使う基本項目です。

この記事では、MQL5のチャートオブジェクトを、EA開発や不具合調査で確認しやすい辞典形式で整理します。公式リファレンスの代わりに丸暗記するためではなく、どの関数を、どの場面で使い、どのobject名・プロパティ・イベント・ログを確認するかを整理するための記事です。

注意:この記事はMQL5開発・EA表示確認・パネルUI・チャート操作・不具合調査のための技術解説です。特定の売買判断、推奨エントリー、推奨ロット、推奨銘柄、利益保証、勝率保証、損失回避保証を行うものではありません。実運用前には、必ずデモ環境や検証環境で動作を確認してください。

MQL5チャートオブジェクトの全体像

チャートオブジェクトは、チャート上に表示する部品です。ラベル、ボタン、水平線、トレンドライン、矩形、矢印、テキストなどを使って、EAやインジケーターの状態を視覚的に確認できます。

ただし、チャートオブジェクトは基本的に表示系です。EAの判定そのもの、runtime状態、注文許可状態、ロット計算結果などは、内部変数やログで管理し、object表示だけに依存しない設計が安全です。

分類主な用途代表関数・object確認すること
作成チャート上にobjectを作るObjectCreateobject名、object種別、chart_id、subwindow、座標
設定色、位置、文字、価格、時刻などを設定するObjectSetInteger、ObjectSetDouble、ObjectSetStringプロパティ種別、設定値、戻り値、GetLastError
取得objectの現在設定を読むObjectGetInteger、ObjectGetDouble、ObjectGetStringobject名、プロパティ、取得値
検索objectが存在するか確認するObjectFind戻り値、subwindow、object名
削除不要なobjectを削除するObjectDelete、ObjectsDeleteAll削除対象、prefix、他EA objectの巻き込み防止
再描画表示更新を反映するChartRedraw呼び出し頻度、描画負荷、更新タイミング
イベントクリックやチャート操作を受け取るOnChartEvent、OBJ_BUTTONevent 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、設定値、GetLastErrorOBJECT_SET_INT、OBJECT_STYLE
ObjectSetDoubledouble系プロパティの設定価格、角度、倍率、level値などobject種別、価格値、桁数、GetLastErrorOBJECT_SET_DOUBLE、PRICE_LINE_SET
ObjectSetString文字列系プロパティの設定表示テキスト、フォント名、tooltip、説明文字文字列、object名、フォント、GetLastErrorOBJECT_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が存在するか確認してから取得します。
ObjectGetDoubledouble系プロパティの取得価格、座標、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クリック、ドラッグ、キー入力などのイベント種別想定したイベントだけ処理するため
sparamobject名などの文字列情報どのボタンや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 prefixEA固有の接頭辞他EAや手動objectとの衝突を避けるため
機能prefixSTATUS、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 auditprefix cleanupと再作成を整理します。

EA利用者向けの確認ポイント

EAのパネルやボタンが表示されない、クリックできない、ラインが残る、時間足変更後に表示が崩れる場合は、チャートオブジェクトの作成・更新・削除が関係している可能性があります。

確認すること内容開発者へ伝えるとよい情報
EA名・バージョン設置しているEA名と版対象ファイルと仕様を特定するため
表示されないobjectラベル、ボタン、ライン、パネルなどどのobject種別の問題か切り分けるため
発生タイミング起動時、時間足変更時、設定変更時、EA削除時などOnInit / OnDeinit / OnChartEventのどこを見るかを絞るため
チャート状態銘柄、時間足、表示スケール、サブウィンドウ位置ズレや表示崩れの確認に必要です。
ExpertsログObjectCreate、ObjectSet、ObjectDelete、OnChartEvent関連ログobject操作の成否確認に使います。
Journalログ端末側ログ、再初期化、削除、エラー端末側イベント確認に使います。
スクリーンショットチャート全体、パネル、ボタン、ライン、ログ画面表示状態とログを照合するために役立ちます。

MQL5開発者向けの実装確認ポイント

MQL5開発では、チャートオブジェクトの作成、更新、イベント処理、削除、監査を分けて設計すると、不具合調査がしやすくなります。

責務主な確認対象実装上の注意確認ログ
createObjectCreate、object名、object種別作成失敗時はGetLastErrorとobject名を出します。OBJECT_CREATE、OBJECT_CREATE_FAIL
updateObjectSetInteger / Double / String表示更新と内部状態更新を分けます。OBJECT_UPDATE、LABEL_UPDATE
eventOnChartEvent、OBJ_BUTTON、sparamクリック対象、二重クリック、誤操作を確認します。BUTTON_CLICK、EVENT_ROUTE
deleteObjectDelete、ObjectsDeleteAllprefixを限定し、他objectを巻き込まないようにします。OBJECT_DELETE、CLEANUP_ROUTE
auditObjectFind、ObjectsTotal、prefix scan残存object、ゴーストボタン、削除漏れを確認します。OBJECT_AUDIT、RESIDUAL_CHECK
performanceChartRedraw、更新頻度、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
ObjectSetDoubledouble系プロパティを設定する価格、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
ObjectGetDoubledouble系プロパティを取得するライン価格、座標、level値の確認取得値、価格、object種別価格取得ミス、object種別違いOBJECT_GET_DOUBLE、LINE_AUDIT
ObjectGetString文字列系プロパティを取得する表示文字、tooltip、description確認取得文字列、object名表示文字と内部状態の混同OBJECT_GET_STRING、LABEL_AUDIT
ObjectFindobjectの存在を確認するupsert、削除前確認、残存監査戻り値、object名、subwindowprefix違い、別チャート参照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ログ、スクリーンショット、再現手順を整理してください。

ABOUT ME
記事URLをコピーしました