English

MQL5の書き方(for MQL4デザイナー)

 

2024.05

林貴晴/AMSER Inc.

MT5とPythonの連携①

MetaTrader 5(MT5)とPythonを連携させるために、専用のPythonパッケージが用意されています。このパッケージを利用することで、MT5サーバーへの接続、各種情報の取得、価格データの抽出、そして取引操作を行うことが可能です。Pythonを用いてMT5を操作する最大の利点は、Pythonが豊富なライブラリを持っていることです。これらのライブラリを活用することで、取引データの処理、統計的分析、さらに機械学習モデルの開発など、複雑なタスクを簡単に実行できます。本記事では、初期設定、MT5との接続方法、マーケット情報の取得とその切断プロセスについて詳しく説明します。

 

初期設定

PythonとMT5を連携させるには、まずPython用MetaTraderパッケージをインストールする必要があります。このパッケージは、MT5の各機能へのアクセスを可能にします。

 

インストール

pip install MetaTrader5                        
                    
 

もし不具合が発生する場合や、しばらく使用していなかった場合は、インストールされているパッケージのバージョンを確認してください。

 

バージョンの確認

import MetaTrader5 as mt5
print("MetaTrader5 version:", mt5.__version__)
 

最新バージョンにアップグレード

pip install --upgrade MetaTrader5
                    
 

MT5との接続方法

MT5に接続することで、各種情報の取得が可能になります。接続は、起動しているMT5に接続されます。複数のMT5が起動している場合は、最後に起動したMT5に接続されます。MT5が起動していない場合は、最後にインストールしたMT5に自動で接続されます。

 

接続

import MetaTrader5 as mt5
mt5.initialize()

                    
 

接続が成功した場合はTrueが返ってきます。

特定のMT5に接続したい場合は、インストールパスを指定することができます。パスはフォワードスラッシュ「/」を使用してフルパスで指定します。

 

パスを指定した接続

import MetaTrader5 as mt5
mt5.initialize('C:/Program Files/Phillip Securities MT5 Terminal/terminal64.exe')

                    
 

接続先のパスはterminal_infoから取得できます。

 

接続したMT5の確認

print(mt5.terminal_info().path)    
                    
 

マーケットデータの取得

MT5に接続した後、特定の通貨ペアの価格データを取得することができます。以下の例では、EUR/USDの最新の価格データを取得します。

 

マーケット情報の取得例

                    # EUR/USDのシンボル サフィックスが必要です。
symbol = "EURUSD.ps01"

# マーケット情報を取得
quote = mt5.symbol_info_tick(symbol)

# 取得したBid価格とAsk価格を表示
print(f"EUR/USDのBid価格: {quote.bid}, Ask価格: {quote.ask}")
                    
 

各通貨ペアには、取引プラットフォームに応じたサフィックスが必要です。例えば、フィリップ証券を使用している場合、EUR/USDは「EURUSD.ps01」として指定します。

切断

作業を終了する際には、MT5からの切断を忘れずに行います。

切断

mt5.shutdown()                        
                    

この記事で紹介したコードは基本的なものですが、MT5とPythonを使用することで、さらに複雑なトレーディング戦略や自動化スクリプトを実装することが可能です。

執筆者紹介
林貴晴

林 貴晴(AMSER株式会社代表取締役)

内資系薬品会社で約10年勤務の後、
外資系製薬会社(現IQVIA及びGSK)で合計約10年を勤務
その後EA AMSERを開発し、その成績を評価され、株式会社ゴゴジャンの部長として抜擢。
現在はAMSER株式会社代表取締役。