PythonからMT5に接続して為替データを取得する方法

PythonMT5連携

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(ドル円)データが無事に取得できました。

タイトルとURLをコピーしました