こんにちは。
今回もテクニカル分析に必要になる出来高、移動平均、RSI、MACDを取得する方法を
紹介していきます。
1. 出来高
import yfinance as yf
# 銘柄(シンボル)を指定
ticker_symbol = "AAPL"
# Tickerオブジェクトを作成
stock_ticker = yf.Ticker(ticker_symbol)
# 過去1年分の出来高データを取得
volume_data = stock_ticker.history(period="1y")['Volume']
# 取得した出来高データを表示
print(volume_data.head())
出来高を取得するのはhistory関数を使用します。
2. 移動平均
import yfinance as yf
import pandas as pd
# 銘柄(シンボル)を指定
ticker_symbol = "AAPL"
# Tickerオブジェクトを作成
stock_ticker = yf.Ticker(ticker_symbol)
# 過去1年分の終値データを取得
close_data = stock_ticker.history(period="1y")['Close']
# 10日移動平均を計算
moving_average_10d = close_data.rolling(window=10).mean()
# 結果の表示
print("10日移動平均:")
print(moving_average_10d)
コードの説明をします。
移動平均を求めるにはpandasのインポートが必要です。
まずclose_data = stock_ticker.history(period=”1y”)[‘Close’]で過去1年分の終値を取得しています。close_data.rolling(window=10)
は10日の窓幅をもつ移動平均を計算するためのオブジェクトを
作成します。mean()
は平均を計算します。
3. 相対強弱指数
import yfinance as yf
import pandas as pd
# 銘柄(シンボル)を指定
ticker_symbol = "AAPL"
# Tickerオブジェクトを作成
stock_ticker = yf.Ticker(ticker_symbol)
# 過去1年分の終値データを取得
close_data = stock_ticker.history(period="1y")['Close']
# 14日のRSIを計算
delta = close_data.diff(1)
gain = delta.where(delta > 0, 0)
loss = -delta.where(delta < 0, 0)
average_gain = gain.rolling(window=14).mean()
average_loss = loss.rolling(window=14).mean()
rs = average_gain / average_loss
rsi = 100 - (100 / (1 + rs))
# 取得したRSIデータを表示
print("14日RSI:")
print(rsi.head())
delta = close_data.diff(1)
によって、株価の終値の日次変化が計算されます。diff
関数は、データの差分(変化)を計算するための関数です。
具体的には、連続した要素間の差分を求めます。gain
とloss
は、この変化が正の場合と負の場合に対応し、それぞれの変動を抽出します。where
関数は、条件を満たす場合と満たさない場合で値を選択的に設定するためのメソッドです。
次に、average_gain
およびaverage_loss
は、14日の期間内での平均を計算します。
これらの平均値を用いて相対強度(Relative Strength)であるrs
が計算され、
最終的に14日の相対強弱指数(RSI)が求められます。
4. MACD
import yfinance as yf
import pandas as pd
# 銘柄(シンボル)を指定
ticker_symbol = "AAPL"
# Tickerオブジェクトを作成
stock_ticker = yf.Ticker(ticker_symbol)
# 過去1年分の終値データを取得
close_data = stock_ticker.history(period="1y")['Close']
# 12日と26日の指数平滑移動平均を計算
ema_12d = close_data.ewm(span=12, adjust=False).mean()
ema_26d = close_data.ewm(span=26, adjust=False).mean()
# MACDを計算
macd = ema_12d - ema_26d
# 9日の信号線を計算
signal_line = macd.ewm(span=9, adjust=False).mean()
# 取得したMACDデータを表示
print("MACD:")
print(macd.head())
# 取得した信号線データを表示
print("Signal Line:")
print(signal_line.head())
ema_12d = close_data.ewm(span=12, adjust=False).mean()
ema_26d = close_data.ewm(span=26, adjust=False).mean()ewm
メソッドは指数平滑移動平均を計算するためのもので、span
パラメータで期間を指定します。ewm
メソッドは、指数平滑移動平均(Exponential Moving Average、EMA)を計算するものです。
指数平滑移動平均は、過去のデータに重みをつけ、新しいデータほど大きな影響を持たせる方法です。
まとめ
今回はyfinanceを用いて、テクニカル分析に必要になる出来高、移動平均、RSI、MACDを取得する方法を紹介しました。
次回は、yfinanceを用いてファンダメンタル分析に必要なデータの取得について紹介します。
次回のブログも是非ご覧になってください。
ありがとうございました。
関連記事
yfinanceの詳細については、以下の公式ドキュメントをご参照ください:
コメント