💡

PythonでMT5のデータを取得する方法

2025/01/05に公開

MetaTrader 5(MT5)は、トレーダーに人気のある取引プラットフォームです。Pythonを使用してMT5からデータを取得することで、バックテストや分析を効率的に行えます。本記事では、PythonでMT5のデータを取得する方法を初心者にもわかりやすく解説します。

1. MT5とPythonの連携とは?

MT5には、Pythonを利用したスクリプトで取引やデータの取得ができるAPI(MetaTrader 5 API)が用意されています。このAPIを使えば、取引戦略の自動化や、詳細な市場分析が可能です。

2. MT5とPythonの連携とは?

PythonでMT5を操作するために、以下のライブラリをインストールします。

pip install MetaTrader5

3. MT5データの取得方法

以下は、PythonでMT5からデータを取得する基本的な方法です。

コード例:

import MetaTrader5 as mt5
import pandas as pd
import matplotlib.pyplot as plt
import talib
import mplfinance as mpf
from datetime import datetime, timezone

# MetaTrader 5を初期化
if not mt5.initialize():
    print("MetaTrader 5の初期化に失敗しました")
    quit()

# シンボル名と時間枠を設定
symbol = "EURJPY"
timeframe = mt5.TIMEFRAME_M15  # 15分足
# num_candles = 50000  # 取得するローソク足の数

# 開始日時と終了日時をUTCタイムで指定
start_date = datetime(2013, 1, 1, tzinfo=timezone.utc)
end_date = datetime(2013, 12, 31, tzinfo=timezone.utc)

# 開始日時と終了日時をUNIXタイムスタンプに変換
start_timestamp = int(start_date.timestamp())
end_timestamp = int(end_date.timestamp())

# 期間のデータを取得(例:50000本のローソク足)
rates = mt5.copy_rates_range(symbol, timeframe, start_timestamp, end_timestamp)

# ヒストリカルデータを取得
# rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, num_candles)

# MT5を終了
mt5.shutdown()

# データをPandas DataFrameに変換
data = pd.DataFrame(rates)
data['time'] = pd.to_datetime(data['time'], unit='s')  # タイムスタンプを日付形式に変換
data.set_index('time', inplace=True)  # インデックスを日時に設定
print(data)

# 必要なカラムを選択
ohlc = data[['open', 'high', 'low', 'close']]

print(ohlc)

実行結果:

                        open     high      low    close  tick_volume  spread  \
time                                                                           
2013-01-02 00:00:00  114.435  114.560  114.429  114.510          158      19   
2013-01-02 00:15:00  114.509  114.576  114.470  114.561          227      22   
2013-01-02 00:30:00  114.552  114.769  114.552  114.694          813       7   
2013-01-02 00:45:00  114.692  114.696  114.534  114.569          985      19   
2013-01-02 01:00:00  114.564  114.603  114.258  114.391         1636      11   
...                      ...      ...      ...      ...          ...     ...   
2013-12-30 23:00:00  145.013  145.026  144.980  144.996          348       2   
2013-12-30 23:15:00  144.994  145.040  144.986  145.031          373       2   
2013-12-30 23:30:00  145.031  145.078  145.029  145.061          270       2   
2013-12-30 23:45:00  145.061  145.132  145.039  145.060          457       6   
2013-12-31 00:00:00  145.063  145.111  145.018  145.055          237       7   

ここでは、シンボルをEURJPY、タイムフレームを15分足とし、2013年1月1日から2013年12月31日までのデータを取得します。
シンボル、タイムフレーム、期間は任意の値を設定してください。
タイムフレームは以下を設定できます。

定数 時間
TIMEFRAME_M1 1分
TIMEFRAME_M2 2分
TIMEFRAME_M3 3分
TIMEFRAME_M4 4分
TIMEFRAME_M5 5分
TIMEFRAME_M6 6分
TIMEFRAME_M10 10分
TIMEFRAME_M12 12分
TIMEFRAME_M15 15分
TIMEFRAME_M20 20分
TIMEFRAME_M30 30分
TIMEFRAME_H1 1 時間
TIMEFRAME_H2 2時間
TIMEFRAME_H3 3時間
TIMEFRAME_H4 4時間
TIMEFRAME_H6 6時間
TIMEFRAME_H8 8時間
TIMEFRAME_H12 12時間
TIMEFRAME_D1 1日
TIMEFRAME_W1 1週間
TIMEFRAME_MN1 1ヶ月

4. 実用例:価格データを分析する

MT5のデータを使った実用例として、ローソク足チャートを描画してみましょう。

ローソク足チャートを描画

以下のコードで、取得した価格データを可視化します。

# ローソク足チャートを描画
mpf.plot(ohlc, type='candle', title=f"{symbol} Chart", style='blueskies')

まとめ

PythonでMT5からデータを取得する方法を学びました。シンプルなコードで、価格データの取得や分析が可能です。この記事を参考に、自動取引や高度な分析を始めてみてください。

Discussion