当サイトではアフィリエイトプログラムを利用して商品を紹介しています。
本記事では、MetaTrader 5(MT5)上で二項分布のシミュレーション結果を3Dで可視化する、高度なMQL5ツールについて解説する。DirectXを活用することで、従来の2Dグラフでは捉えきれなかった確率質量関数(PMF)の空間的なコントラストや頻度の違いを、インタラクティブな3D空間で詳細に分析することが可能となる。
このツールは、自動売買(EA)のバックテスト結果やトレード戦略の勝率分布を統計的に評価したい中級以上のトレーダーおよび開発者にとって、極めて強力な武器となる。カメラの回転、ズーム、自動フィット機能を備え、2Dモードと3Dモードを瞬時に切り替えられる柔軟な設計が特徴だ。DirectXによるハードウェアアクセラレーションを利用した、最新のグラフィックス実装プロセスを順を追って見ていこう。
DirectX 3D可視化フレームワークのアーキテクチャ

MQL5におけるDirectX 3D可視化フレームワークは、ハードウェアアクセラレーションを利用して、複雑な3Dシーンをチャート上に直接描画する。元記事の解説によれば、このアーキテクチャはキャンバスシステムと統合されており、シームレスな2D/3Dモードの切り替えとインタラクティブな操作を実現しているという。
具体的には、ヒストグラムのバーを表現するための「ボックス」、地面を表現する「プレーン」、そして空間の方向性を示す「軸」などの3Dオブジェクトを効率的にレンダリングする。カメラ位置、ライティング、投影行列を管理することで、2Dでは見えにくいデータのパターンを強調できるのが最大のメリットだ。
実装の青写真として、キャンバスの作成、3Dオブジェクトの初期化、シミュレーションデータのロード、およびリアルタイムのイベント更新を処理するクラスベースの構造が採用されている。これにより、ドラッグによる回転やホイールによるズームといった直感的なユーザー体験が可能になる。
MQL5による実装:ライブラリと入力パラメーター

3Dレンダリングを開始するには、まず適切なライブラリをインクルードし、ユーザーが実行時に設定を変更できる入力パラメーターを定義する必要がある。元記事では、3Dキャンバス機能をサポートする「Canvas3D.mqh」と、DirectXの基本形状を扱う「DXBox.mqh」が重要な役割を果たしている。
#include <Canvas\Canvas3D.mqh>
#include <Canvas\DX\DXBox.mqh>
#include <Math\Stat\Binomial.mqh>
enum ViewModeType {
VIEW_2D_MODE, // 2Dモード
VIEW_3D_MODE // 3Dモード
};
input ViewModeType viewMode = VIEW_2D_MODE; // 表示モードの選択入力パラメーターには、カメラの初期距離や角度、地面の色や不透明度、さらには3D軸の表示設定などが含まれる。これにより、トレーダーは自分の好みに合わせて視覚環境をカスタマイズできる。特に「autoFitCamera」設定は、データがロードされた際に最適な視点へ自動調整する便利な機能だ。
DistributionVisualizerクラスの設計と初期化

コードの組織化と拡張性を維持するため、ツール全体を単一のクラス「DistributionVisualizer」として構築する。このクラスは、キャンバスの状態、ウィンドウのジオメトリ、ユーザーの操作状態、3Dカメラの方向、およびDirectXシーン内の全オブジェクトを管理する役割を担う。
クラスの保護(protected)セクションでは、CCanvas3Dオブジェクトや、ヒストグラムのバーを格納するCDXBoxの配列、地面や軸のオブジェクトが宣言されている。また、統計的な指標(平均、標準偏差、歪度、尖度など)を保持する変数も含まれており、描画と計算が密接に連携する設計となっている。
コンストラクタでは、すべてのメンバー変数を安全なデフォルト値に初期化する。一方で、デストラクタ(~DistributionVisualizer)は極めて重要だ。記事によれば、DirectXのリソースは明示的に解放する必要があるため、デストラクタ内で各オブジェクトの「Shutdown」メソッドを呼び出し、メモリリークを防止しているという。
3Dオブジェクトの構築とカメラ制御ロジック

3Dシーンの核となるのは、ヒストグラムのバーの生成とカメラの制御だ。「create3DHistogramBars」関数は、設定されたビン(階級)の数に合わせてDXBoxを動的に割り当てる。各バーには、拡散色(DiffuseColor)や鏡面反射(SpecularColor)が設定され、奥行き感のある質感が与えられる。
カメラの制御においては、球面座標系を用いて視点を計算する。ユーザーの操作に応じて仰角(AngleX)と方位角(AngleY)を更新し、それらを回転行列(DXMatrixRotation)に変換してカメラの位置を決定する。以下のコードは、カメラ位置を更新するロジックの要約だ。
void updateCameraPosition() {
DXVector4 camera = DXVector4(0.0f, 0.0f, (float)(-m_cameraDistance), 1.0f);
DXMatrix rotationX, rotationY;
DXMatrixRotationX(rotationX, (float)m_cameraAngleX);
DXMatrixRotationY(rotationY, (float)m_cameraAngleY);
// 行列変換を適用して最終的な位置を決定
m_mainCanvas.ViewPositionSet(DXVector3(camera));
}さらに、ライティングの設定も重要である。光源を常にカメラの少し上に配置することで、どの角度から見てもバーの立体感が維持されるよう工夫されている。自動フィット機能(autoFitCameraPosition)は、データの最大値に基づいてシーン全体の対角線を計算し、最適な視野角(FOV)を確保する距離を算出する。
2Dオーバーレイとインターフェースの実装

3Dレンダリングが有効であっても、タイトル、統計パネル、凡例などのUI要素は2Dオーバーレイとして描画される。これは、DirectXで描画された3Dシーンの上に、従来のキャンバス描画関数を使用してテキストや図形を重ねる手法である。
特に興味深いのは、理論的な確率質量関数(PMF)曲線の投影だ。曲線自体は2Dの線として描画されるが、3D空間の座標をスクリーン座標に変換(投影)することで、あたかも3D空間内に曲線が浮いているかのように見せている。これには、ビュー行列と投影行列を組み合わせた変換行列が使用される。
また、2Dと3Dを切り替えるためのスイッチアイコンもヘッダーに配置されている。このアイコンはホバー状態を検知して色を変えるなど、インタラクティブなフィードバックをユーザーに提供する。統計パネルには、平均値や信頼区間(95%および99%)が表示され、視覚的な分析を数値で補完する仕組みだ。
マウス操作によるインタラクティブな制御

3D可視化ツールの真価は、その操作性にある。本ツールでは、マウスの左ボタンによるドラッグでシーンを回転させ、マウスホイールでズームイン・アウトを行う。これらの操作を実現するためには、MT5のチャートイベント(OnChartEvent)を適切にハンドリングする必要がある。
「handleMouseEvent」関数内では、マウスの移動量(デルタ)を計算し、それをカメラの回転角度に反映させる。この際、仰角が極点を超えて反転しないよう、-0.49πから0.49πの範囲にクランプ(制限)をかける処理が施されている。これにより、ジンバルロックのような不自然な挙動を回避している。
また、3D操作中はチャート自体のスクロール機能を一時的に無効化する(CHART_MOUSE_SCROLLをfalseにする)ことで、ユーザーが意図せずチャートを動かしてしまうのを防いでいる。操作が終了すると、再びスクロール機能が有効化される。このような細やかな配慮が、プロフェッショナルなツールの使い心地を支えている。
まとめ
MQL5とDirectXを組み合わせることで、MT5の標準機能を超えた高度な分析ツールを構築できる。今回紹介した3Dビジュアライザーは、二項分布という統計的な概念を、より直感的かつ深く理解するための強力な手段となる。元記事の著者は、今後さらに多くの統計分布への対応や、3Dビューのパン(平行移動)機能の追加も示唆している。
FX中級者以上のトレーダーにとって、自身のトレードデータの分布を3Dで観察することは、リスク管理や戦略の改善において新たな視点をもたらすだろう。DirectXの活用は一見ハードルが高いが、クラスベースの設計を理解すれば、独自のカスタムインジケーターやEAへの応用も十分に可能である。
出典
- MQL5「MQL5 Trading Tools (Part 23): Camera-Controlled, DirectX-Enabled 3D Graphs for Distribution Insights」

億トレーダーのエミリーです。
FXトレードで資産1億円を達成後、培った知識と経験を初心者にも分かりやすく伝えることをライフワークとしています。独自開発のブレイクアウト手法と徹底したリスク管理が特徴。
初心者の方でも着実にステップアップできるよう、基礎知識から高勝率なトレード手法まで徹底的に解説・検証しています。FXで一緒に夢を叶えましょう!

