PythonからMT5に接続して為替データを取得する方法を解説します。
PythonからMT5に接続する前提条件
- Pythonを実行するパソコンに既にMT5がインストールされていること。
- ネット接続ができる環境にあること。
PythonからMT5に接続するプログラミング手順
PythonからMT5に接続して、指定した期間(今回の例では2024年1月8日12:00から12:10まで)のUSDJPY(ドル円)のデータを1分単位で取得する(11件のデータ取得する)例を記載します。
- PythonにMT5モジュールをインストールします。(MetaTrader5モジュールが未インストールの場合)
PIP INSTALL MetaTrader5
- 以下のようにソースコードを記述します。
import MetaTrader5 as mt5
import pandas as pd
from datetime import datetime
import pytz
if mt5.initialize(login=loginid, server="ServerName",password="password") == False:
print (mt5.last_error())
exit()
timezone = pytz.timezone("Etc/UTC")
date_from = datetime(2024, 1, 8, 12,0, tzinfo=timezone) #2024/1/8 12:00
date_to = datetime(2024, 1, 8, 12, 10, tzinfo=timezone) #2024/1/8 12:10
ticks = mt5.copy_rates_range("USDJPY",mt5.TIMEFRAME_M1,date_from,date_to)
mt5.shutdown()
df = pd.DataFrame(ticks)
df['time']=pd.to_datetime(df['time'], unit='s')
print(df)
ソースコード解説
- MetaTrader5 , pandas, datetime pytz をインポートします。
import MetaTrader5 as mt5
import pandas as pd
from datetime import datetime
import pytz
- mt5に接続します。また接続失敗した場合、接続失敗の原因がわかるようにエラー表示し、プログラム終了するようにします。
因みに loginidにはMT5にログインするためのID, ServerNameにはMT5のサーバー名,passwordにはMT5ログインのためのパスワードを入力してください。
if mt5.initialize(login=loginid, server="ServerName",password="password") == False:
print (mt5.last_error())
exit()
- UTC形式でデータ抽出期間を指定します。
timezone = pytz.timezone("Etc/UTC")
date_from = datetime(2024, 1, 8, 12,0, tzinfo=timezone) #2024/1/8 12:00
date_to = datetime(2024, 1, 8, 12, 10, tzinfo=timezone) #2024/1/8 12:10
- データを抽出する処理を記載します。またデータを抽出したらMT5から切断します。
ticks = mt5.copy_rates_range("USDJPY",mt5.TIMEFRAME_M1,date_from,date_to)
mt5.shutdown()
- 取得したデータをPandasデーターフレーム(df)に変換します。また日時データを年月日時分秒の表示形式に変換します。print文で取得結果を表示させます。
df = pd.DataFrame(ticks)
df['time']=pd.to_datetime(df['time'], unit='s')
print(df)
実行結果
PS C:\Users\user> & C:/Users/user/AppData/Local/Microsoft/WindowsApps/python3.10.exe c:/Users/user/OneDrive/ドキュメント/python/mt5demo.py
time open high low close tick_volume spread real_volume
0 2024-01-08 12:00:00 144.231 144.235 144.200 144.230 104 3 0
1 2024-01-08 12:01:00 144.230 144.260 144.212 144.245 143 3 0
2 2024-01-08 12:02:00 144.248 144.289 144.248 144.287 159 3 0
3 2024-01-08 12:03:00 144.287 144.299 144.271 144.279 110 3 0
4 2024-01-08 12:04:00 144.279 144.311 144.276 144.300 145 3 0
5 2024-01-08 12:05:00 144.300 144.300 144.288 144.291 106 3 0
6 2024-01-08 12:06:00 144.291 144.320 144.291 144.308 113 3 0
7 2024-01-08 12:07:00 144.309 144.314 144.287 144.290 128 3 0
8 2024-01-08 12:08:00 144.290 144.313 144.285 144.311 166 3 0
9 2024-01-08 12:09:00 144.312 144.314 144.285 144.296 144 3 0
10 2024-01-08 12:10:00 144.294 144.308 144.280 144.282 155 3 0
2024/1/8の12:00から12:10までのUSDJPY(ドル円)データが無事に取得できました。