コンテンツにスキップ

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

MT5の価格チャートと取引ラインを隠したプライバシーシールドについて、遮蔽・復元・再遮蔽の検証合格を表示した画面

この記事の3行まとめ

  • 価格チャート、軸、注文ライン、ワンクリック取引などを黒いシールドで一時的に隠します
  • Pキーで解除し、もう一度押すと再遮蔽します。削除時には適用前の設定へ戻します
  • 専用MT5で遮蔽→8設定の復元→再遮蔽と12バッファを独立検証しました

今回の原典は「MT4のウィンドウを隠す」

投稿日順で次に当たる2010年1月27日の記事は、MetaTraderのウィンドウそのものを一時的に隠す外部ツールの紹介でした。

元記事「隠密トレーダー御用達?MT4を隠す術。」を読む

原典では、当時の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は次の順序を実行しました。

  1. 既知のチャート設定を作る
  2. インジケーターを適用して遮蔽を確認する
  3. 検証用イベントで解除し、8設定が元どおりか確認する
  4. もう一度切り替え、再遮蔽できるか確認する
  5. 再遮蔽状態の実画面を撮影する

検証用イベントは自動試験のための入口です。通常利用では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本の計算バッファを公開します。

  1. 状態検査の完了
  2. シールドの有効・無効
  3. 切り替え回数
  4. 価格チャート表示
  5. 取引ライン表示
  6. 取引ラインのドラッグ許可
  7. ワンクリック取引表示
  8. 右クリックメニュー
  9. 十字カーソル
  10. 銘柄名表示
  11. OHLC表示
  12. シールド用オブジェクト数

検証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で板情報の有無を確かめる

— SPONSORED —