モデルの作成

ONNXフォーマットで準備が整ったモデルを取得するには、複数の方法が使用できます。人気のあるONNX Model Zooライブラリには、さまざまな種類のタスク用に事前訓練された複数のONNXモデルが含まれています。このコレクションの良いところは、各モデルのノートブックに訓練データセットへのリンクと、モデルアーキテクチャを説明する元の論文への参照が含まれていることです。

ほとんどの機械学習フレームワークはPythonを使用します。Python用のONNXランタイムをインストールするには、次のコマンドのいずれかを使用します。

pip install onnxruntime       # CPU build
pip install onnxruntime-gpu   # GPU build

PythonでONNXランタイムを呼び出すには、次のコマンドを使用します

import onnxruntime
session = onnxruntime.InferenceSession("path to model")

モデル入力出力については、関連するモデルのドキュメントを確認してください。NetronWinML Dashboardなどの視覚化ツールを使用してモデルを表示することもできます。ONNXランタイムでは、モデルのメタデータとその入力と出力をクエリすることもできます。

results = session.run(["output1", "output2"], {
                    "input1": indata1, "input2": indata2})
results = session.run([], {"input1": indata1, "input2": indata2})

ONNXモデルは、MetaTrader 5ターミナルで直接作成することも、Pythonを使用してMetaEditorで作成することもできます。

MetaTrader 5でのPython

MetaTrader 5は、すぐに使える Python スクリプトのサポートを備えています。これらの操作を可能にするために、ターミナルの開発者はPython用のMetaTrader 5モジュールhttps://pypi.org/project/MetaTrader5をが提供しています。

MetaEditor統合開発環境では、MQL5でアプリケーションを作成するだけでなく、エディタからPythonスクリプトを直接実行することもできます。これを行うには、MetaEditorの設定で実行可能ファイルへのパスを指定します。

MetaEditor設定でPython実行可能ファイルへのパスを設定する

Pythonがコンピュータにインストールされていない場合は、[インストール]をクリックしてインストールファイルをダウンロードしてください。

MetaEdtiorでPythonスクリプトを作成することも、ターミナルのデータフォルダーにアップロードして、F7(コンパイル)キーを使用してすぐに実行することもできます。これにより、MetaTrader 5ターミナルが開かれ、現在のチャートでスクリプトが実行されます。Pythonコンソール(stdout、stderr)からのメッセージは、エラーセクションに表示されます。

MetaTrader 5でのモデルの操作

MQL5言語を使用すると、MetaTrader 5ターミナルでONNXモデルを直接実行できます。これは3つの手順で行われます。

  1. Pythonなどのサードパーティプラットフォームでモデルを訓練します。
  2. モデルをONNXに変換します。
  3. ONNX関数を使用してONNXモデルをエキスパートアドバイザーに組み込み、MetaTrader 5 ターミナルで実行します。

MQL5のPython統合により、Pythonスクリプトを実行してONNXモデルをMetaEditorに保存したり、MetaTrader 5のチャート上で直接実行したりできます。事前に作成されたPythonスクリプトを使用して、ターミナルで必要なだけ何度でもモデルを訓練できます。このライブラリには、ONNXモデルに入力できる価格データを取得するための既製の関数が含まれています。

 

モデルの例 #

完成したONNXモデルの例は、公開プロジェクトで入手できます。まず、MetaEditor設定でMQL5ログインを指定して(大文字と小文字を区別します)、ナビゲータで MQL5ストレージをアクティブにする必要があります。

activate_storage

アクティブにした後、ONNX.Price.Predictionプロジェクトを見つけて、コンテキストメニューコマンドを使用して参加します。

project_join

 

次に、MQL5ストレージからプロジェクトを更新します。

update_project

プロジェクトには、ONNXモデル、2つのPython スクリプト、プロジェクト操作用のMQL5スクリプト、MQL5プロジェクトファイル(ONNX.Price.Prediction.mqproj)が含まれています。

python_script

 

 

プロジェクトに含まれているPricePredictionTraining.pyスクリプトを使用して、ONNXモデルを自分で作成できます。これを行うには、まずコマンドラインから必要なモジュールをインストールする必要があります。

python.exe -m pip install --upgrade pip
python -m pip install --upgrade tensorflow
python -m pip install --upgrade pandas
python -m pip install --upgrade scikit-learn
python -m pip install --upgrade matplotlib
python -m pip install --upgrade tqdm
python -m pip install --upgrade metatrader5
python -m pip install --upgrade onnx==1.12
python -m pip install --upgrade tf2onnx
python -m pip install --upgrade numpy
python -m pip install onnxruntime

モジュールをインストールした後、MetaEditorでPricePredictionTraining.pyスクリプトを開き、[コンパイル]ボタンまたはF7キーを使用して実行します。

python_script_compile

 

Pythonスクリプトを実行する前に、MetaTrader 5ターミナルがEURUSD銘柄を使用できるサーバに接続されていることを確認してください。たとえば、MetaQuotes-Demoサーバに接続し、ターミナル設定で[Pythonとの統合]をオンにします。

terminal_py_integration_check_box

 

ネットワークの訓練中、MetaEditorはトレーニングが完了するまでPythonスクリプトからのメッセージを出力します。

onnx_model_ready

 

結果が100%になると、ONNXモデルの準備が完了し、<ターミナルデータディレクトリ>\MQL5\Shared Projects\ONNX.Price.Prediction\Pythonプロジェクトフォルダに保存されます。

F7を押して2番目のスクリプトPricePrediction.pyを実行すると、結果のモデルを確認できます。

prediction_result