Magicode logo
Magicode
4 min read

Python(TA-Lib)で株価のテクニカル分析(その3) ATR, ケルトナーチャネルを算出する

https://cdn.apollon.ai/media/notebox/fa500754-556f-4328-9715-79bc1d2a45f1.jpeg
前の記事で、モメンタム、RSIとストキャスティクスを算出し、表示しました。
今回は、以下の2つを算出し可視化したいと思います。
  • ATR
  • ケルトナーチャネル
今回も前回に引き続き colab にて、TA-Lib を使っていきたいと思います。
TA-Lib のインストール方法などはこちらの記事を参照ください。
また、使用するデータ 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

ATR(Average True Range)

ATR はボラティリティを分析するための指標です。
ATRは、特定の期間における価格の変動幅、いわゆるボラティリティを確認するときに使います。ATRの上昇は、価格のボラティリティが拡大していることを示します。逆にATRの低下は、価格のボラティリティが縮小していることを示します。 IG 証券: ATRインジケーターの計算方法や使い方を解説より
ボラティリティを確認することで値幅を加味してポジション調整をすることもできると思います。
では、 TA-Lib を使って算出し、 plotly にて可視化していきたいと思います。
今回は14日の期間で算出します。
算出:
import talib as ta
atr14 = ta.ATR(nikkei225.High, nikkei225.Low, nikkei225.Close, timeperiod=14)
可視化:
import plotly.graph_objects as go
from plotly.offline import iplot 

fig = go.Figure(go.Scatter(x=atr14.index ,y=atr14, name= 'ATR14', ))

iplot(fig)
大体350~550円程度値動きがありそうですね。
500円を超える日も多くなかなか荒っぽいですね。(個人的な主観)

ケルトナーチャネル

ケルトナーチャネルは センターライン(移動平均)と Upper band(移動平均+バンド幅)、Lower band(移動平均-バンド幅) で形成されるトレンドフォロー系の指標です。
(色々と定義があるようですが、ここでは EMA をセンターライン、バンド幅を 係数 x ATR とします。)
ケルトナーチャネルは、チェスター・W・ケルトナー(Chester W. Keltner)氏が開発したテクニカル指標です。ケルトナーチャネルは、ボリンジャーバンドのように3本のラインで構成されています。 株価や為替レートが上限のラインを突破する場合、上昇トレンドが続くシグナルと判断します。このケースでは中間線をサポートラインと想定し、上昇トレンドをフォローする取引を考えます。 逆に株価や為替レートが下限のラインを突破する場合は、下落トレンドが続くシグナルと判断します。このケースでは中間線をレジスタンスラインと想定し、下落トレンドをフォローする取引を考えます。 IG 証券: ケルトナーチャネルの使い方をわかりやすく解説より
では、上記で算出した ATR を使ってケルトナーチャネルを算出していきたいと思います。
ここでは、バンド幅は 2 * ATR で算出します。
ema20 = ta.EMA(nikkei225.Close, timeperiod=20)
atr20 = ta.ATR(nikkei225.High, nikkei225.Low, nikkei225.Close, timeperiod=20)
upper_band = ema20 + 2 * atr20
lower_band = ema20 - 2 * atr20
可視化します。
#draw candlestick chart
fig = go.Figure(go.Candlestick(x=nikkei225.index,
                open=nikkei225.Open, high=nikkei225.High,
                low=nikkei225.Low, close=nikkei225.Close, name= 'nikkei225')
)
#add ema
fig.add_trace(
    go.Scatter(x=ema20.index ,y=ema20, name= 'ema20',), 
)
#add upper band
fig.add_trace(
    go.Scatter(x=upper_band.index ,y=upper_band, mode='lines', line=dict(dash='dot'), name= 'upper_band',), 
)
#add lower band
fig.add_trace(
    go.Scatter(x=lower_band.index ,y=lower_band, mode='lines', line=dict(dash='dot'), name= 'lower_band',), 
)
iplot(fig)
今回は
  • ATR
  • ケルトナーチャネル を算出し可視化しました。
次回は、ボリンジャーバンドを算出し可視化したいと思います。

Discussion

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