ホーム » FX自動売買基礎と応用 » 【MT5 API入門②】PythonとMT5を接続する方法

【MT5 API入門②】PythonとMT5を接続する方法


この記事は「MT5 APIではじめるPythonシステムトレード入門」シリーズの第2回として、MT5 APIを用いてPythonとMT5を接続する方法を解説します。

PythonとMT5を接続するための手順は以下の通りです。

  • 1. 専用モジュール「MetaTrader5」をインストールする
  • 2. Pythonを実行するPCでMT5(アプリケーション)を立ち上げる
  • 3. Python上で接続のためのコードを動作させる
※この記事はAPIトレードに関する知識を提供することを目的としています。
技術的なお問い合わせは受け付けておりません。技術的な課題はお客様ご自身で解決をお願いいたします。

MetaTrader5モジュールのインストール

PythonでMT5を操作するために、専用モジュール「MetaTrader5」をインストールする必要がありますが、その前に「モジュールをインストールする」とは、どういった意味や目的があるのかについて解説します。

モジュール、パッケージ、ライブラリについて

モジュールとは、プログラムで汎用的に利用できる関数や変数などをあらかじめ記述した拡張子.pyファイルのことを示します。

例えば、プログラミングするときに「平均値」を計算する必要が発生したとします。

平均値を計算するコードを最初から記述することもできますが、この「平均値を計算するコード」をあらかじめ関数化しておき、モジュールとして保存しておくことができます。

このような事前の準備があると、モジュールから「平均値を計算する関数」を呼び出すだけで、毎回「平均値を計算するコード」を書かずとも簡単に平均値の計算が可能になります。

パッケージは複数のモジュールをまとめたフォルダを示す言葉で、ライブラリはモジュールやパッケージをひとまとめにしたセットのような意味があります。

MT5API_2_01

ライブラリやモジュールのインストールとは

ライブラリ(パッケージやモジュールも含む)は自分で作成することもできますが、Python用の多くのライブラリはオープンソースとして公開されており、それを利用可能です。

オープンソースとは、誰でも利用・改良・配布できる仕組みです。

このような無料で公開されているライブラリは、自身のPCにインストールすることで自由に利用できます。

MetaTrader5モジュールのインストール

MetaTrader5モジュールは、PythonからMT5を操作するための機能を事前にまとめたファイルです。

MetaTrader5モジュールをインストールすることで、これを利用可能になります。

インストール方法はpandasなどの通常のライブラリをインストールする手順と同様です。

コマンドライン(ターミナル、コマンドプロンプト、アナコンダプロンプトなど)からインストールが可能です。

【インストール】


pip install MetaTrader5

【アップデート】


pip install --upgrade MetaTrader5

最新のバージョンはPyPIの該当ページ で確認できます。

MT5の稼働

MT5 APIは、すでに稼働しているMT5を、同一PC上のPythonプログラムから操作するための仕組みです。

そのため、口座に接続したMT5をバックグラウンドで稼働させておく必要があります。

この際にMT5内でのアカウント事前登録も必要です。

MT5API_2_02

Pythonで開発している段階では、意図しない注文の送信を避けるため、MT5上ではデモ口座を稼働させておくことが推奨されます。

Python上からの接続

ここまで準備が整ったら、以下のPythonコードを実行して、MT5に接続します。

ここでは接続が成功したときに確認のため、MT5のログインIDを取得しています。


import MetaTrader5 as mt5

# MT5との接続を開始
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
    
# アカウント情報を取得
account_info_dict = mt5.account_info()._asdict() 

# MT5との接続を切断
mt5.shutdown()

print(account_info_dict['login'])

このコードは次のような流れで動作します。

  • 1. MT5に接続
  • 2. 接続に失敗したらエラーコードを出してプログラムを終了
  • 3. 接続されたら、MT5からアカウント情報を取得
  • 4. MT5との接続を切断
  • 5. 取得したアカウント情報の中からログインIDを表示

実行後に、現在MT5で接続中のアカウントのログインIDが表示されれば、接続が成功したことを意味します。


mt5.initialize()

このコードがMT5との接続を開始するための指示です。


# MT5との接続を開始
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()

このように記載することで、MT5が稼働していないなどの理由で接続が失敗した場合に、エラーメッセージを表示してプログラムを停止させるようにしています。

プログラムを書くときの注意として、mt5.initialize()で稼働中のMT5に接続したあとは、mt5.shutdown()で切断する必要があります。

リソースを無駄に消費したり、将来的にコードが複雑になっていくとエラーの発生にもつながるため、接続したあとは必要がなくなったら速やかに切断することが望まれます。

MT5を立ち上げながら接続する方法

MT5 APIを利用するためには、MT5アプリケーションをあらかじめ立ち上げておく必要があると説明しましたが、その手間を省いてPythonプログラムの実行とともに自動的にMT5アプリケーションを立ち上げさせる方法があります。

mt5.initialize()の引数として、terminal64.exeへのパスを入力することで、MT5がバックグラウンドで起動していない状態から、MT5を立ち上げながら接続することが可能です。

terminal64.exeとは、MT5を立ち上げるときに実行するファイルのことです。

パス(保存場所)を知りたいときは、デスクトップのMT5のショートカットアイコンやスタートメニューのMT5を右クリックし、「ファイルの場所を開く」を選択すると調べることができます。

MT5API_2_03


# terminal64.exeへのパス
path = "C:/Program Files/MetaTrader 5/terminal64.exe"

# MT5に接続
if not mt5.initialize(path):
    print("initialize() failed, error code =",mt5.last_error())
    quit()
    
# アカウント情報を取得
account_info_dict = mt5.account_info()._asdict() 

# MT5との接続を切断
mt5.shutdown()

print(account_info_dict['login'])

接続するコードを上記のように書くことで、MT5アプリケーションを立ち上げながら接続することが可能になります。

また、複数のブローカーを利用している場合は、PC内に複数のMT5のアプリケーションが共存していることがありますが、どのMT5アプリケーションを立ち上げたいかは、terminal64.exeへのパスによって制御することができます。

任意のMT5アカウントに接続する方法

1つのPCで複数のMT5アカウントを利用している場合は、Pythonで接続する際に目的とするアカウントを指定できるほうが良いこともあります。

「デモ口座でPythonの動作確認をするつもりが、本番口座に接続されてしまった」というような事態を避けるためにも、任意のアカウントに接続する方法を確認しておきましょう。

mt5.initialize()の引数として以下の3つを指定することで、任意のアカウントに接続できます。

  • ● サーバ
  • ● ログインID
  • ● パスワード

# terminal64.exeのパス
path = "C:/Program Files/MetaTrader 5/terminal64.exe"

# MT5に接続
if not mt5.initialize(path, server="OANDA-Japan MT5 Demo", login=0123456789,  password="xxxxxxxxx"):
    print("initialize() failed, error code =",mt5.last_error())
    quit()
    
# アカウント情報を取得
account_info_dict = mt5.account_info()._asdict() 

# MT5との接続を切断
mt5.shutdown()

print(account_info_dict['login'])

引数に渡す情報は、MT5でログインするときの入力項目と同一です。

MT5API_2_04

コードを実行しログインに成功すると、入力したアカウントにMT5側も自動的に切り替わり、Python側の接続が開始されます。

シリーズ第2回となった本記事では、PythonとMT5を接続する方法を解説しました。

第3回は、接続されたMT5からデータを取得する方法について解説します。

本記事の執筆者:藍崎@システムトレーダー

               
本記事の執筆者:藍崎@システムトレーダー 経歴
藍崎@システムトレーダー個人投資家としてEA開発&システムトレード。
トレードに活かすためのデータサイエンス / 統計学 / 数理ファイナンス / 客観的なデータに基づくテクニカル分析 / 機械学習 / MQL5 / Python

EA(自動売買)を学びたい方へオススメコンテンツ

EA運用の注意点

OANDAではEA(自動売買)を稼働するプラットフォームMT4/MT5の基本的な使い方について、画像や動画付きで詳しく解説しています。MT4/MT5のインストールからEAの設定方法までを詳しく解説しているので、初心者の方でもスムーズにEA運用を始めることが可能です。またOANDAの口座をお持ちであれば、独自開発したオリジナルインジケーターを無料で利用することもできます。EA運用をお考えであれば、ぜひ口座開設をご検討ください。


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。

この記事をシェアする