💡
PythonでMT5のデータを取得する方法
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