はじめに
FXトレードで過去データを活用した分析は、勝率を高める上でとても重要です。PythonとMT5を組み合わせて、FXデータを自由に扱えるようになりたい方に最適な内容です。この記事では、MetaTrader5(以下MT5)とPythonを使って、USDJPYの1分足データを取得し、日足ローソク足チャートとして描画する方法を初心者向けにわかりやすく解説します。
準備編|必要なライブラリとMT5のセットアップ
PythonでMT5を扱うための前提
まず、PythonからMT5のデータを扱うにはMetaTrader5
ライブラリが必要です。これはMetaQuotes社が公式提供しているライブラリで、MT5がインストールされ、実行中のPC上でのみ使用可能です(別のPCからは接続できません)。
必要なライブラリ
以下のコマンドでライブラリをインストールできます:
pip install MetaTrader5 pandas pytz matplotlib mplfinance
MT5の準備
- MT5をインストールし、対象の証券会社の口座にログインしておきます。
- Pythonスクリプトと同じPCにMT5をインストールしてください。
データ取得編|MT5から1分足データを取り込む
以下のコードで、USDJPYの1分足データを2021年1月1日から2025年5月5日まで取得します:
import MetaTrader5 as mt5
import pandas as pd
from datetime import datetime
import pytz
# タイムゾーン設定
utc = pytz.UTC
# MT5起動
mt5.initialize()
# 通貨ペアと時間足設定
symbol = "USDJPY"
timeframe = mt5.TIMEFRAME_M1
from_date = utc.localize(datetime(2021, 1, 1, 0, 0, 0))
to_date = utc.localize(datetime(2025, 5, 5, 23, 59, 0))
# データ取得
rates = mt5.copy_rates_range(symbol, timeframe, from_date, to_date)
# MT5切断
mt5.shutdown()
データ取得後に得られる情報を理解しておくと、後の処理がスムーズです。 取得されるデータには、以下のカラムが含まれています:
time
(UNIX時間)open
,high
,low
,close
tick_volume
(ティック数を基にした出来高の指標)など
データ処理編|日足データへの変換と整形
MT5から得た1分足データは、そのままだと扱いにくい場合があります。ここでは、日足(1日単位)のローソク足に変換する方法を紹介します。
# DataFrameに変換
import matplotlib.pyplot as plt
import mplfinance as mpf
df = pd.DataFrame(rates)
df['time'] = pd.to_datetime(df['time'], unit='s')
df.set_index("time", inplace=True)
# 日足にリサンプリング
df_day = df.resample('1D').agg({
'open': 'first',
'high': 'max',
'low': 'min',
'close': 'last',
'tick_volume': 'sum'
})
# 欠損値の除去
df_day.dropna(inplace=True)
# カラム名調整
df_day = df_day.rename(columns={"tick_volume": "volume"})
この処理によって、1日ごとのOHLC(始値・高値・安値・終値)と出来高がまとまった形になります。
描画編|ローソク足チャートを表示しよう
リサンプリングして整形した日足データを使って、mplfinanceライブラリでローソク足チャートを描画します。
mpf.plot(df_day, type='candle', style='charles', volume=True, title="USDJPY Daily Chart")
ポイント:
type='candle'
でローソク足指定style='charles'
で視認性の高いスタイルvolume=True
で出来高も表示
応用編|データの保存と再利用(Pickle)
毎回データを取得するのは時間がかかるので、処理済みのデータは保存しておくと便利です。Pickle形式はPythonでの高速保存形式です。
# 保存(必要なら)
df.to_pickle('USDJPY_1m_20210101_20250505.pkl')
次回からはpd.read_pickle()
で即時読み込みできます。
まとめ・結論
この記事では、MetaTrader5とPythonを連携させて、FXの1分足データを日足ローソク足チャートに変換・描画する方法を紹介しました。
今回の学び:
- FXデータの取得方法(MT5とPython連携)
- データの加工(Pandasによる整形とリサンプリング)
- チャート描画(mplfinanceでの可視化)
- MT5 × Pythonの環境構築方法
- FXデータの取得・加工・可視化の流れ
- Pandasでの時間集約とmplfinanceによる描画
この基礎ができると、より高度な分析へと発展できます。
今後の応用例:
- テクニカル指標(移動平均線、MACD、RSIなど)の追加
- 自動売買システム(EA)との連携
- AIや機械学習を活用した価格予測モデルの構築
まずはこのチャート作成を習得し、自動分析の第一歩を踏み出しましょう!
コメント