【MQL5】チャート上にボタン配置!UIパネルとクリックイベントの基本設計

MQL5 開発講座

こんにちは、潤奈です( ゚Д゚)!

前回の記事では、1つのチャートから複数の通貨ペアを監視・取引できる「マルチカレンシーEA」の仕組みと書き方を解説しました。

EA開発の基本ロジックをマスターしてくると、次に欲しくなるのが「チャート上から手動でワンクリック決済したい」「EAの自動売買モードをボタンで一時停止させたい」といった、視覚的・直感的に操作できるコントロール機能です。

MQL5(MT5)では、チャート上にボタンやテキスト入力欄などの「グラフィカルオブジェクト」を簡単に配置できます。さらに、それらがクリックされたことをプログラムで検知する仕組み(イベント処理)も標準で用意されています。

今回は、最も基本かつ実用的な「ワンクリックでポジションを全決済するボタン」をチャート上に配置するEAの作り方を分かりやすく解説します!


1. MQL5のオブジェクト作成とイベント処理の基本

チャート上にボタンを置き、クリックした際に処理を実行するためには、MQL5の以下の2つの仕組みを理解する必要があります。

① オブジェクトの作成(ObjectCreate)

MQL5では、チャート上に描画されるボタン、テキスト、ライン、四角形などをすべて「オブジェクト」と呼びます。
ボタンを作成するには、ObjectCreate() 関数にオブジェクトタイプとして OBJ_BUTTON を指定します。

作成したボタンは、サイズ、位置(X/Y座標)、背景色、表示する文字などをプロパティ設定関数(ObjectSetInteger()ObjectSetString())を使って細かく装飾していきます。

② イベントハンドラ(OnChartEvent)

チャート上で「マウスがクリックされた」「ボタンオブジェクトが押された」「キーボードが押された」などのイベントが発生したとき、MT5が自動的に呼び出す特別な関数が OnChartEvent() です。

ボタンをクリックした際は、idCHARTEVENT_OBJECT_CLICK(オブジェクトクリックイベント)が渡され、sparam にクリックされたオブジェクトの名前(例: "CloseAllButton") が文字列として渡されます。
これを利用して、「もしクリックされたのが決済ボタンなら、決済処理を実行する」という分岐を作ります。


2. ボタンを配置・処理する3つのステップ

実践的で安全なコードにするための具体的な手順は以下の3ステップです。

ステップ①:OnInit() 内でボタンを作成して装飾する

EA起動時にボタンを生成し、見やすい位置(例: チャートの右上)に配置します。

ステップ②:OnChartEvent() 内でクリックを検知して処理する

ボタンがクリックされたことを検知し、実際の売買ロジック(全決済など)を呼び出します。
このとき、クリックされたボタンは「凹んだ状態(State = true)」になります。そのまま放置すると見た目が不自然なため、「処理完了後にプログラム側でボタンを凸状態(State = false)に戻す」という処理を入れるのが、親切で安全なUI設計のコツです。

ステップ③:OnDeinit() 内でオブジェクトを削除する

EAをチャートから外した際、作成したボタンオブジェクトがチャート上にそのまま残ってしまわないよう、終了時に必ず削除します。


3. コピペで動く!「ワンクリック全決済ボタン」EA

それでは、実際の挙動を確認するためのサンプルコードを紹介します。
このEAをチャートにセットすると、右上に赤色の「Close All」ボタンが表示され、クリックすると現在の通貨ペアのポジションをすべて決済してくれます。

前回のマルチカレンシーEAでも使用した、無駄のない洗練されたポジション選択(PositionGetSymbol による自動選択)と決済ループを採用しています。


4. まとめ&次のステップ

今回は、EAに便利な機能を追加するための「チャート上のボタンオブジェクトの配置と、イベント処理の基本」を解説しました。

  • チャート上のボタンや図形は「グラフィカルオブジェクト(OBJ_BUTTON)」として作成する。
  • ボタンがクリックされたイベントは OnChartEvent() 内で検知する。
  • クリックされたボタンは、処理完了後にプログラム側で凸状態(State = false)に戻す
  • EA停止時は、チャートにゴミを残さないよう OnDeinit() 内でオブジェクトを削除する。

チャート上にボタンを配置できると、手動の補助ツールとしても動く便利なEAを簡単に作れるようになります。

次回は、ボタンだけでなく、テキスト入力欄や背景パネルを組み合わせて、さらに整理された操作盤を作る「操作パネル(UIパネル)とテキスト入力フォームの作成方法」について解説します。パラメーター設定画面を開かずに、チャート上から直接ロット数などを変更できる便利なUI作りに挑戦しましょう!

今回のボタン配置コードで「ボタンが描画されない」「クリックしても決済が走らない」などのトラブルがあれば、YouTubeのコメント欄やXでお気軽にご連絡くださいね!

🎥 YouTubeチャンネル: 潤奈【FXチャンネル】
🐦 X (Twitter): @zyuna32246

コメント

タイトルとURLをコピーしました