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")