投資家のためのPython: データで見る市場動向とトレンド分析3

こんにちは。前回の投稿ではyfinanceを利用して株価情報を取得する方法を紹介しました。
今回もテクニカル分析に必要になる出来高、移動平均、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関数は、データの差分(変化)を計算するための関数です。
具体的には、連続した要素間の差分を求めます。

gainlossは、この変化が正の場合と負の場合に対応し、それぞれの変動を抽出します。
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を用いてファンダメンタル分析に必要なデータの取得について紹介します。
次回のブログも是非ご覧になってください。
ありがとうございました。

コメント

タイトルとURLをコピーしました