MT5は拡張機能が充実している点で、他に類を見ない優れたプラットフォーム。AI開発言語で名高いPython(パイソン)とも連携させることが可能で、データサイエンスレベルの高度な分析が実現します。
MT5とPythonで具体的にどんなことができるのでしょうか。今回は、MT5とPythonの連携方法や基礎知識をわかりやすく解説していきます。ぜひ、ご参照下さい。MT5で自動売買や機械学習の可能性を追求したいトレーダーは必見です。
- MT5とPythonは連携できるのか?
- MT5でPythonを使うメリット
- MT5とPythonを連携させる方法
- Pythonを使ったバックテスト分析
- 機械学習や自動売買の応用事例
MT5にPython(パイソン)が連携できるのか?

MT5はチャートのカスタマイズ性や、豊富なテクニカルツール、MQL5というプログラミング言語で、独自のシグナルやEAが構築できることで有名なプラットフォームです。その他のソフトウェアとも連携させたりと、その拡張性の高さも大きな魅力です。ただ、AI開発言語で人気のPython(パイソン)とも連携できることは、まだあまり知られていません。
Pythonはシンプルで使いやすいうえに、機械学習機能も備えている優れた言語。

初めてのプログラミングに
おすすめの言語だと言われています。
最初にPythonをMT5に連携させる仕組みや、Pythonを使うメリットについて紹介します。
Pythonとは
そもそもPythonとはどのような言語なのでしょうか。
Pythonは、MicrosoftやDropboxにてエンジニアを務めていたGuido van Rossum(グイド・ヴァン・ロッサム)が開発したプログラミング言語で、1991年に初めて公開されました。シンプルであること、読みやすいことをモットーとしているため、初心者にも扱いやすいことで人気があります。
コーディングが簡潔でライブラリが豊富なため、AIや機械学習に最適な言語でもあり、Amazon・Dropbox・Netflix・YoutubeなどにPythonが使われています。
MT5ならMT4よりも比較的簡単に連携できる!
MT4でもPythonに連携できていたのですが、MT5では、PythonのAPIが正式に提供されているため、比較的簡単な操作でAPI連携できるようになっています。
大まかに言うと、MT5のデータをPythonに取り込んで、PythonからMT5が操作できるようになる、というものです。Pythonを介すことによって、MT5には備わっていない分析機能が使えるようになるのです。
APIとは
APIとは、”Application Programming Interface/アプリケーション・プログラミング・インターフェース”の略で、異なるアプリケーションをプログラミングして統合するシステムのことを言います。
APIのイメージ1


例えば、一番わかりやすい例がクレジットカードや銀行口座とスマホアプリのAPIです。スマホアプリのサービスで入力したクレジットカード情報で決済が行えるのは、APIで連携されているからです。
APIのイメージ2


APIによってMT5はデータをPythonに提供します。このデータとは正確には、すべてのローソク足の4本値(OHLC)のことす。Pythonは受け取ったデータを分析しトレードアイデアを導き出します。
Pythonを有効に使うためには、十分なデータが必要です。ヒストリカルデータの取得方法は、以下の記事でご覧頂けますのでしっかり用意しておきましょう。


Pythonライブラリとは
Pythonでは豊富なライブラリが使えることが魅力の1つです。しかしここで、ライブラリの概念がいまいち理解できない、という方もいるでしょう。プログラミングでいうところのライブラリについて解説します。


ライブラリとは、図書館の “Library/ライブラリ”を指す用語で、データの管理ホルダーのようなものです。すでに完成されているアプリケーションのプログラミングデータがライブラリに保管されています。
ライブラリの中に、1つのアプリケーションの主軸となる複数のパッケージが保管されています。パッケージはさらにモジュール単位に細分化することが可能で、モジュールの中に具体的なコーディングであるクラスや関数が記録されています。
グラフや映像を作成するライブラリ、データ分析や計算機能のライブラリ、情報収集のライブラリなど、新たなアプリケーションの作成にも、既存のライブラリを組み合わせて使えるので1から作成する必要がないのです。
すでに内臓されているライブラリと、外部からインポートできるライブラリの数が多いため、Pythonでは最短で手間をかけずにプログラミングが行えます。


MT5でPythonを使うメリット
Pythonが使えるだけで数多くのメリットがあります。
- Windows、Mac、LinuxとほとんどのメジャーなOSに対応 →書き換えなしで使える
- オープンソースで無料で使える
- プログラミング初心者にも扱いやすい
- 汎用性・拡張性が高い付加機能で自分仕様に展開できる
- AI・機械学習、数値解析の機能に優れている
※WSLのUbuntu経由ではダイレクトに利用できないことが報告されています。
MT5を使ってできること
Pythonの機能を活かしてMT5でできることは以下のとおりです。
- 長期のティックデータを取得して分析が可能
- Pythonからトレードの指示を出すことが可能
- PandasやNumPyなどを使った高度なデータ解析が実現する
- DjangoやFlaskなどを使って自動売買やシグナルが作成できる
PythonのAI解析・機械学習機能を、MT5のトレード分析・相場分析、EA・インジケーター・シグナルの作成、バックテストに使えるのです。
Flaskとは:Flask Users Guide
Pandasとは:Pandas User Guide


【超簡単!】MT5とPythonを連携させる方法


では次に、どのようにMT5とPythonを連携させるのかを画像つきで解説していきます。



まずはMT5のインストール、
次にPythonをインストールして
連携させていきます。
MT5インストール
MT5のインストールは、MetaTrader 5 の公式サイトから行えます。デモ版はFX業者がなくとも利用できますので、早速試してみましょう。







MT5は簡単にダウンロードできますが、
Pythonを使う準備が結構大変かもです。
一緒に頑張っていきましょう!
Pythonインストール
次にPythonをダウンロードします。2024年1月時点の、Python最新バージョンは「Python3.12」です。10月以降は「Python 3.13」がリリース予定です。
現時点では日本語版がありませんので、英語版公式サイトからダウンロードできます。


「Install Now」をクリックしてファイルをダウンロードします。


ファイルをクリックすると「PCに許可しますか?」と英語で出てきますので「YES」を選択します。


インストーラーが出てきますので、完了するまで待ちます。


Pythonターミナルを表示
Pythonがインストールされているかは、PC画面左下にあるWindowsマークの「Windowsメニュー」から確認できます。


メニューから「Python3.12」をクリックすると「Python3.12」のターミナルが表示されます。


メニューに表示されない時は、Windows検索から「コマンドプロンプト」を開いて、「python–version」でエンターを押すと「Python3.12」と表示されればインストールは完了しています。


コーディングターミナルとして、つねにPythonのターミナルを表示させたい時は「VS Code」をインストールする方法があります。
VS CodeでPythonコーディング・プラットフォームを作成
VS Codeとは、Visual Studio Codeのことで、さまざまなタイプのプログラミングに使えるプラットフォームです。
VS CodeにPythonをインポートしておけば、今後便利に使っていけます。




ダウンロードしたファイルを開いたら、「I accept the agreement」にチェックを入れて、「Next」を4回押すとインストール画面になり完了です。
インストールが完了したら、VS Codeを開いてWellcome画面から「Get Started with Python Development」を選択すると、VS CodeにてPythonが使えるようになります。


Marketplaceから「ms-python」で検索してインストールすることも可能です。


コーディングの画面に行くには、メニュー「File」→「New Text File」→「Select a Language」→「Python」で表示できます。


Pythonのコーディング画面に簡単に行けるように、空ファイルに名前をつけて保存しておくと簡単に開けるようになります。


例えば「Python File.py」と名前を付けて保存しておけば、メニュー「ファイル」からダイレクトに「Python File」の画面に行けるようになるのです。


VSCodeの日本語設定
VSCodeの日本語設定は、メニュー「View」→「Command Pallet」→「Configure Display Language」から「日本語」が選択できます。





色々やりすぎると混乱するかもですから、
VSCodeも使えると覚えておいて下さい。
VSCodeにPythonをインストールする方法はこちらから
MT5にPythonで使えるよう設定しておく
MT5のメニュー「ツール」→「オプション」を選択します。


「アルゴリズム取引を許可」にチェックを入れて、後の項目はチェックなしにして下さい。


MQL5 MetaEditorにPythonをインストール
MetaEditorのメニュー「ツール」→「オプション」を開きます。


オプションのメニュー「コンパイラ」を選択して、すでにPythonのアドレスが入力されていますので、「インストール」ボタンをクリックしてインストールしておきます。


ここで、あらかじめ入力されているPythonのバージョンが「Python3.9」となるケースが多いようです。その場合は、「Python3.9」を再度インストールするか、新たに「Python3.12」のファイルアドレスを入力し直す必要があります。
PythonにMT5のライブラリを追加
準備が整ったら、MT5のライブラリ(モジュール)をPythonに追加します。
pip install MetaTrader5
pipは、外部からモジュールをインストールする時に使うコマンドです。以下のように、PythonにMT5がインストールされます。


これで、PythonへのMT5ライブラリの追加が完了です。
PythonでMT5に接続する
では、いよいよPythonとMT5を接続します。MQL5を開いて、以下の手順でPythonを開きます。
メニュー「ファイル」→「新しいファイル」を選択して「Pythonスクリプト」にチェックを入れます。


次に、ファイル名「名前」に任意の名称を入力して「Next」です。


以下のように、Python Script にてMT5の情報が出てきたら、これで接続が問題なく完了です。PythonスクリプトからMT5にアクセスできるようになります。


MetaEditorのPythonスクリプトで作成するプログラムは、MQL5ではなくPythonです。従って、Pythonのルールに沿って作成していきます。メニュー「コンパイル」のクリックで実行です。
Command Prompt、MetaEditorやVSCode、あるいは各自で利用するターミナルを使ってPythonのコーディングが行えます。
PythonでMT5が操作できるか確認
きちんと操作できるかどうか、試しに「Print()」で何でもいいので入力してみます。
print(“MetaTrader5 Author “,mt5.__author__)
print(“MetaTrader5 Version “,mt5.__version__)
ジャーナルにMT5の名称、バージョン名が確認できたら接続OKです。





慣れないと結構大変かも。
でも、あきらめないで休憩しながら頑張る!
※PythonとMT5の連携はMQL5でも詳しく解説しています。
※Pythonのチュートリアルが日本語でも公開されています。詳しく勉強したい方はぜひご利用下さい。
Pythonを使ってティックデータを取得しよう


さて、これでPythonとMT5のの連携プレーを活用する準備が完了しました。早速、Pythonの本領を発揮してもらうために、ティックデータを挿入してデータ分析を行ってみましょう。



特定の期間におけるデータ分析方法と
EAバックテストを分析する方法を解説します。
データ分析ツールPandasをインストール
まず、数値・データを読み込む分析ツールPandasをインストールします。
pip install pandas


これでPandasがPythonに実装されました。
グラフ・描画ツールのMatoplotlibをインストール
次に、グラフや表、描画機能を持つMatoplotlibをインストールするコードの入力です。
pip install matplotlib


Matoplotlibのインストールが完了したので、分析結果のグラフ化も可能。
ティックデータを取得する
ティックデータやチャートの取得方法には、MQL5のコード・テンプレートが使えます。
MQL5のコード・テンプレートの一部


上記はコードの一部です。MQL5のテンプレートの一部を臨機応変に使用・変更することで、各自で必要なデータが取得できます。
例えば、通貨ペアEURAUDをUSDJPY、期間を2020年1月から2024年1月に変更してみましょう。
通貨ペアと期間の変更例


EURAUDの記載をすべてUSDJPYに変更。取得する期間をすべて2024年1月に変更。通貨ペアや期間が出てくるのはこの箇所だけではありませんので、全体をチェックしてすべて変更します。
USDJPY Tickデータ(pips表示)


通貨ペアや期間を変更して、「コンパイル」をクリックするとティックチャートが表示できます。1分足チャートなどと合わせて分析に使えます。
表示チャートの変更例
表示するチャートを変更したい時は、コードの一番最後の方にあるTicksFrameの通貨ペアを変更します。合わせてヘッダも変更してチャートの表示名を変えておきましょう。


AUDUSDティックチャート(1年)


取得したデータを見る


取得したデータは、ジャーナルから確認できます。ファイルでの出力も可能です。
様々なタイプの通貨ペアや期間を設定して、細かいデータ・チャートで分析に使えるのです。


MT5とPythonでEA分析や機械学習もできる!


では、最後にPythonとMT5で、市場分析からトレードレポート・EA分析や機械学習など、どんなことができるのかを紹介しておきます。



基本操作を覚えたら、
いくらでも展開していけるんです!
Quantstats:裁量トレード・EAバックテストを分析
Quantstatsはディープラーニングを基盤にしたデータ分析機能。Pythonのライブラリーの1つ。pipコマンドでQuantstatsをインストールして無料で使えます。
MT5のHTMLレポートをPandasで読み取って、HTMLに変換できる情報であれば、株式や仮想通貨・CFDなども分析可能です。比較チャートや月間/年間の損益データ・ドローダウンデータ・リターン率、などを計算してくれます。
MT5の裁量トレード・EAレポート


QuantStatsの分析イメージ


詳しい使い方・コーディング:MT5ストラテジーテスターレポートをPython「QuantStats」ライブラリで
QuantStatsコード情報:QuantStats – Github
Jupyter Notebook:データ解析からEA開発まで
Pythonするなら、ぜひ覚えておきたいのがJupyter Notebook(ジュピター・ノートブック)です。
ジュピターとは木星のことで、本来なら「Jupiter」と書くところですが、開発者のPythonへの思い入れからPython拡張子の「py」が採り入れられています。それほどに、Pythonが前提にあるデータ解析ツールなのです。
40以上の言語に対応、Webブラウザーでも気軽に使えて、優れた機能が豊富に搭載されていても無料で使えるのが嬉しい。
Jupyter Notebookの機能


- Jupyter Lab → コンピュータサイエンスを基盤にした開発・分析インターフェース
- Jupitae Notebook → Pythonのほとんどのライブラリと連携可能なプログラミングノート
- Jupyter Lite → GitHubに直結のコミュニティサイト
- Jupyter Wedgets → HTMLウィジェット
- Voila → すべてのデータや開発状況が管理できるプラットフォーム
Jupyterデータ分析のイメージ


Jupyter Notebookは、全く基礎的なことから高度な開発プロジェクトまで総合的に使っていけるツールです。
Pythonで自動売買コーディング
では、最後にPythonをきっかけに自動売買コーディングをする始めるコツをご紹介しておきましょう。
FX自動売買の基本設計
EAのプログラミング設計は以下の概要から構築されます。
- 4本値(OHLC)のデータを取得(ティックチャートのデータ)
- 4本値を基盤にテクニカル指標を計算
- テクニカル指標を基盤に売買条件を設定
- 売買条件を満たした場合の注文方式を設定
- 利確・損切ポイントを設定
- 上記を1つのループとして処理する
詳細は、トレーダーの戦略ごとに異なりますが、大まかな設計は以上のようになります。
ロジックの組み立て方
シンプルに自動売買のロジックを組み立ててみましょう。
- テクニカル指標を用いて売買条件を作成する
- 売買条件を満たす場合の「Buy」「Sell」の注文執行を組み込む
- 利確と損切の値幅を設定する
となり、これらの設定条件にPythonを使うことでEAの精度を高めていけます。Pythonの使い方や分析方法、自動売買の作成方法などはMQL5から豊富な情報が探せます。下記リンクを参考にしてみて下さい。
MQL5の参照リンク


MT5とPythonでトレードの可能性がグッと広がる!
MT5とPythonを組み合わせることで、情報収集や市場分析、機械学習にバックテスト分析、EA・シグナルの作成など、それぞれのトレード手法を深堀りしていくことが可能です。
ハードルは決して低いとは言えませんが、トレードの可能性がグッと広がることは間違えありません。興味がある方は、ぜひこの機会にチャレンジして見てください!
コメント コメント 0