Pythonを使って以下のようなローソク足チャートを描画することができる。最近は円安が話題なので、このエントリではやや見慣れないドル円(USDJPY)の「年足」を描画してみよう。 ![candlestick_mpf_candle.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697094/d7d595ba-4e07-e588-2b5b-d5766cf9a245.png) 今回用いる「[**mplfinance**](https://github.com/matplotlib/mplfinance)」は金融系の画像操作に特化したライブラリで、`pip install mplfinance` で導入できる。 ドル円の価格データ `USDJPY_1972_2022.csv` をpandasデータフレームとして読み込みmplfinanceのplot関数に渡す。(csvの中身は後で示す) ```py:candlestick.py import pandas as pd import mplfinance as mpf df = pd.read_csv('USDJPY_1972_2022.csv', index_col=0, parse_dates=True) mpf.plot(df, type='candle', datetime_format='%Y/%m/%d', ylim=((0, 350)), figratio=(12, 8), mav=(5, 25), style='binance', savefig='candlestick_USDJPY_1972_2022.png') ``` デフォルトではバー表示だが、`type`引数で "candle" を指定するとローソク足表示になる。`datetime_format`で横軸ラベルのフォーマットを、`ylim`でy軸(この場合は価格)の範囲を、`figratio`で出力画像のアスペクト比をそれぞれ指定できる。 mplfinanceはラベル名を大文字小文字で区別するので、頭文字が小文字の場合は `df.columns = ['Open', 'High', 'Low', 'Close']` のようにしてcolumnの名前を変換しておく必要がある。また、四本値の並びは必ずこの順でなければならないので注意。 candlestickの`style`には幾つか種類があるので、気に入ったものを選べば良い。(参考:[Python mplfinanceのcandlestickのstyleの巻](https://vucavucalife.com/python-mplfinance-candle-stick-style/)) `mav=(5, 25)`は5期間平均線と25期間平均線を表示するという意味。整数値のみ指定可能で、何本でも表示できる。 `savefig`で保存先のパスを指定する。 * * * 四本値は[**macrotrendsのページ**](https://www.macrotrends.net/2550/dollar-yen-exchange-rate-historical-chart)から取得した。 csv の中身は以下の通り。date 列データは便宜上1月1日に指定している。 ```:USDJPY_1972_2022.csv ,Open,High,Low,Close 1972-01-01,314.86,314.96,294.12,301.66 1973-01-01,301.39,302.57,254.45,280.27 1974-01-01,280.82,305.34,274.42,301.02 1975-01-01,300.66,306.84,284.66,305.16 1976-01-01,305.06,306.00,286.04,293.08 1977-01-01,292.48,292.91,237.81,239.98 1978-01-01,237.59,242.42,177.05,194.30 1979-01-01,194.58,250.85,194.58,240.30 1980-01-01,238.45,261.40,203.10,203.10 1981-01-01,202.50,246.10,199.05,219.80 1982-01-01,218.75,277.65,218.75,234.70 1983-01-01,232.00,247.05,226.75,231.70 1984-01-01,232.45,251.60,222.70,251.60 1985-01-01,251.80,262.80,200.25,200.25 1986-01-01,199.15,202.70,152.00,158.30 1987-01-01,158.25,159.40,121.25,121.25 1988-01-01,122.70,136.52,121.10,125.05 1989-01-01,123.60,149.62,123.60,143.80 1990-01-01,146.25,159.90,125.05,135.75 1991-01-01,134.60,141.90,124.90,124.90 1992-01-01,124.50,134.53,119.35,124.85 1993-01-01,125.40,126.10,101.10,111.70 1994-01-01,112.50,113.10, 96.77, 99.60 1995-01-01,100.52,104.20, 81.12,103.28 1996-01-01,103.92,116.13,103.92,115.77 1997-01-01,115.49,131.08,111.42,130.45 1998-01-01,132.40,147.14,113.08,113.08 1999-01-01,112.15,124.45,101.53,102.16 2000-01-01,101.70,114.62,101.70,114.35 2001-01-01,114.73,131.47,114.26,131.04 2002-01-01,132.02,134.77,115.71,118.75 2003-01-01,119.86,121.42,106.93,107.13 2004-01-01,106.95,114.30,102.56,102.68 2005-01-01,102.83,120.93,102.26,117.88 2006-01-01,116.34,119.81,110.07,119.02 2007-01-01,118.83,124.09,108.17,111.71 2008-01-01,109.70,110.48, 87.84, 90.79 2009-01-01, 91.12,100.71, 86.12, 93.08 2010-01-01, 92.55, 94.68, 80.48, 81.67 2011-01-01, 81.56, 85.26, 75.72, 76.98 2012-01-01, 76.67, 86.64, 76.11, 86.64 2013-01-01, 87.10,105.25, 86.92,105.25 2014-01-01,104.84,121.38,101.11,119.85 2015-01-01,120.20,125.58,116.78,120.27 2016-01-01,119.30,121.06, 99.89,116.96 2017-01-01,117.55,117.75,107.84,112.69 2018-01-01,112.63,114.44,104.73,109.66 2019-01-01,109.69,112.08,105.28,108.68 2020-01-01,108.69,112.06,102.37,103.25 2021-01-01,103.24,115.42,102.72,115.11 2022-01-01,115.11,126.22,113.67,125.55 ```