chartを表示するためにmatplotlib.financeを使います。
チャートを表示用のメソッドはいくつかあります。
基本的な使い方
※OANDA APIを使うことを想定しています。
とりあえずチャートを表示するコード
times
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from mpl_finance import candlestick_ohlc
import datetime
from oandapyV20 import API
import oandapyV20.endpoints.instruments as instruments
import talib
access_token = ************
api = API(access_token=access_token, environment="practice")
params = {
"granularity": "D", # 取得する足
"count": 200, # 取得する足数
"price": "B", # Bid
}
instrument = "USD_JPY" # 通貨ペア
instruments_candles = instruments.InstrumentsCandles(instrument=instrument, params=params)
api.request(instruments_candles)
response = instruments_candles.response
df = pd.DataFrame(response["candles"])
ohlc = []
for r in response["candles"]:
time = r["time"].replace(".000000000Z", "")
time = datetime.datetime.strptime(time, "%Y-%m-%dT%H:%M:%S")
time = mdates.date2num(time)
r["bid"]["time"] = time
ohlc.append(r["bid"])
df = pd.DataFrame(ohlc)
df = df.astype(np.float64)
# ローソク足のチャートの表示
fig, ax = plt.subplots(figsize=(10, 5))
df = df[["time", "o", "h", "l", "c"]]
candlestick_ohlc(ax, df.values, colorup="green", colordown="red")
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.show()
メモ
週をまたぐ時足や分足を表示する時
上述したコードでプロットすると、時足で週末をまたぐと以下のようにおかしくなります。
fig, ax = plt.subplots(figsize=(10, 5)) df = df[["time", "o", "h", "l", "c"]] candlestick_ohlc(ax, df.values, colorup="green", colordown="red")

このような時の暫定策(最善策ではありません)として、時間を単純な整数にしてしまいます。
fig, ax = plt.subplots(figsize=(10, 5)) df = df[["time", "o", "h", "l", "c"]] df["time"] = np.arange(len(df["time"].values)) # new candlestick_ohlc(ax, df.values, colorup="green", colordown="red")


