以下の記事では、MetaTrader内で機械学習モデルの訓練と予測を自動的に繰り返すエキスパートアドバイザー(EA)を作成し、そのコード全文を掲載しています。このEAは、最新情報を定期的に取得し、自動でモデルの訓練を繰り返すため、市場の変動に対して柔軟に対応することが可能です。
このページでは、リンク先の記事で紹介されているML-EA(Machine Learning Expert Adviser)を稼働させるために必要な環境構築と、MetaTrader5(MT5)にML-EAをセットして実際に動かす方法について、初心者にもわかりやすい形で詳しく説明していきます。具体的には、FX専用VPSのセットアップ、MT5のインストール、Python環境の準備といった、ML-EAを運用するために必要となる工程を一つ一つ丁寧に解説します。環境構築や操作方法に不安がある方は、ぜひこのページを参考にしてください。
VPSの必要性
「バーチャル・プライベート・サーバー(Virtual Private Server、VPS)」は、あたかも自分専用の仮想PCがあるかのように機能するサーバーです。これは、機械学習を用いたFX自動売買において重要な役割を果たします。高度な計算やデータ処理が求められる機械学習モデルを運用しつつFX自動売買を行うためには、24時間365日安定した環境が必要だからです。
FX専用VPS「お名前.com デスクトップクラウド」の紹介
FX専用VPSとは、特にFX自動売買のために設計されたVPS(バーチャル・プライベート・サーバー)です。ここで紹介するFX専用VPSの【お名前.com デスクトップクラウド】は、デスクトップ利用に特化しており、サーバーの運用に不慣れな初心者でも簡単に使用できるように設計されています。
MT4やMT5の利用
「お名前.com」のFX専用VPSを使用すると、世界中で広く利用されているMetaTrader4(MT4)やMetaTrader5(MT5)といったFX取引プラットフォームを活用することができます。これらのプラットフォームは、高度なチャート機能やインジケーターを備えており、EA(Expert Advisor)として知られる自動売買プログラムの運用に最適です。これは、機械学習モデルを組み込んだ自動売買戦略を実行するのに特に重要です。
Pythonの利用
FX専用VPS「お名前.com デスクトップクラウド」は、デスクトップPCと同様に扱うことができます。これにはPythonのインストールと使用が含まれます。ユーザーは、通常のPCで行うように簡単にPythonをインストールし、FX自動売買システムの開発や管理に活用できます。この機能は、機械学習モデルを組み込んだ自動売買戦略のカスタマイズや最適化に特に有効です。
VPSの環境設定
VPSを契約して立ち上げた後、ML-EAを実際に動かすためにはいくつかの環境設定を行うことが必要です。ここでは、「お名前.com デスクトップクラウド」のFX専用VPSを例に進めます。
まず、FX専用VPS上のブラウザで以下のURLにアクセスしてください。
MT5のインストール
FX専用VPSにMetaTrader5(MT5)をインストールする必要があります。MT5のインストールについて不明点があれば、以下の記事を参考にしてください。MT5のダウンロードからインストール、基本的な設定方法までを詳しく説明しています。
Python環境の準備
機械学習はPythonを利用して行うので、FX専用VPSにPythonもインストールする必要があります。さらに、必要なライブラリもインストールしておく必要があります。以下の流れに沿ってください。
- こちらのリンクから、Pythonをダウンロードして起動します。今回は、Python3.9のWindows(64bit)用である「python-3.9.13-amd64.exe」をダウンロードした前提で話を進めます。
- “Add Python 3.x to PATH” をチェックし、Install now をクリックしてインストールが完了するのを待ちます。
- スタートボタンをクリックし、「Windows システム ツール」 の 「コマンド プロンプト」を起動します。
- コマンドプロンプト上で「pip install –upgrade pip」と入力し、Enterキーを押下します。「Successfully installed pip-24.0」のような表示が出れば、pipの更新が完了です。
- さらにコマンドプロンプト上で「pip install MetaTrader5」と入力し、Enterキーを押下します。「Successfully installed MetaTrader5-5.0.45」のような表示が出れば、MetaTrader5ライブラリのインストールが完了です。
- 同様の流れで、以下についてもインストールします。
- pip install pandas
- pip install scikit-learn
- pip install lightgbm
- LightGBMについては、上記のpipインストールだけでは上手く動作しないようです。「Microsoft Visual C++ 2015 再頒布可能パッケージ」が必要なので、こちらのMicrosoftのページから、「vc_redist.x64.exe」をダウンロードしてインストールします。
以上でPython環境の準備は一通り完了です。
Python環境のテスト
Python環境の準備が正しく完了しているかを確認してみましょう。これは、ML-EAでも使用している「バッチファイルからPythonスクリプトを実行する仕組み」が問題なく動作するかの確認も兼ねています。
FX専用VPSでは、ユーザー名が「C:\Users\MT4XXX-XX-XXXXX」のように「MT4〜」という形式で設定されていることが多いですが、これは各環境によって異なります。以降の説明では、パスを「C:\Users\[ユーザー名]」のように[ユーザー名]部分は置き換えて表現しますので、ユーザー名はご自身のものに置き換えてください。
テスト用Pythonスクリプトの作成
- 「C:\Users\[ユーザー名]」フォルダを開き、右クリックして「新規作成 > テキスト ドキュメント」を選択し、新しいテキストファイルを作成します。
- 作成したテキストファイルのファイル名を「test.py」に変更します。これにより、ファイルがPythonスクリプトとして認識されます。
- 「test.py」を右クリックして、「Edit with IDLE」を選択します。これによりPythonの統合開発環境であるIDLEが開きます。
- 以下のテスト用のPythonコードをIDLEにコピペします。コードをコピーした後、ファイルメニューから「保存」を選択し、IDLEを閉じます。
# 必要なライブラリをチェックするスクリプト import sys def try_import(library_name): try: __import__(library_name) print(f"ライブラリ '{library_name}' のインポートに成功しました。") except ImportError: print(f"エラー: ライブラリ '{library_name}' をインポートできませんでした。インストールが必要です。") # チェックするライブラリのリスト libraries = [ "pandas", "lightgbm", "joblib", "sklearn.model_selection", "sklearn.preprocessing", "sklearn.metrics" ] # 各ライブラリをチェック for lib in libraries: try_import(lib) # スクリプト終了 sys.exit(0)
テスト用バッチファイルの作成
- 「C:\Users\[ユーザー名]」フォルダで右クリックし、「新規作成 > テキスト ドキュメント」を選択して新しいテキストファイルを作成します。
- 作成したテキストファイルのファイル名を「test.bat」に変更します。これにより、ファイルがバッチファイルとして認識されます。
- 「test.bat」を右クリックして、「編集」を選択します。これによりテキストエディタが開きます。
- 以下のバッチファイルのコードをテキストエディタにコピペします。ここでの[ユーザー名]やPythonのバージョン(ここでは「Python39」)は、各自の環境に合わせて適切に置き換える必要があります。コードをコピーした後、ファイルメニューから「保存」を選択し、テキストエディタを閉じます。
@echo off
C:\Users\[ユーザー名]\AppData\Local\Programs\Python\Python39\python.exe C:\Users\[ユーザー名]\test.py
pause
テストの実施
作成した「test.bat」は、Pythonスクリプト「test.py」を実行するためのバッチファイルです。そしてこの「test.py」は、特定のPythonライブラリがシステムにインストールされているかを確認するためのスクリプトです。
「test.bat」をダブルクリックすると、「test.py」が実行され、コマンドプロンプトのウィンドウが開きます。以下のライブラリ(ML-EAで実際に使用するもの)をチェックするプログラムです。
- pandas
- lightgbm
- joblib
- sklearn.model_selection
- sklearn.preprocessing
- sklearn.metrics
ご覧のように表示されれば、全てのライブラリのインポートに成功していることがわかります。
失敗した場合は「エラー: ライブラリ ‘ライブラリ名’ をインポートできませんでした。インストールが必要です。」というメッセージが表示されますので、該当のライブラリのインストールを確認してください。
ML-EAの設置と稼働
さて、いよいよ実践です。ML-EAに必要なファイルを設置して動かす工程に進みます。必要なファイルは以下の記事から用意してください。
ML-EAを稼働するためには、以下の5つのファイルを設置することが必要です。
- ML-EA_note.ex5(MT5にセットするEA)
- train.bat(train.pyを実行するためのバッチファイル)
- predict.bat(predict.pyを実行するためのバッチファイル)
- train.py(機械学習モデルの訓練を行うためのPythonスクリプト)
- predict.py(機械学習による予測を行うためのPythonスクリプト)
「ML-EA_note.ex5」の作成
MT5には「ML-EA_note.ex5」をセッティングしますが、「ML-EA_note.mq5」から作成する必要があります。ダウンロードした「ML-EA_note.mq5」はそのまま使えず、実際に稼働するためには少しコードを編集してからコンパイルを行う必要があリます。
まずは「ML-EA_note.mq5」を「MQL5 -> Expertsフォルダ」に保存してから、ダブルクリックすると、MetaEditorが起動します。
MetaEditorが立ち上がったら、編集する必要があるのは、以下の箇所です。
この[ユーザー名]をご自身のものに置き換えてください。
[ユーザー名]と[ターミナルID]の確認方法
MT5あるいはMetaEditorの「ファイル」->「データフォルダを開く」をクリックします。
すると、以下のMQL5のパスが確認できますが、そこに表示されているものが[ユーザー名]と[ターミナルID]です。これらをコピペすればOKです。
[ユーザー名]を変更したら、MetaEditorの上の方にある「コンパイル」というボタンをクリックしてください。
すると、「ML-EA_note.ex5」というファイルが、「MQL5 -> Expertsフォルダ」に作成されます。
以上で、「ML-EA_note.ex5」の準備は完了です。
バッチファイルとPythonスクリプトの設置
以下の4つのファイルは、全て「C:\Users\[ユーザー名]」フォルダの直下に置いてください。
- train.bat(train.pyを実行するためのバッチファイル)
- predict.bat(predict.pyを実行するためのバッチファイル)
- train.py(機械学習モデルの訓練を行うためのPythonスクリプト)
- predict.py(機械学習による予測を行うためのPythonスクリプト)
バッチファイルの編集
「train.bat」を右クリックして、「編集」を選択します。これによりテキストエディタが開きます。そして、以下のコードの[ユーザー名](2箇所)をご自身のものに置き換えます。「predict.bat」についても同様に[ユーザー名](2箇所)を変更します。
train.bat
predict.bat
Pythonスクリプトの編集
「train.py」を右クリックして、「Edit with IDLE」を選択します。これによりPythonの統合開発環境であるIDLEが開きます。そして、以下の[ユーザー名]と[ターミナルID]をご自身のものに置き換えます。「predict.py」についても同様に、以下の[ユーザー名]と[ターミナルID]を変更します。
train.py
predict.py
ML-EAのパラメータ設定から起動まで
今回は、XMのデモ口座でGOLDの取引を行う想定で進めます。
チャートにEAをセット
まず、エキスパートアドバイザ内の「ML-EA_note.ex5」を、GOLDのチャートにドラッグ&ドロップします。
“仕様”タブ
すると、以下のような画面が立ち上がりますので、「仕様」タブで「DLLの使用を許可する」にチェックを入れます。
“共有”タブ
また、共有タブで「アルゴリズム取引を許可」にチェックが入っているかを確認します。
“インプット”タブ
あとはインプットの設定ですが、デモ口座でお試しで動かす程度であれば、以下の通りデフォルトでもとりあえず問題ありません。
EAを稼働(自動売買を開始)
MT5のチャートの上の方にある「アルゴリズム取引」というボタンをクリックすると、稼働開始します。以下のように、「アルゴリズム取引」のボタンのところが緑色の▷になっていることを確認してください。
稼働停止中(自動売買オフ)
稼働中(自動売買オン)
ML-EAの動作確認(LightGBMモデルの訓練)
このML-EAは、起動時(EAセット時)にLightGBMモデルの訓練を行う仕組みになっています。したがって、EAをセットしてDLLの使用やアルゴリズム取引を許可している状態であれば、まず以下のようにコマンドプロンプトが立ち上がって、LightGBMの訓練が行われます。
もし起動しない場合は、改めてEAをセットし直してみてください。
問題なく訓練が行われていると、「C:\Users\[ユーザー名]」フォルダの直下に「training_data_MQL5.csv」および「model_evaluation_MQL5.txt」というファイルが作成されているはずです。
訓練用データ(training_data_MQL5.csv)
1分足のMAに合わせて、それぞれの時間帯における、5分足のMA、15分足のMA、1時間足のMAを連結しています。また、1分足の終値(Close)および、1時間後に終値が0.1%以上上昇していればy=1、0.1%以上下落していればy=2、それ以外はy=0という計算を行った結果も出力しています。
以上の情報を直近1,000時間分出力していて、これをInputとしてモデルの訓練を行います。
モデルの評価結果(model_evaluation_MQL5.txt)
訓練したモデルについて、評価結果を出力するようにしています。以下の記事の中で各指標の意味と見方を解説していますので、詳細はそちらをご参照ください。
ML-EAの動作確認(LightGBMモデルによる予測)
EAの稼働を開始したら、スプレッドが指定した許容スプレッドを超えていない限り、1分間隔でLightGBMモデルによる予測を行います。訓練時と同様にコマンドプロンプトが立ち上がりますが、処理が速すぎてすぐ閉じてしまうので内容はよくわからないかもしれません。
結果は、「C:\Users\[ユーザー名]」フォルダの直下に「prediction_results_MQL5.txt」というファイルが作成されますので、そこで確認します。
モデルによる予測結果(prediction_results_MQL5.txt)
予測時刻と、三値分類モデルなので予測結果が0, 1, 2となるそれぞの確率を出力しています。例えば一番下の結果であれば、92.08%で予測結果は1となります。つまり、order_flg=1がMT5に連携されて、buyエントリーフラグが立つという形です。
まとめ
以上、ML-EA(Machine Learning Expert Adviser)をダウンロードした方々に向けて、VPSのセットアップからMT5のインストール、Pythonの設定、そしてML-EAを実際に稼働させるための方法までをご紹介しました。
改めて、ML-EAのロジックやコード詳細については以下の記事をご参照ください。
なお、今回作成したのはあくまでML-EAのベースモデルであり、様々なロジックに拡張する土台でもあります。今後も拡張していくための取り組みをまとめた記事を公開していく予定ですのでよろしくお願いします。