EAのパネル表示を改修したい時に整理すること|ボタン・表示位置・ログ・誤操作防止
EAを使っていると、「パネルの表示位置を変えたい」「ボタンを押しやすくしたい」「誤操作しないようにしたい」「現在の状態をもっと分かりやすく表示したい」と感じることがあります。
パネル表示の改修は、単なる見た目の変更に見えますが、実際にはボタン操作、手動決済、エントリー許可、停止状態、ログ出力、オブジェクト管理などと関係する場合があります。
特に、半裁量EAやパネルEAでは、ボタンを押した時に何が実行されるのか、どの状態なら押せるのか、二重クリックを防ぐのか、操作結果をログに残すのかを事前に整理しておくことが重要です。
また、チャートサイズ、表示倍率、時間足変更、銘柄変更、EA削除時の挙動によって、パネルがずれたり、ボタンが残ったり、表示が重なったりする場合があります。
この記事では、EAのパネル表示を改修したい時に、開発依頼前に整理したいボタン、表示位置、表示項目、ログ、誤操作防止、オブジェクト管理、検証条件をまとめます。
なお、この記事はEA改修や開発依頼前の技術確認を目的とした内容です。特定の売買手法、推奨エントリー、推奨決済、推奨ロット、利益保証を行うものではありません。
この記事で確認すること
| 確認項目 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| 表示項目 | パネルに何を表示するかです。 | 口座情報、稼働状態、保有数、損益、設定値などを整理します。 |
| 表示位置 | パネルやボタンをどこに配置するかです。 | 左上、右上、チャート幅、他インジとの重なりを確認します。 |
| ボタン操作 | クリック時に何を実行するかです。 | エントリー、決済、停止、更新、リセットなどを分けます。 |
| 誤操作防止 | 押し間違いや二重クリックを防ぐ仕組みです。 | 確認操作、ロック、色分け、状態表示を整理します。 |
| ログ出力 | 操作や表示状態を記録します。 | ボタン押下、実行結果、エラー、見送り理由を確認します。 |
| オブジェクト管理 | チャート上のボタンやラベルの管理です。 | 作成、更新、削除、残骸確認を整理します。 |
EAのパネル表示改修とは
EAのパネル表示改修とは、チャート上に表示されるボタン、ラベル、ステータス、数値、説明文、背景、枠線などを変更する作業です。
パネルには、見るだけの表示と、クリックして操作するボタンがあります。表示系と操作系を分けて整理しないと、見た目の変更がEAの動作に影響する場合があります。
| 改修対象 | 内容 | 注意点 |
|---|---|---|
| 表示ラベル | 状態や数値を表示します。 | 表示だけで売買判定を変えないか確認します。 |
| 操作ボタン | クリックで処理を実行します。 | 押下条件、実行結果、ログが必要です。 |
| 背景パネル | ボタンや文字の背景です。 | チャートや他オブジェクトと重ならないようにします。 |
| ステータス表示 | 稼働中、停止中、エラーなどを示します。 | runtime状態とinput初期値を混同しないようにします。 |
| 警告表示 | 認証失敗、スプレッドブロック、時間停止などを示します。 | ログと一致する表示にします。 |
| ヘルプ表示 | 操作方法や注意点を表示します。 | 長すぎる表示でパネルを圧迫しないようにします。 |
依頼前には、パネルを「見やすくしたい」のか、「操作しやすくしたい」のか、「誤操作を防ぎたい」のか、「状態確認を強化したい」のかを分けて整理してください。
パネル表示・チャートUI改修であわせて確認したいページ
EAのパネル表示を改修する場合は、見た目だけでなく、判定処理と表示処理を分けること、ボタン操作時の状態更新、時間足変更やEA削除時のオブジェクト管理も確認しておくと、後から不具合を切り分けやすくなります。
| 確認したい内容 | 関連ページ | 確認ポイント |
|---|---|---|
| チャートUI全体の設計 | MQL5チャートオブジェクト・パネルUI完全ガイド | OBJ_LABEL、OBJ_BUTTON、OnChartEvent、表示更新の基本を確認します。 |
| 表示系と判定系の分離 | MQL5パネルEA・チャートUI実務ノート | パネル表示、判定ロジック、実行処理を混同しない設計を確認します。 |
| 実コードでの表示管理 | MQL5パネルUI・チャートObject表示を実コードで解説 | チャートObjectの作成、更新、削除、ログ確認の流れを確認します。 |
表示系と判定系を分けて考える
パネル改修で重要なのは、表示系と判定系を混同しないことです。
表示系は、現在の状態や設定値をチャート上に見せる役割です。判定系は、エントリー、決済、リスク制御、停止条件などのEA内部処理です。
| 区分 | 役割 | 依頼前に整理すること |
|---|---|---|
| 表示系 | 状態、数値、説明を表示します。 | 何を表示するか、どの頻度で更新するかを確認します。 |
| 操作系 | ボタン押下で処理を実行します。 | 何を実行するか、押せる条件を確認します。 |
| 判定系 | EA内部の売買・決済・停止判断です。 | パネル変更で判定を変えるかどうかを明確にします。 |
| ログ系 | 操作や状態を記録します。 | 表示内容とログ内容を一致させます。 |
| 通知系 | 外部へ通知します。 | パネル操作を通知するかを確認します。 |
| 管理系 | オブジェクト作成、更新、削除を管理します。 | EA削除時や時間足変更時の挙動を確認します。 |
たとえば、パネル上で「停止中」と表示しているのに、実際にはEAが注文できる状態だと危険です。表示状態と内部状態が一致するように仕様を整理します。
表示項目を整理する
パネルに表示する情報は、必要なものに絞ることが重要です。
情報を増やしすぎると見づらくなり、重要な状態が埋もれてしまいます。逆に、必要な情報が不足すると、現在のEA状態を判断しにくくなります。
| 表示項目 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| EA名・バージョン | どのEAかを識別します。 | 複数EA運用時に見分けられるようにします。 |
| 稼働状態 | 稼働中、停止中、認証NGなどです。 | 内部状態と一致させます。 |
| 自動売買状態 | 注文可能かどうかです。 | MT4/MT5側の許可状態も確認します。 |
| 保有ポジション | BUY / SELL数、ロット、損益などです。 | 対象Magic Numberや銘柄を確認します。 |
| スプレッド | 現在のスプレッドです。 | ブロック条件と表示単位を一致させます。 |
| 時間帯状態 | 稼働時間内か停止時間かです。 | サーバー時間基準か確認します。 |
| エラー状態 | 注文失敗、認証失敗、通信失敗などです。 | ログと照合できる表示にします。 |
| 操作ガイド | ボタンの意味や注意点です。 | 長くなりすぎないようにします。 |
表示項目は、「常に表示する項目」「詳細表示で見る項目」「ログで確認すればよい項目」に分けると整理しやすくなります。
ボタン操作を整理する
EAパネルのボタンは、押すだけで注文、決済、停止、設定反映などが実行される場合があります。
そのため、ボタンごとに、押した時に何をするのか、どの状態なら押せるのか、実行後に表示をどう変えるのかを明確にします。
| ボタン例 | 主な役割 | 依頼前の確認ポイント |
|---|---|---|
| BUYボタン | 手動でBUY注文を出します。 | ロット、Magic Number、注文許可、二重クリック防止を確認します。 |
| SELLボタン | 手動でSELL注文を出します。 | BUYと同じ仕様か、方向別に違うか確認します。 |
| CLOSEボタン | 対象ポジションを決済します。 | 対象銘柄、Magic Number、方向、手動ポジションの扱いを確認します。 |
| STOPボタン | 新規エントリーや追加エントリーを止めます。 | 何を止め、何を継続するかを確認します。 |
| RESETボタン | 表示や一部状態を初期化します。 | EA内部状態まで初期化するかを確認します。 |
| APPLYボタン | パネル上の設定を反映します。 | input初期値ではなくruntime値として扱うか確認します。 |
| DETAILボタン | 詳細表示を開閉します。 | 表示だけの変更か、内部状態に影響するか確認します。 |
ボタン操作は、manual処理として扱い、自動エントリーや自動決済の判定と混同しないようにします。
表示位置とサイズを整理する
パネル表示では、位置とサイズの整理も重要です。
チャート左上、右上、左下、右下のどこに表示するか、他のインジケーターやEAの表示と重ならないか、画面サイズが変わった時にどうするかを確認します。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 表示位置 | 左上、右上、左下、右下などです。 | 他の表示物と重ならないか確認します。 |
| 横幅 | パネルの幅です。 | 文字が折り返されるか確認します。 |
| 高さ | パネルの縦幅です。 | ボタン数や表示項目に合わせます。 |
| 余白 | 文字やボタンの間隔です。 | クリックしやすさと見やすさを確認します。 |
| ボタンサイズ | クリック範囲です。 | 小さすぎると誤操作や押しにくさにつながります。 |
| フォントサイズ | 文字の大きさです。 | 高DPI環境や小さいチャートで確認します。 |
| 複数チャート | 同じEAを複数チャートで使う場合です。 | オブジェクト名の衝突を避ける必要があります。 |
表示位置を依頼する場合は、スクリーンショットに希望位置を示すと確認しやすくなります。
誤操作防止を整理する
パネルEAでは、誤ってボタンを押すことで注文や決済が実行される可能性があります。
そのため、重要なボタンには誤操作防止の仕組みを検討します。
| 誤操作防止 | 内容 | 確認すること |
|---|---|---|
| 確認ボタン | 1回目で確認、2回目で実行する方式です。 | 確認状態の有効時間を決めます。 |
| ロック機能 | 操作ボタンを一時的に無効化します。 | 解除方法と表示状態を確認します。 |
| 二重クリック防止 | 短時間の連続クリックを無視します。 | 何秒以内を無効にするか確認します。 |
| 色分け | 危険操作と通常操作を色で分けます。 | 見た目だけでなくログと一致させます。 |
| 状態別無効化 | 条件が整わない時は押せないようにします。 | 注文不可、保有なし、認証NGなどを確認します。 |
| 実行前ログ | 押下時点の状態をログに残します。 | 誤操作や不具合切り分けに使います。 |
| 実行後表示 | 成功・失敗をパネル上に表示します。 | 押したのに反応しない状態を避けます。 |
誤操作防止は、見た目の工夫だけでなく、実行条件、ロック、ログ、状態表示をセットで整理します。
手動操作と自動処理を分ける
パネルEAでは、手動ボタン操作とEA内部の自動処理が同じポジションを対象にする場合があります。
たとえば、手動CLOSEボタンで決済しようとしている時に、EA側の自動決済も同時に動くと、処理が競合する可能性があります。
| 区分 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| 手動エントリー | ボタン操作で注文を出します。 | 自動エントリーと同じMagic Numberを使うか確認します。 |
| 手動決済 | ボタン操作で決済します。 | 自動決済と競合しないようにします。 |
| 自動エントリー | EA内部の条件で注文します。 | 手動操作中に停止するか確認します。 |
| 自動決済 | TP/SL、建値、トレーリングなどで決済します。 | 手動決済後の状態更新を確認します。 |
| 外部停止 | ボタンや外部制御で停止します。 | 新規停止、追加停止、決済継続を分けます。 |
| 状態更新 | 保有数や損益をパネルへ反映します。 | 決済後に表示が残らないようにします。 |
手動操作を追加する場合は、manual処理としてログに残し、自動処理との優先順位や競合回避を整理してください。
ログで確認したい項目
パネル改修では、ボタンを押したかどうか、押した結果どうなったか、なぜ実行されなかったかをログで確認できることが重要です。
| ログ項目 | 確認内容 | 例 |
|---|---|---|
| button_click | どのボタンが押されたか確認します。 | button=BUY、button=CLOSE |
| ui_state | パネルの状態を確認します。 | locked、ready、disabled |
| action_request | ボタンから要求された処理です。 | manual_buy、manual_close、reset |
| action_result | 実行結果です。 | success、fail、skip |
| skip_reason | 実行しなかった理由です。 | auth_ng、trade_disabled、no_position |
| object_audit | チャートオブジェクトの状態確認です。 | created、updated、deleted、residual |
| layout_state | 表示位置やサイズの状態です。 | x、y、width、height |
| error_detail | エラー内容です。 | GetLastError、retcodeなど |
パネル操作の不具合では、「ボタンが反応しない」のか、「押されたが条件で見送った」のか、「処理に失敗した」のかをログで分けて確認します。
オブジェクト管理を整理する
EAのパネルは、チャート上のオブジェクトとして作成されることがあります。
ボタン、ラベル、背景、枠線などのオブジェクトは、EA起動時に作成し、稼働中に更新し、EA削除時に消す必要があります。
| 管理項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 作成 | EA起動時にパネル部品を作成します。 | 同じ名前のオブジェクトが重複しないようにします。 |
| 更新 | 状態や数値を更新します。 | 更新頻度が高すぎると重くなる場合があります。 |
| 削除 | EA削除時にパネルを消します。 | 不要なボタンやラベルを残さないようにします。 |
| 再描画 | 時間足変更やチャート変更時に表示を整えます。 | 表示ずれや重複作成を防ぎます。 |
| 名前空間 | オブジェクト名の接頭辞です。 | 複数EAや複数チャートで衝突しないようにします。 |
| 残骸確認 | 古いオブジェクトが残っていないか確認します。 | OBJECT_AUDITログがあると確認しやすくなります。 |
| 削除対象外 | 残したいラインや履歴表示です。 | 消すものと残すものを分けます。 |
EA削除後にボタンだけ残る、時間足変更で表示が重なる、複数チャートでオブジェクトが混ざる、といった問題を避けるために、オブジェクト管理は事前に整理してください。
表示更新の頻度を整理する
パネル表示は、毎Tick更新すればよいとは限りません。
更新頻度が高すぎると、チャートが重くなったり、表示がちらついたり、操作が遅くなったりする場合があります。
| 更新方式 | 内容 | 確認すること |
|---|---|---|
| OnTick更新 | 価格更新ごとに表示を更新します。 | 必要な項目だけに絞るか確認します。 |
| 一定間隔更新 | 数秒ごとに表示を更新します。 | 状態表示や損益表示に向いています。 |
| イベント更新 | 注文、決済、ボタン押下時に更新します。 | 無駄な再描画を減らせます。 |
| チャート変更時更新 | 時間足や銘柄変更時に再配置します。 | 表示ずれを確認します。 |
| 手動更新 | 更新ボタンで再描画します。 | パネルが崩れた時の復旧に使う場合があります。 |
| 詳細表示更新 | 詳細パネルを開いた時だけ更新します。 | 常時表示しない情報に向いています。 |
表示更新は、EA本体の売買判定や注文処理に影響しないように設計することが重要です。
検証時に確認すること
パネル改修後は、見た目だけでなく、操作、ログ、削除時の挙動まで確認します。
| 検証項目 | 内容 | 注意点 |
|---|---|---|
| 初期表示 | EA起動時にパネルが正しく表示されるか確認します。 | INITログと表示を照合します。 |
| ボタン押下 | 各ボタンが仕様どおり反応するか確認します。 | 成功時と失敗時の両方を確認します。 |
| 誤操作防止 | 二重クリックやロックが効くか確認します。 | 短時間連打や無効状態で試します。 |
| 表示更新 | 保有数、損益、状態が更新されるか確認します。 | 決済後に古い表示が残らないようにします。 |
| 時間足変更 | 時間足変更後も表示が崩れないか確認します。 | 再描画や重複作成を確認します。 |
| チャートサイズ変更 | 表示位置がずれないか確認します。 | 小さいチャートや拡大表示で確認します。 |
| EA削除 | 不要なボタンやラベルが残らないか確認します。 | 削除対象外オブジェクトも分けて確認します。 |
| ログ照合 | ボタン操作とログが一致するか確認します。 | button_click、action_resultを確認します。 |
パネル改修は、スクリーンショットだけでなく、操作ログやEA削除後のチャート状態も確認すると不具合を見つけやすくなります。
依頼前に用意するとよい資料
EAパネル改修を依頼する場合は、現在の表示状態、希望する配置、ボタン動作、ログ、誤操作防止の希望を整理します。
| 資料 | 内容 | 注意点 |
|---|---|---|
| 現在のソースコード | mq5、mqhなどのソース一式です。 | ex5だけでは直接改修できない場合があります。 |
| 現在のパネル画像 | 現状のスクリーンショットです。 | 問題箇所に印を付けると伝わりやすくなります。 |
| 希望レイアウト | 配置案や簡単な図です。 | 左上、右上、ボタン順序などを示します。 |
| ボタン一覧 | 必要なボタンと不要なボタンです。 | 各ボタンの動作を表にします。 |
| 表示項目一覧 | 表示したい情報です。 | 常時表示と詳細表示を分けます。 |
| 誤操作防止案 | 確認操作、ロック、二重クリック防止です。 | 危険操作ほど明確にします。 |
| ログ要件 | 操作ログ、結果ログ、エラーログです。 | 不具合切り分けに必要です。 |
| 検証条件 | チャートサイズ、時間足、銘柄、複数チャートなどです。 | 実際の運用環境に近い条件を整理します。 |
依頼前チェック表
| チェック項目 | 確認内容 |
|---|---|
| パネル改修の目的を整理した | 見やすさ、操作性、誤操作防止、状態確認のどれが目的かを分けます。 |
| 表示項目を整理した | 常時表示、詳細表示、ログだけでよい項目を分けます。 |
| 表示位置を決めた | 左上、右上、サイズ、余白、他表示との重なりを確認します。 |
| 必要なボタンを整理した | BUY、SELL、CLOSE、STOP、RESET、APPLYなどを分けます。 |
| ボタンごとの動作を整理した | 押した時に何をするか、押せる条件を確認します。 |
| 誤操作防止を整理した | 確認操作、ロック、二重クリック防止、色分けを確認します。 |
| 手動操作と自動処理を分けた | manual処理とEA内部処理の優先順位を確認します。 |
| ログ項目を整理した | button_click、action_result、skip_reason、object_auditを確認します。 |
| オブジェクト管理を確認した | 作成、更新、削除、残骸確認、名前空間を整理します。 |
| 表示更新頻度を決めた | OnTick、一定間隔、イベント更新を分けます。 |
| 検証条件を整理した | 時間足変更、チャートサイズ変更、EA削除、複数チャートを確認します。 |
| ソースコードの有無を確認した | mq5、mqhがあるかを確認します。 |
FAQ
EAのパネル表示だけを改修できますか?
ソースコードがあり、表示系がEA内部で分離されていれば相談できます。ただし、ボタン操作や状態表示が売買処理と結びついている場合は、周辺処理の確認も必要です。
ボタンの位置やサイズだけ変更できますか?
可能な場合があります。現在のスクリーンショット、希望配置、ボタンサイズ、チャートサイズ、他の表示物との重なりを整理してください。
誤操作防止はどのように整理しますか?
確認操作、ロック、二重クリック防止、状態別無効化、色分け、実行前後ログなどを組み合わせて整理します。
ボタンを押したのに反応しない場合は何を確認しますか?
ボタン押下イベントが拾えているか、押せる状態だったか、処理が見送られたか、実行に失敗したかをログで確認します。
EAを削除してもボタンが残る場合は改修できますか?
ソースコードがあれば、OnDeinit時のオブジェクト削除やOBJECT_AUDITログを確認して改修できる場合があります。残すオブジェクトと消すオブジェクトを分ける必要があります。
ex5ファイルだけでもパネル改修できますか?
ex5だけでは既存EAのパネルを直接改修できない場合があります。通常はmq5やmqhなどのソースコードが必要です。ソースがない場合は、補助EAや新規パネルEAとして検討する場合があります。
関連ページ
EAのパネル表示を改修する時は、ボタンや配置だけでなく、ログ出力、通知、決済操作、見積依頼前の資料整理もあわせて確認すると、表示系と操作系を分けて整理しやすくなります。
| 関連ページ | 確認ポイント |
|---|---|
| EA開発の見積依頼前に整理すること|仕様書・ログ・setファイル・検証条件 | パネル改修を依頼する前に、希望レイアウト、操作範囲、検証条件を整理します。 |
| EAのログ出力を増やしたい時に整理すること|Experts・Journal・CSV・通知 | button_click、action_result、object_auditなど、パネル操作ログを整理する時に確認します。 |
| EAに通知機能を追加したい時に整理すること|Discord・メール・LINE・ログ出力 | ボタン操作、エラー状態、稼働状態を通知対象に含める場合に確認します。 |
| EAの決済ロジックだけを改修したい時に整理すること|TP/SL・建値・トレーリング・一括決済 | CLOSEボタン、一括決済ボタン、手動決済と自動決済の競合を整理する時に使います。 |
まとめ
EAのパネル表示を改修したい場合は、見た目だけでなく、表示項目、表示位置、ボタン操作、誤操作防止、ログ、オブジェクト管理を分けて整理することが重要です。
特に、ボタン操作を追加・変更する場合は、何を実行するのか、どの状態なら押せるのか、手動操作と自動処理が競合しないかを確認してください。
パネル表示では、チャートサイズ、時間足変更、複数チャート、EA削除時の挙動も確認が必要です。ボタンやラベルが残る、重なる、反応しないといった問題を避けるため、オブジェクト管理とログ出力を整理します。
依頼前には、現在のパネル画像、希望レイアウト、必要なボタン、表示項目、誤操作防止案、ログ要件、検証条件、ソースコードの有無をまとめておくと確認が進めやすくなります。
