【移植#38】MT5チャートを一時的に隠す — Pキーで戻せるプライバシーシールド¶

この記事の3行まとめ
- 価格チャート、軸、注文ライン、ワンクリック取引などを黒いシールドで一時的に隠します
Pキーで解除し、もう一度押すと再遮蔽します。削除時には適用前の設定へ戻します- 専用MT5で遮蔽→8設定の復元→再遮蔽と12バッファを独立検証しました
今回の原典は「MT4のウィンドウを隠す」¶
投稿日順で次に当たる2010年1月27日の記事は、MetaTraderのウィンドウそのものを一時的に隠す外部ツールの紹介でした。
原典では、当時のWindows用ツールPlancoinへウィンドウタイトルのキーワードを登録し、Ctrl + F8で対象ウィンドウを隠したり戻したりしていました。口座情報を人に見られにくくするだけでなく、画面が見えなければ不用意に触ったり閉じたりしにくい、という誤操作対策としても紹介されています。
ただし、これは15年以上前の外部ソフトです。現在の入手先や安全性を確認せず導入することは勧めません。また、MQL5プログラムからOS上のMT5ウィンドウ全体を安全に隠したり、Windowsのショートカットで復元したりする機能は提供されていません。
そこで今回は、外部ソフトを再現するのではなく、「チャートを人目と誤操作から一時的に遠ざける」という目的を、MT5のチャート内だけで再構成します。
MQL5版はチャート内にシールドをかける¶
配布インジケーターを適用すると、現在のチャートへ黒いシールドを表示します。遮蔽中は次の表示・操作を無効にします。
| 対象 | 遮蔽中の状態 |
|---|---|
| 価格チャートと各種目盛り | 非表示 |
| 銘柄名とOHLC | 非表示 |
| Bid・Ask・Last線 | 価格チャートとともに非表示 |
| ポジション・注文・SL・TPライン | 非表示 |
| 取引ラインのドラッグ | 無効 |
| ワンクリック取引パネル | 非表示 |
| チャートの右クリックメニュー | 無効 |
| 中クリックの十字カーソル | 無効 |
中心に表示するのは、シールドが有効であること、無効にした主な操作、解除キー、そして「OSやターミナル全体のロックではない」という注意です。銘柄や価格はシールド内へ書きません。
MQL5公式リファレンスのChart Propertiesでは、CHART_SHOW=falseにすると価格チャート、軸、インジケーターサブウィンドウなどを非表示にできる一方、グラフィカルオブジェクトは描画されると説明されています。この性質を使い、OBJ_RECTANGLE_LABELとラベルだけを残しています。
Pキーで表示と遮蔽を切り替える¶
チャートへフォーカスを置いてPキーを押すと、価格チャートを表示し、適用前に保存した設定を戻します。もう一度Pを押すと、同じチャートを再び遮蔽します。
キー入力はOnChartEvent()のCHARTEVENT_KEYDOWNで受け取ります。公式のOnChartEventにあるとおり、キーイベントはチャートに入力フォーカスがある場合に発生します。別の画面や入力欄にフォーカスがあるときは反応しません。
単にすべてをtrueへ戻すのではなく、適用前の値を8項目保存してから遮蔽します。たとえば、もともとワンクリック取引を非表示にしていたチャートなら、解除後も非表示のままです。
インジケーターを通常どおり削除した場合も、保存した設定を復元してシールド用オブジェクトを消します。
状態遷移を一方向で終わらせない¶
このツールで怖いのは、「隠せたが戻せない」状態です。そのため、専用の検証EAは次の順序を実行しました。
- 既知のチャート設定を作る
- インジケーターを適用して遮蔽を確認する
- 検証用イベントで解除し、8設定が元どおりか確認する
- もう一度切り替え、再遮蔽できるか確認する
- 再遮蔽状態の実画面を撮影する
検証用イベントは自動試験のための入口です。通常利用ではPキーで同じ切り替え処理を呼びます。
| 状態 | 価格表示 | 取引ライン | ライン移動 | ワンクリック | メニュー | 十字線 | 銘柄 | OHLC |
|---|---|---|---|---|---|---|---|---|
| 適用前 | ON | ON | ON | OFF | ON | ON | ON | ON |
| 遮蔽 | OFF | OFF | OFF | OFF | OFF | OFF | OFF | OFF |
| 解除後 | ON | ON | ON | OFF | ON | ON | ON | ON |
| 再遮蔽 | OFF | OFF | OFF | OFF | OFF | OFF | OFF | OFF |
ワンクリック取引だけは適用前からOFFにして試験しています。解除時に勝手にONへ変わらず、元のOFFが維持されることを確認するためです。
12バッファで画面設定を外部照合する¶
配布インジケーターは、見た目とは別に12本の計算バッファを公開します。
- 状態検査の完了
- シールドの有効・無効
- 切り替え回数
- 価格チャート表示
- 取引ライン表示
- 取引ラインのドラッグ許可
- ワンクリック取引表示
- 右クリックメニュー
- 十字カーソル
- 銘柄名表示
- OHLC表示
- シールド用オブジェクト数
検証EAは各バッファをCopyBuffer()で1件ずつ読み、同時にチャートプロパティを直接取得して照合しました。遮蔽中のオブジェクトは、背景、枠、バッジ、見出し、状態、操作、解除方法、限界表示を含む9個です。
初回検証では、SetIndexBuffer()直後のOnInit()中に診断値を書き込んだため、まだサイズ0のバッファへアクセスして停止しました。MQL5では、バッファの大きさは端末がOnCalculate()までに割り当てます。修正版はOnCalculate()以降だけ書き込み、タイマーから更新するときも配列長を確認します。公式のSetIndexBuffer解説にも、結び付け直後の配列はまだデータ処理できないことが明記されています。
| 検証項目 | 最終結果 |
|---|---|
| 配布インジケーターのコンパイル | 0エラー・0警告 |
| 検証EAのコンパイル | 0エラー・0警告 |
| 初回遮蔽 | 合格 |
| 8設定の復元 | 合格 |
| 再遮蔽 | 合格 |
| 診断バッファ | 12本一致 |
| シールドオブジェクト | 9個一致 |
| 実画面キャプチャー | 成功 |
| 売買注文 | なし |
| 外部ファイルの作成・更新 | なし |
ダウンロードと使い方¶
38_MT5_Chart_Privacy_Shield_v1_00.mq5 をダウンロード
MT5のIndicatorsへ保存してコンパイルし、隠したいチャートへ適用してください。初期設定では適用直後からシールドが有効になります。
- 表示へ戻す:チャートをクリックしてから
P - 再び隠す:もう一度
P - 常に表示状態から始める:
InpStartShielded=false - 別のキーを使う:
InpToggleKeyCodeへWindowsの仮想キーコードを指定 - 解除キーを画面へ書かない:
InpShowKeyHint=false
削除する前にPで表示へ戻しておくと、復元結果を目で確認できます。通常の削除処理でも元設定へ戻しますが、端末やOSの異常終了時に復元処理が完了する保証はありません。
使えないこと・注意点¶
- MT5のOSウィンドウ、タスクバーアイコン、タイトルバーを隠すものではありません。
- ツールボックス、ナビゲーター、気配値、別チャート、口座番号など、チャート外の領域は隠しません。
- パスワードやアクセス制御ではなく、
Pキーを知っていれば誰でも解除できます。 - EAやインジケーターの計算、アルゴリズム取引、保有ポジションは遮蔽中も止まりません。
- 端末メニューや別画面からの注文まで禁止する機能ではありません。
- シールド中も本当に隠したい情報が画面外へ残っていないか、実環境で確認してください。
- 共用PCの保護には、OSの画面ロック、別ユーザー、適切な権限管理を使ってください。
- このインジケーターは取引成績や誤操作ゼロを保証しません。
ロジック評価の結論¶
原典の外部ツールは、MT4というアプリケーション全体を隠す発想でした。MQL5版はそこまで広い制御を持てないため、同じものを作ったとは言えません。
一方、チャート上の価格と取引ラインを一時的に見えなくし、復元可能な状態として管理することはできます。画面共有前に価格を伏せる、触る必要のないチャートを視界から外す、といった用途なら、DLLや古い外部ソフトを使わずに実現できます。
「隠す」処理では、隠れたこと以上に、確実に戻せることが重要です。今回は元設定の保存、解除、再遮蔽、削除時の復元までを一つの状態遷移として移植しました。
前後の記事¶
前: 【移植#37】東京9–17時を1本の足にする — セッションOHLCをMQL5で可視化
次: 【移植#39】Level IIは接続先しだい — MT5で板情報の有無を確かめる