PR

【MQL5標準インクルードファイル】機械学習関係の「Math¥Alglib」

標準ライブラリ

― EA開発・機械学習・統計処理の強い味方をわかりやすく解説 ―


MetaTrader5(MQL5)には、最初から高性能な数学・統計ライブラリ「ALGLIB」 が入っています。
しかも「インクルードするだけ」でプロ級の数値計算ができるため、
機械学習EAや統計EAを作る人にとっては必要不可欠な存在です。
この記事では、難しい説明をできるだけ省き、初心者でも理解できる言葉で ALGLIB の重要ポイント をまとめます。

WAN
WAN

MQL5言語でどれくらい機械学習ができるか調査してみたよ(‘Д’)

1. ALGLIB は「MQL5版の巨大な数学セット」

MQL5 の Math\Alglib\ フォルダには、
線形代数(行列計算)・最適化(パラメータ調整)・FFT・統計・機械学習 など
EAを作る上でほぼ全部そろったツールが入っています。
例えるなら…
ALGLIB = “数学とデータ分析のスイスアーミーナイフ”
必要な機能を1つずつ使えば、
PythonやC++でないと難しい処理も MQL5だけで完結 できます。

2. ALGLIB の中心ファイル(心臓部)

■ alglibinternal.mqh
ALGLIB 全体の「土台」。
どの機能を計算できるか(線形代数、統計、FFTなど)がここにまとまっています。
※ 料理で例えるなら「キッチンそのもの」。

3. 基本インフラ(よく使う下支え部分)

■ alglib.mqh
MQL5 から ALGLIB を簡単に使えるようにまとめた「総合API」。
CAlglib クラスを通して多くの関数を呼び出します。
■ ap.mqh
配列の便利処理(サイズ変更、安全なアクセスなど)をまとめた部分。
■ matrix.mqh
行列(2次元の数字の表)のクラス。
線形代数や機械学習では必須。
■ arrayresize.mqh
テンプレート版 ArrayResize。サイズ調整を安全にするツール。
■ delegatefunctions.mqh
「関数を渡すための仕組み」。
最適化や微分方程式で使う「コールバック関数」を作るために使います。

4. 線形代数(行列・ベクトル計算)

EAでフィルターを作ったり機械学習の重み計算をするときに必要。
■ linalg.mqh
Cholesky 分解(行列をバラして高速計算する技法)
SVD(機械学習の次元圧縮などで使われる)
Sparse 行列(スカスカの行列)対応
Python の NumPy 並みのことが MQL5 でできます。

5. FFT(高速フーリエ変換)

■ fasttransforms.mqh
周波数成分を調べるときに使います。
EAでよくある用途:
ボラティリティの周期性を分析
ノイズを除去
チャートの波形解析
FFTプランを再利用するので速度も速い。

6. 数値積分・微分方程式

■ integration.mqh
厳密に積分できない式を「数値的に」計算してくれる部分。
Gauss-Legendre など専門的な方法が使えます。
■ diffequations.mqh
「常微分方程式」を解くツール。
機械学習EAでシグナルの平滑化モデルの内部計算にも使えます。

7. 特殊関数・統計解析

■ specialfunctions.mqh
ガンマ関数
対数ガンマ
不完全ガンマ
カイ二乗 CDF
金融で必要な統計検定や分布計算がそのまま使えます。
■ statistics.mqh
相関係数(ピアソン)
t検定
Welch検定
有意性検定
EAの「学習結果レポート」に役立ちます。

8. 最適化(パラメータ調整)

EA開発でとても重要。
■ optimization.mqh
L-BFGS(高速なパラメータ最適化)
制約付き最適化
LM法(Levenberg-Marquardt)
複雑な関数の「最適な値」を探す時に使います。
■ solvers.mqh
連立方程式・非線形方程式を解くソルバ。
「NeedF」「NeedJ」など関数の種類によって呼ばれ方が変わります。

9. データ分析・機械学習

AI系EAを作る人はここが一番重要。

● ランダムフォレスト
dataanalysis.mqh の CDecisionForestBuilder
MQL5本体にランダムフォレストが入っていることに驚く人も多いです。
特徴量のサブサンプリング
Gini / OOB / Permutation重要度
決定木の本数調整
Python の scikit-learn みたいなことができます。

● K-means(クラスタリング)
CKMeans
k-means++ 初期化
距離計算の高速化
価格の似た動きをまとめたり、相場の状態を分類する用途で便利。

● 多クラスロジット(分類)
CLogit
複数クラス分類(上昇・下降・横ばいなど)に使えます。

● 多層パーセプトロン(MLP)
CMLPBase
MLPCreate
前処理
パラメータ抽出
ONNX化には向かないですが、MQL内で軽いNNを作ることができます。

● スプライン補間
CSpline1D / LogisticFit4
価格データを滑らかにしたい時に使えます。
ロジスティック曲線フィットも可能。

10. 実際の使い方の流れ

ALGLIBはどの機能もだいたい共通した流れで使えます。
1. 状態(オブジェクト)を作る

2. パラメータを設定する

3. Iterate / Run で計算してもらう 4. 結果を取得する


PythonでもC++でもおなじみの手順なので、MQL5でも迷いません。

11. まとめ

ALGLIB は以下の “古典的” 機械学習はできます:

  • ロジスティック回帰
  • 多クラスロジット
  • 決定木
  • ランダムフォレスト
  • k-means
  • スプライン補間
  • MLP(小規模な多層パーセプトロン、三層ニューラルネットワーク)

しかし…

  • LSTM・GRU・Transformer などの深層学習
  • 勾配ブースティング(GBDT)系モデル

は ALGLIB 内には存在しません。

WAN
WAN

個人的にはMLPとランダムフォレストができればかなり十分!


これだけの機能が最初から入っている言語は非常に珍しく、
MQL5は実は“科学計算が強いトレード言語” でもあります。
EA開発やAIトレードをするなら、このライブラリを知っておくことで
Pythonなしでも高レベルな分析や最適化が可能になります。

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