ONNXモデルとは?
ONNX(Open Neural Network Exchange)は、異なる機械学習フレームワークやツールの間で、モデルを互換的に利用できるようにするためのオープンソース形式です。Microsoft、Facebook、Amazonなどの大手企業によってサポートされています。
ONNXを使用すると、たとえばPyTorch(動的グラフを用いた機械学習フレームワーク)やTensorFlow(Googleが開発した機械学習のフレームワーク)といった異なる機械学習フレームワーク間で、簡単にモデルを変換し共有することができます。これにより、ツールごとに学習や推論(機械学習モデルが入力データに基づいて予測を行うこと)を使い分けられるため、開発の柔軟性が向上します。
ONNXは、特定のツールに依存しない汎用性を提供し、モデルの再利用や他のプラットフォームでの動作を容易にします。特に金融市場における自動取引などでは、複数のツールで学習したモデルをMetaTrader5のようなプラットフォームに統合して利用することが可能です。
また、ONNXはモデルの実行効率を高めることも考慮されています。たとえば、モデルの軽量化や最適化が行いやすく、リアルタイムの予測を必要とするシステムでも効果的に機能します。このため、金融取引やそのほかの産業領域での活用が広がっています。
MQL5との関係
MQL5は、MetaTrader5の取引プラットフォームで使用されるプログラミング言語で、ONNXモデルのサポートを備えています。これにより、金融取引戦略に機械学習を組み込むことができ、予測や判断を自動化することで取引の効率化が図れます。
MQL5はONNXモデルを利用して、取引戦略の最適化やシグナル生成などに応用可能です。ストラテジーテスターを使って履歴データを使用し、リアルタイムのデータに基づくモデルのテストや調整が可能です。
MQL5で利用可能なONNX関連関数
MQL5はONNXモデルを操作するために、いくつかの専用関数を提供しています。これらの関数を活用することで、モデルの読み込みや実行、入出力の取得が可能になります。
OnnxCreate関数
OnnxCreate関数は、ONNXセッション(モデルを実行するための環境)を作成し、指定したファイルからモデルを読み込みます。これにより、モデルをMQL5の環境で使用できるようにします。
OnnxCreateFromBuffer関数
OnnxCreateFromBuffer関数は、ファイルではなく、データ配列からモデルを読み込む場合に使用します。オンメモリ(メモリ上で直接データを処理する方法)での処理に便利です。
OnnxRelease関数
OnnxRelease関数はONNXセッションを閉じ、リソースを解放します。使用後にはこの関数で不要なセッションを終了させます。
OnnxRun関数
OnnxRun関数はロードしたモデルを実行し、推論を行います。予測や分類など、モデルに応じた出力を得る際に使用します。
OnnxGetInputCount関数
モデルの入力数を取得します。モデルに複数の入力がある場合、この関数で確認できます。
OnnxGetOutputCount関数
モデルの出力数を取得します。複数の出力を持つモデルに対して、各出力の管理に役立ちます。
OnnxGetInputName関数
指定したインデックス(通し番号)に基づき、モデルの入力名を取得します。入力データのマッピングに使用します。
OnnxGetOutputName関数
指定したインデックス(通し番号)に基づき、モデルの出力名を取得します。結果のマッピングに役立ちます。
OnnxGetInputTypeInfo関数
モデルの入力型に関する情報を取得します。入力データの適切な型を確認するために重要です。
OnnxGetOutputTypeInfo関数
モデルの出力型に関する情報を取得します。出力の型に合わせた処理を行う際に利用します。
OnnxSetInputShape関数
OnnxSetInputShape関数は指定したインデックスの入力データの形状を設定します。データ形式が固定されていない場合に使用します。
OnnxSetOutputShape関数
OnnxSetOutputShape関数は指定したインデックスの出力データの形状を設定します。モデルの出力が可変の場合などに対応できます。
上記の関数群を利用して、MQL5でONNXモデルを操作し、取引戦略に応用することが可能です。
補足:モデルとは?
機械学習における「モデル」とは、与えられたデータに基づいて予測や分類を行うための数学的な構造です。モデルは「パターンを学習する仕組み」と言い換えることができます。
例えば、画像を認識するモデルは、過去に学習した画像データを使って新しい画像を分類します。
また、テキストデータを分析するモデルでは、文章の中から感情を読み取ることができます。もう一つの例として、株価の予測モデルは、過去の市場データをもとに未来の価格を予測します。
このように、モデルは様々な種類のデータを処理し、異なる問題に対して役立つ「予測や判断のための仕組み」として広く使われています。