Ccmmutty logo
Commutty IT
5 min read

Python(TA-Lib)で株価のテクニカル分析(その1) 移動平均やインジケーター(MACD)を算出する

https://cdn.magicode.io/media/notebox/5f6dd5c4-29ce-4f39-86ca-e725bd6bc191.jpeg
前の記事で取得した日経平均株価を plotly でロウソクチャートを表示まで行いました。
今回は、 TA-Lib を使って以下の2つを算出・可視化していきたいと思います。
  • 移動平均
  • MACD
今回も前回に引き続き colab を使っていきたいと思います。

TA-Lib

TA-Lib は python のライブラリーで、簡単にテクニカル分析ができます。
https://mrjbq7.github.io/ta-lib/

TA-Lib のインストール

colab 環境では pip install できず
pip install TA-Lib
とありましたが、 colab では ERROR が発生してしまいインストールできませんでした。
Google 先生に聞いてみるといくつか記事が出てきたので、今回はこちらの記事がわかりやすかったので、参考にしてインストールしてみました。
colab での TA-Lib のインストール
  1. 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
  1. ダウンロードしたファイルからインストールします。
!cd ta-lib && ./configure --prefix=/usr && make && make install && cd - && pip install ta-lib
以下のように表示されると install が成功です。
Successfully built ta-lib
Installing collected packages: ta-lib
Successfully installed ta-lib-0.4.24

移動平均の計算

前の記事で取得した日経平均株価が変数 nikkei225 に格納されているところからまずは移動平均を計算したいと思います。
nikkei225 の中身は以下ようなものです。 (今回は、2021年1月から2022年4月のデータを使います。)
python
nikkei225

High Low Open Close Volume Adj Close
Date
2021-01-04 27602.109375 27042.320312 27575.570312 27258.380859 51500000 27258.380859
2021-01-05 27279.779297 27073.460938 27151.380859 27158.630859 55000000 27158.630859
2021-01-06 27196.400391 27002.179688 27102.849609 27055.939453 72700000 27055.939453
2021-01-07 27624.730469 27340.460938 27340.460938 27490.130859 98900000 27490.130859
2021-01-08 28139.029297 27667.750000 27720.140625 28139.029297 84900000 28139.029297
... ... ... ... ... ... ...
2022-04-22 27205.830078 26904.380859 27197.800781 27105.259766 58500000 27105.259766
2022-04-25 26764.480469 26487.839844 26692.480469 26590.779297 62700000 26590.779297
2022-04-26 26808.990234 26592.990234 26743.210938 26700.109375 64300000 26700.109375
2022-04-27 26406.619141 26051.039062 26313.140625 26386.630859 97300000 26386.630859
2022-04-28 26876.949219 26348.359375 26430.279297 26847.900391 86700000 26847.900391

324 rows × 6 columns

移動平均

移動平均 (Moving Average)は、トレンド分析に用いられる代表的なもので、一定期間の価格の平均値です。 今回は単純移動平均線 (SMA)で、期間は5営業日で算出します。
import talib as ta

sma5 = ta.SMA(nikkei225.Close, timeperiod=5)
計算結果
このように簡単に計算できました。 指数平滑移動平均線 (EMA) を計算したい場合には、
ema5 = ta.EMA(nikkei225.Close, timeperiod=5)
とすれば OK です。

MACD の算出

MACD(移動平均収束拡散手法)とは

Moving Average Convergence Divergence の略で相場の勢いを確認するために用いられるテクニカル指標です。
IG証券の解説がわかりやすいので、詳細はこちらをお読みください。
MACD での返り値は以下の3つです。
  • MACD線
  • シグナル線
  • ヒストグラム
IG証券の解説にあるように返り値の意味は以下です。
  • MACD=短期EMA-長期EMA
  • シグナル(MACDシグナル)=MACDのEMA
  • ヒストグラム: MACD とシグナルの差分
今回は一般的なパラメーターの値: 短期EMA=12、長期EMA=26、MACDシグナル=9 で算出します。
macd, macdsignal, macdhist = ta.MACD(nikkei225.Close, fastperiod=12, slowperiod=26, signalperiod=9)

チャートに表示

上記で算出した移動平均線と MACD をチャートに表示したいと思います。
# make layout 
fig = make_subplots(rows=2, cols=1, shared_xaxes=True, subplot_titles=('OHLC', 'MACD'), )

#add candlestick chart
fig.add_trace(go.Candlestick(x=nikkei225.index,
                open=nikkei225.Open, high=nikkei225.High,
                low=nikkei225.Low, close=nikkei225.Close, name= 'nikkei225'),
                row=1, col=1
)
#add sma
fig.add_trace(
    go.Scatter(x=sma50.index ,y=sma50, name= 'sma50',
                line=dict(color='limegreen' ,width=1)), 
                row=1, col=1
)
fig.add_trace(
    go.Scatter(x=sma200.index ,y=sma200, name= 'sma200',
                line=dict(color='navy' ,width=1)), 
                row=1, col=1
)
#add macd
fig.add_trace(
    go.Scatter(x=macd.index ,y=macd, name= 'macd', 
                line=dict(color='lime' ,width=1)), 
                row=2, col=1
)
fig.add_trace(
    go.Scatter(x=macdsignal.index ,y=macdsignal, name= 'macdsignal', 
                line=dict(color='maroon' ,width=1)), 
                row=2, col=1
)
fig.add_trace(
    go.Bar(x=macdhist.index ,y=macdhist, name= 'macdhist'), 
                row=2, col=1
)
plotly.offline.iplot(fig)
少々不格好ですが、チャートを表示することができました。
次回は RSI など他の指標を算出、可視化をしたいと思います。

Discussion

コメントにはログインが必要です。