[Python] mplfinanceとmatplotlibを使用して、トヨタ自動車のMACDチャートを描画する

この投稿では、株式市場のトレンド分析のためのグラフ作成プロセスに焦点を当てます。この手続きは、初期設定、データ準備、チャートアウトライン作成、メインチャート描画、MACD指標およびMACDオシレータヒストグラムの描画、チャートタイトル、凡例、目盛り設定、およびチャート出力の五つの部分で構成されています。

初期設定とデータ準備

チャートを描くために必要なライブラリとモジュールをインポートし、目的の株のデータを準備します。Yahoo Financeからの株価データを取得するためにyahooqueryを使用し、特定の期間に対する始値、終値、最高価格、最低価格を取り込みます。これらのデータポイントは、チャート作成のための基本的な構成要素です。

コード

python
from yahooquery import Ticker
import pandas as pd

# 表示されるデータの数
show_count = 250
# x軸に表示される目盛りの数
tick_count = 10

# yahooqueryからトヨタ自動車株式会社の株価データをダウンロード
toyota = Ticker('7203.T')
data = toyota.history(period="2y")
# シンボルと日付のインデックスをリセットし、日付のカラムで新しいインデックスを設定
data.reset_index(inplace=True)
data['date'] = pd.to_datetime(data['date'])
data.set_index('date', inplace=True)

# talibライブラリを使用して移動平均を計算
data["sma5"] = talib.SMA(data.close, timeperiod=5)  # 5日移動平均
data["sma20"] = talib.SMA(data.close, timeperiod=20) # 20日移動平均
data["sma60"] = talib.SMA(data.close, timeperiod=60) # 60日移動平均

# MACDを計算
data["macd"], data["macd_signal"], data["macd_hist"] = talib.MACD(data['close'])

# 最後の250データのみを使用
data = data.tail(show_count)

説明

  1. データ設定: 表示する株価データの数(show_count)とx軸の目盛り数(tick_count)を設定します。
  2. トヨタ自動車株式会社データのダウンロード: yahooqueryを使用して、2年間のトヨタ自動車株式会社の株価データをダウンロードします。yahooqueryを使用して株価データを取得する方法は[Python] Yahooquery:過去の株価データと財務データの取得と管理で確認できます。
  3. インデックス設定: yahooqueryからダウンロードしたデータは、'symbol'および'date'でインデックス付けされているため、リセットする必要があり、'date'カラムをdatetime型に変換し、グラフ化のために新しいインデックスとして設定する必要があります。
  4. 移動平均の計算: TA-Libライブラリを使用して、5日、20日、60日の移動平均を計算します。移動平均の計算と使用方法は[TA-Lib] #4:TA-Libを利用した移動平均線分析 - 市場のトレンドを検出し、ゴールデンクロス・デッドクロスを捕捉で見ることができます。
  5. MACDの計算: MACD、MACDシグナル、MACDヒストグラムを計算します。これらの値は、株のモメンタムを分析するために使用され、MACDの計算と分析方法の詳細情報は[TA-Lib] #6: TA-Libを活用したMACDの計算と分析で読むことができます。
  6. データのフィルタリング: 分析のために最新の250データのみを選択します。このステップは、特定の期間にわたる最近のトレンドの分析を強調します。

チャートアウトラインの作成

チャートの全体的な形とサイズを設定します。

コード

python


import matplotlib.pyplot as plt
import mplfinance as mpf

# グラフの全体サイズを設定
fig = mpf.figure(figsize=(12,10))

# メインチャート、MACDチャート、およびMACDオシレータチャートのサブプロットを作成
ax_main = fig.add_subplot(5, 1, (1, 3), facecolor='white') # メインチャート
ax_macd = fig.add_subplot(5, 1, (4, 4), facecolor='white') # MACDチャート
ax_hist = fig.add_subplot(5, 1, (5, 5), facecolor='white') # MACDオシレータチャート

# サブプロット間のスペースを調整
fig.tight_layout()

説明

  1. 全体のグラフサイズの設定: mpf.figure(figsize=(12,10))を使用して、全体のグラフサイズを幅12インチ、高さ10インチに設定します。このサイズは、全体のグラフウィンドウを定義します。
  2. サブプロットの作成: サブプロットは、全体のグラフウィンドウ内の個々のチャートの位置とサイズを定義します。
    • メインチャート: fig.add_subplot(5, 1, (1, 3), facecolor='white')は、全体のグラフを垂直に5部分、水平に1部分に分割し、最初の3つの垂直セクションをメインチャートに割り当てます。
    • MACDチャート: fig.add_subplot(5, 1, (4, 4), facecolor='white')は、第4の垂直セクションをMACDチャートに割り当てます。
    • MACDオシレータチャート: fig.add_subplot(5, 1, (5, 5), facecolor='white')は、最後の垂直セクションをMACDオシレータチャートに割り当てます。
  3. スペーシングの調整: fig.tight_layout()は、サブプロット間のスペーシングを調整し、グラフが均等に配置されるようにするために使用されます。この配置は、美的に魅力的なレイアウトを保証します。
メインチャート、MACD、MACDオシレータの概要、それぞれ異なるエリアに配置
メインチャート、MACD、およびMACDオシレータの独自のエリア。株のさまざまな側面を分析するために設定された各特定エリア

メインチャートの作成(キャンドルスティックチャートおよび移動平均線)

キャンドルスティックチャートは、株式市場の動向を分析する際の重要な手段となっています。開始、終了、最高および最低価格を図表で表し、移動平均線で定義された期間にわたる株式の平均価格を明確にします。TA-Libライブラリを使用すると、このような分析の実行を簡単にします。

コード

python
added_plots = {
    'MA5': mpf.make_addplot(data.sma5, type='line', ax=ax_main, width=1.5),
    'MA20': mpf.make_addplot(data.sma20, type='line', ax=ax_main, width=1.5),
    'MA60': mpf.make_addplot(data.sma60, type='line', ax=ax_main, width=1.5),
}

mc = mpf.make_marketcolors(up="#BE452D", down="#4375E0", edge='black')

s = mpf.make_mpf_style(marketcolors=mc, gridcolor='#DDDDDD', gridstyle="--")

mpf.plot(data,
         style=s,
         type='candle',
         ax=ax_main,
         addplot=list(added_plots.values()),
         datetime_format='%Y-%m-%d',
         returnfig=True)

ax_main.set_ylabel('')

説明

  1. 移動平均線プロットの設定: mpf.make_addplot関数を使用して、5日、20日、および60日の移動平均線を折れ線グラフとして描きます。ここでax=ax_mainは、メインチャート上に移動平均線を描くことを意味します。
  2. 市場色の設定: mpf.make_marketcolors関数は、キャンドルスティックチャートの上昇および下降の傾向に対する色を設定します。この例では、赤(#BE452D)は増加を、青(#4375E0)は減少を示します。
  3. スタイリング: mpf.make_mpf_style関数は、グラフの全体的な美観を設定し、市場の色、グリッドの色、およびグリッドのスタイルを指定します。
  4. キャンドルスティックチャートの描画: mpf.plot関数は、以前に確立した移動平均線とともにキャンドルスティックチャートを描画するために使用されます。ここで、addplot引数は移動平均線プロットを追加し、datetime_formatは日付形式を決定します。
  5. Y軸ラベルの設定: ax_main.set_ylabel('')はY軸ラベルを削除します。

このコードは、mplfinanceライブラリを使用してトヨタ自動車株式会社の株式キャンドルスティックチャートと移動平均線を描画するプロセスを示しています。このライブラリは、キャンドルスティックチャートと移動平均線を簡単に描画し、組み込みスタイルを利用する利点を提供します。

キャンドルスティックチャートの描画にmplfinanceライブラリを使用する方法についての詳細な手順は、[Python] mplfinanceを使用してローソク足チャートを描画で入手できます。


MACD指標とMACDオシレータヒストグラムの説明

MACD指標は、2つの移動平均間の差異を表し、この差異はトレンドの強度と方向を見極めるうえで重要な役割を果たします。MACDオシレータヒストグラムは、この差異を棒グラフの形で視覚的に描写することで分析を支援します。

コード

python
ax_macd.plot([0, len(index)-1],
                 [0, 0],
                 color='#DE0000',
                 linestyle='--',
                 linewidth=0.7)

ax_macd.plot(data.index,
                data['macd'],
                label='MACD')

ax_macd.plot(data.index,
                data['macd_signal'],
                label='MACD Signal')

histogram = data['macd_hist']
index = data.index.strftime('%Y-%m-%d')
ax_hist.bar(list(index), list(histogram.where(histogram > 0)), 0.7, color="#EC3019")
ax_hist.bar(list(index), list(histogram.where(histogram < 0)), 0.7, color="#4375E0")

説明

  1. 中央線の描画: MACDチャート上

に中央線が描かれます。この線は、MACD値が正か負かを判断する基準として機能します。赤い点線(#DE0000)として表示されます。

  1. MACDとMACDシグナルのプロット: ax_macd.plot関数は、MACD値とMACDシグナル値を折れ線グラフとして描画するために使用されます。
  2. MACDヒストグラムの描写: ax_hist.bar関数はMACDヒストグラムを描き、正と負の値を判断し、それらを赤(#EC3019)および青(#4375E0)で表示します。
  • インデックス文字列の変換: バーチャートを描画する際のインデックスを文字列に変換する主な理由は、連続する平日の取り扱いの問題を克服することです。通常、x軸を日時形式で渡すと、存在しない日付(例:週末)がゼロ値で置き換えられます。株式市場のような、特定の日付にのみデータが存在するシーンには不適切かもしれません。したがって、インデックスを'年-月-日'の文字列に変換することで、データが存在しない日付の表現を防ぎ、日付の連続表示を避けることができます。strftime('%Y-%m-%d')関数は、日付インデックスを対応する文字列形式に変換します。

チャートタイトル、凡例、スケールの設定、およびチャートのレンダリング

このセクションでは、チャートを完成させるための最終手順が行われます。チャートのテーマを明確にするためにタイトルが追加され、各チャート部分を解説するために凡例が使用されます。スケール設定によって軸の単位が指定され、全ての設定が完了すると、チャートがレンダリングされます。

コード

python
# 各チャートのタイトル設定
ax_main.set_title('トヨタ自動車株式会社', fontsize=15, fontdict={'family': 'Noto Sans JP')
ax_macd.set_title('MACD', fontsize=15)
ax_hist.set_title('MACD Signal', fontsize=15)

# メインチャートの凡例設定
font = font_manager.FontProperties(family='Noto Sans JP', weight='normal')
ax_main.legend([None]*(len(added_plots)+2))
handles = ax_main.get_legend().legend_handles
ax_main.legend(handles=handles[2:], labels=list(added_plots.keys()), prop=font)

# MACDチャートの凡例設定
ax_macd.legend(loc=2, prop=font)

# X軸の目盛り設定
step = (len(data) - 1) / (tick_count - 1)
ticks = [0 + int(step * i) for i in range(tick_count)]
ax_main.xaxis.set_ticks(ticks)
ax_macd.xaxis.set_ticks(ticks)
ax_hist.xaxis.set_ticks(ticks)
ax_main.xaxis.set_ticklabels([])
ax_macd.xaxis.set_ticklabels([])

# グリッド設定
ax_main.grid(color='#dddddd', linestyle='--', linewidth=0.5)
ax_macd.grid(color='#dddddd', linestyle='--', linewidth=0.5)
ax_hist.grid(color='#dddddd', linestyle='--', linewidth=0.5)

# グラフの表示
plt.show()

説明

  1. チャートタイトルの設定: 各チャートのタイトルは、タイトル文字列とフォントサイズをパラメータとして、ax_main.set_titleax_macd.set_titleax_hist.set_titleを使用して設定されます。
  2. メインチャートの凡例の設定: メインチャートの移動平均線の凡例が設定されます。mplfinanceで描画されたチャートは直接凡例を許可していないため、凡例を追加するための多段階の手順が使用されます。まず、ax_main.legend([None]*(len(added_plots)+2))を通じて空の凡例が作成され、その後、実際の凡例ハンドルがhandlesで取得されて凡例が設定されます。
  3. MACDチャートの凡例の設定: MACDチャートに凡例が追加されます。位置とフォントプロパティを指定することができます。
  4. X軸の目盛りの設定: tick_count変数を使用して、X軸に表示される目盛りの数が計算および設定されます。各目盛りの位置は、合計データの長さと目盛りの数に基づいて均等に分散されます。
  5. グリッドの構成: 各チャートのグリッドのスタイルと色が定義され、チャートの読みやすさを向上させます。
  6. グラフの表示: plt.show()を呼び出すことで、画面上にグラフがレンダリングされます。

メインチャートの凡例の設定は、mplfinanceライブラリ内の特定の動作により、複雑な手順が必要となります。この部分の正確な理解と実装が重要です。


キャンドルスティックチャート、移動平均線、MACD指標、MACDオシレーターヒストグラムを含むチャート。
トヨタ自動車株式会社のキャンドルスティックチャート、MACD、MACDオシレーター。このチャートは、株価のトレンドと取引信号の分析に役立ちます。

FAQs

  1. yahooqueryを使用してデータを取得するプロセスは複雑ですか?
    • いいえ、yahooqueryはYahoo Financeからのデータ取得を大幅に簡略化します。指定された期間の特定の株式データを簡

単に取得し、詳細な設定なしで望んだデータを直ちに利用できるようにします。詳細情報は[Python] Yahooquery:過去の株価データと財務データの取得と管理で見つけることができます。

  1. TA-Libを使用して移動平均線を描画する方法は?
  2. MACD指標はなぜ重要で、どのように使用されますか?
    • MACD指標は、トレンドの強度と方向を評価するための重要なツールとして機能します。二つの移動平均線の差を評価することで、市場の勢いを評価し、投資判断を支援します。TA-Libを使用すると、MACD指標を簡単に計算および分析することができます。包括的な分析方法は[TA-Lib] #6: TA-Libを活用したMACDの計算と分析で見つけることができます。
  3. チャートの凡例と目盛りの設定はなぜ重要ですか?
    • 凡例と目盛りは、チャートを読み取り理解する上で重要な役割を果たします。凡例は、さまざまな線と色が何を表しているのかを説明し、目盛りはチャートの軸の正確な値と単位を提供します。これらの要素は、チャートの読みやすさを高め、ユーザーがチャートから重要な情報をより容易かつ正確に特定するのを助けます。
  4. このプロジェクトに必要なプログラミング知識は何ですか?
    • このプロジェクトを実施するためには、Pythonプログラミングとデータ可視化の基本的な理解が必要です。yahooqueryやTA-Libなどのライブラリを使用すると、複雑な計算と視覚化を大幅に単純化することができるため、複雑な数学的知識は必須ではありません。特定のライブラリとモジュールに関する詳細は、前述のリンクで参照することができます。
© Copyright 2023 CLONE CODING