この投稿では、株式市場のトレンド分析のためのグラフ作成プロセスに焦点を当てます。この手続きは、初期設定、データ準備、チャートアウトライン作成、メインチャート描画、MACD指標およびMACDオシレータヒストグラムの描画、チャートタイトル、凡例、目盛り設定、およびチャート出力の五つの部分で構成されています。
チャートを描くために必要なライブラリとモジュールをインポートし、目的の株のデータを準備します。Yahoo Financeからの株価データを取得するためにyahooquery
を使用し、特定の期間に対する始値、終値、最高価格、最低価格を取り込みます。これらのデータポイントは、チャート作成のための基本的な構成要素です。
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)
show_count
)とx軸の目盛り数(tick_count
)を設定します。yahooquery
を使用して、2年間のトヨタ自動車株式会社の株価データをダウンロードします。yahooqueryを使用して株価データを取得する方法は[Python] Yahooquery:過去の株価データと財務データの取得と管理で確認できます。チャートの全体的な形とサイズを設定します。
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()
mpf.figure(figsize=(12,10))
を使用して、全体のグラフサイズを幅12インチ、高さ10インチに設定します。このサイズは、全体のグラフウィンドウを定義します。fig.add_subplot(5, 1, (1, 3), facecolor='white')
は、全体のグラフを垂直に5部分、水平に1部分に分割し、最初の3つの垂直セクションをメインチャートに割り当てます。fig.add_subplot(5, 1, (4, 4), facecolor='white')
は、第4の垂直セクションをMACDチャートに割り当てます。fig.add_subplot(5, 1, (5, 5), facecolor='white')
は、最後の垂直セクションをMACDオシレータチャートに割り当てます。fig.tight_layout()
は、サブプロット間のスペーシングを調整し、グラフが均等に配置されるようにするために使用されます。この配置は、美的に魅力的なレイアウトを保証します。キャンドルスティックチャートは、株式市場の動向を分析する際の重要な手段となっています。開始、終了、最高および最低価格を図表で表し、移動平均線で定義された期間にわたる株式の平均価格を明確にします。TA-Libライブラリを使用すると、このような分析の実行を簡単にします。
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('')
mpf.make_addplot
関数を使用して、5日、20日、および60日の移動平均線を折れ線グラフとして描きます。ここでax=ax_main
は、メインチャート上に移動平均線を描くことを意味します。mpf.make_marketcolors
関数は、キャンドルスティックチャートの上昇および下降の傾向に対する色を設定します。この例では、赤(#BE452D
)は増加を、青(#4375E0
)は減少を示します。mpf.make_mpf_style
関数は、グラフの全体的な美観を設定し、市場の色、グリッドの色、およびグリッドのスタイルを指定します。mpf.plot
関数は、以前に確立した移動平均線とともにキャンドルスティックチャートを描画するために使用されます。ここで、addplot
引数は移動平均線プロットを追加し、datetime_format
は日付形式を決定します。ax_main.set_ylabel('')
はY軸ラベルを削除します。このコードは、mplfinanceライブラリを使用してトヨタ自動車株式会社の株式キャンドルスティックチャートと移動平均線を描画するプロセスを示しています。このライブラリは、キャンドルスティックチャートと移動平均線を簡単に描画し、組み込みスタイルを利用する利点を提供します。
キャンドルスティックチャートの描画にmplfinanceライブラリを使用する方法についての詳細な手順は、[Python] mplfinanceを使用してローソク足チャートを描画で入手できます。
MACD指標は、2つの移動平均間の差異を表し、この差異はトレンドの強度と方向を見極めるうえで重要な役割を果たします。MACDオシレータヒストグラムは、この差異を棒グラフの形で視覚的に描写することで分析を支援します。
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")
に中央線が描かれます。この線は、MACD値が正か負かを判断する基準として機能します。赤い点線(#DE0000
)として表示されます。
ax_macd.plot
関数は、MACD値とMACDシグナル値を折れ線グラフとして描画するために使用されます。ax_hist.bar
関数はMACDヒストグラムを描き、正と負の値を判断し、それらを赤(#EC3019
)および青(#4375E0
)で表示します。strftime('%Y-%m-%d')
関数は、日付インデックスを対応する文字列形式に変換します。このセクションでは、チャートを完成させるための最終手順が行われます。チャートのテーマを明確にするためにタイトルが追加され、各チャート部分を解説するために凡例が使用されます。スケール設定によって軸の単位が指定され、全ての設定が完了すると、チャートがレンダリングされます。
# 各チャートのタイトル設定
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()
ax_main.set_title
、ax_macd.set_title
、ax_hist.set_title
を使用して設定されます。mplfinance
で描画されたチャートは直接凡例を許可していないため、凡例を追加するための多段階の手順が使用されます。まず、ax_main.legend([None]*(len(added_plots)+2))
を通じて空の凡例が作成され、その後、実際の凡例ハンドルがhandles
で取得されて凡例が設定されます。tick_count
変数を使用して、X軸に表示される目盛りの数が計算および設定されます。各目盛りの位置は、合計データの長さと目盛りの数に基づいて均等に分散されます。plt.show()
を呼び出すことで、画面上にグラフがレンダリングされます。メインチャートの凡例の設定は、mplfinanceライブラリ内の特定の動作により、複雑な手順が必要となります。この部分の正確な理解と実装が重要です。
yahooquery
を使用してデータを取得するプロセスは複雑ですか?yahooquery
はYahoo Financeからのデータ取得を大幅に簡略化します。指定された期間の特定の株式データを簡単に取得し、詳細な設定なしで望んだデータを直ちに利用できるようにします。詳細情報は[Python] Yahooquery:過去の株価データと財務データの取得と管理で見つけることができます。
yahooquery
やTA-Libなどのライブラリを使用すると、複雑な計算と視覚化を大幅に単純化することができるため、複雑な数学的知識は必須ではありません。特定のライブラリとモジュールに関する詳細は、前述のリンクで参照することができます。[Python] 多彩な実例を通じてビット演算子を深く理解 |
---|
[Python] 多彩な実例を通じて関係演算子を深く理解 |
[Python] 'zsh: command not found: python' エラーの解決法 |
[Python] 多彩な実例を通じて代入演算子を深く理解 |
[Python] 多彩な実例を通じて算術演算子を深く理解 |
CloneCoding
1行のコードから始まる革新!