【絶対挫折しない】Googleコラボで株価分析|EMA・MACD・RSI|その4

挫折しない株価分析EMA・MACD・RSI編

グーグルコラボで始める株価分析シリーズその4です。

第4回目となる今回は、Yahoo Financeから取得したデータを用いて、テクニカル指標である指数平滑移動平均・MACD・RSIを追加する手順を解説します。

バックテストを行うにあたって、こうなったら買って、こうなったら手仕舞いする、といった条件を決める必要があります。その際に条件としてよく使われるのがテクニカル指標です。

MACDやRSIは移動平均に次いでポピュラーなテクニカル指標で、トレードに利用されている方も多いのではないかと思います。

シリーズものとなっておりますので、この記事に直接アクセスされた方は第1回の記事もぜひご参照ください。

前回の記事はこちらです。

目次

ステップ1:事前準備

今回指数平滑移動平均・MACD・RSIの算出には「TA-Lib」というテクニカル分析に特化したライブラリをインポートして用います。

私が利用した当時は(2022年12月)特に問題なくグーグルコラボからも利用できていたのですが、どうやらグーグルコラボで利用されるPython のバージョンが 3.9 にアップグレードされたことに伴い、少し手間が増えてしまいました。

ネットの有識者の記事を参考に、現時点(2023年5月)ではインポートできることが確認とれております。

こちらの記事を参照させていただきました。ありがとうございます。

では手順です。まずは「TA-Lib」のモジュールをサイトからダウンロードしてきて、インストールを行います。

!curl -L http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz -O && tar xzvf ta-lib-0.4.0-src.tar.gz
!cd ta-lib && ./configure --prefix=/usr && make && make install && cd - && pip install ta-lib

画像のように出力結果の最後に「Successfully installed..」と出ていればOKです。ちなみに「TA-Lib」のインストールには3分くらい時間がかかります。

Ta-libの実行結果

都度「TA-Lib」をインストールすると時間がもったいないので、バックテスト用のデータは取得でき次第csv等の形式で保存しておくことをおすすめします。

続いて、Numpyのアップグレードを行います。(ここから記事を参照させていただきました。)こちらも最後に「Successfully installed」と出ていればOKのようです。

!pip install numpy --upgrade

ここまで進んだら一度ランタイムを再起動します。上部メニューの「ランタイム」から、「ランタイムを再起動」を実行します。

続いて、環境変数を設定します。

!echo 'export LD_LIBRARY_PATH=/usr/lib' >> ~/.bashrc
!source ~/.bashrc

上記の操作が行うことで、「TA-Lib」のインストール準備が整ったので、他のライブラリと同様にインポートします。(参照おわり)

import pandas as pd
import datetime as dt
from pandas_datareader import data as pdr #日経平均やナスダック、日本の個別銘柄のデータを取得
import yfinance as yfin
import talib as ta

ステップ2:指数平滑移動平均線を算出

ここからはtalibを用いてテクニカル指標を算出していきましょう。

指数平滑移動平均(以下ema)は、ざっくり言うと単純移動平均に比べ、基準の日に近い日数の終値ほど重視して値を算出している指標です。

例えば、5日前の終値よりも1日前の終値の値を重視するといった感じです。

start = dt.date(2013,1,1)
end = dt.date(2023,3,31)

yfin.pdr_override()
df = pdr.get_data_yahoo('8306.T', start, end)

今回も三菱UFJの株価を取得します。

close=df['Close']
df['sma05'] = close.rolling(window=5).mean()
df['ema05'] = ta.EMA(close, timeperiod=5)

終値の列をcloseに代入しておきます。emaは、ta.EMAと記載することで算出可能です。

2つ目の引数で期間を指定することができます。今回は5日としています。

tailで出力し、出力結果が以下のようになっていればOKです。

	      Open	High	Low	Close	Adj Close	Volume	sma05	ema05
Date								
2023-03-24	830.000000	835.900024	826.099976	830.000000	814.265381	74099700	837.260010	840.919122
2023-03-27	830.000000	830.700012	816.500000	825.599976	809.948792	75936300	834.200000	835.812740
2023-03-28	840.599976	849.299988	834.500000	839.599976	823.683350	95826000	837.039990	837.075152
2023-03-29	832.099976	845.000000	832.000000	844.000000	828.000000	82038200	835.679993	839.383434
2023-03-30	835.000000	841.000000	827.099976	827.500000	827.500000	100018900	833.339990	835.422290

ステップ3:MACDを算出

続いてMACDを算出します。

MACDは短期のemaと中長期のemaの移動平均線を用いて買い・売りの判断に用いるテクニカル指標です。

こちらもコードは簡単で、1行で済みます。

df['macd'], df['macdsignal'], df['macdhist'] = ta.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)

fastperiodは短期移動平均、slowperiodは中長期移動平均、signalperiodがmacdシグナルに対応しています。

全て、最も頻繁に使われる期間を使用しています。

出力結果は以下のようになります。

	     Open	High	Low	Close	Adj Close	Volume	sma05	ema05	macd	macdsignal	macdhist
Date											
2023-03-24	830.000000	835.900024	826.099976	830.000000	814.265381	74099700	837.260010	840.919122	-32.362396	-21.212255	-11.150141
2023-03-27	830.000000	830.700012	816.500000	825.599976	809.948792	75936300	834.200000	835.812740	-33.437620	-23.657328	-9.780292
2023-03-28	840.599976	849.299988	834.500000	839.599976	823.683350	95826000	837.039990	837.075152	-32.782167	-25.482296	-7.299871
2023-03-29	832.099976	845.000000	832.000000	844.000000	828.000000	82038200	835.679993	839.383434	-31.544051	-26.694647	-4.849404
2023-03-30	835.000000	841.000000	827.099976	827.500000	827.500000	100018900	833.339990	835.422290	-31.530780	-27.661873	-3.868906

ステップ4:RSIを算出

最後にRSIを算出します。

RSIは売られすぎ、買われすぎを示すシグナルで、一般的に30を下回ると売られすぎ、70を上回ると買われすぎと言われています。

これらの傾向が本当にシグナルとして使えるのか?は今後のバックテストで確認できればと思います。

こちらもコードは簡単で、1行で済みます。

df['RSI'] = ta.RSI(close, timeperiod=14) 

出力結果は以下のようになります。

	      Open	High	Low	Close	Adj Close	Volume	sma05	ema05	macd	macdsignal	macdhist	RSI
Date												
2023-03-24	830.000000	835.900024	826.099976	830.000000	814.265381	74099700	837.260010	840.919122	-32.362396	-21.212255	-11.150141	35.062299
2023-03-27	830.000000	830.700012	816.500000	825.599976	809.948792	75936300	834.200000	835.812740	-33.437620	-23.657328	-9.780292	34.438528
2023-03-28	840.599976	849.299988	834.500000	839.599976	823.683350	95826000	837.039990	837.075152	-32.782167	-25.482296	-7.299871	38.205502
2023-03-29	832.099976	845.000000	832.000000	844.000000	828.000000	82038200	835.679993	839.383434	-31.544051	-26.694647	-4.849404	39.384304
2023-03-30	835.000000	841.000000	827.099976	827.500000	827.500000	100018900	833.339990	835.422290	-31.530780	-27.661873	-3.868906	36.567240

終わりに:もっと勉強したい方向けのおすすめ参考書

当記事ではコピペをすれば誰でも同じ結果が出せる、ということを主眼にしております。

そのためPythonや株に関する情報は必要最小限となっておりますので、適宜わからない点は他サイト様で補っていただけると幸いです。

Pythonそのものを勉強したいという場合は、以下の書籍が現状最もとっつきやすく、分かりやすく書かれているのではないかと思います。(私も持っています。)興味があれば是非手にとってみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

このサイトを運営している人

4大生保勤務です。
リテールを経て、現在はIT部門。
2021年から米国株投資を開始しました。
本業の保険や機械学習、投資について発信していきます。

目次