【絶対挫折しない】Googleコラボで株価分析|移動平均線|その3

挫折しない株価分析移動平均線編

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

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

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

テクニカル指標の中でも、まずは一番メジャーといっても過言ではない移動平均線を算出します。

巷の投資情報では、移動平均線だけで勝てる!といったものもあるくらいです。(真偽はさておき)

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

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

目次

ステップ1:事前準備

事前準備として、データ取得まで行います。

グーグルドライブとマウントし、保存先のパスを指定しておきます。(第1回の記事参照)

また、ライブラリもインポートしておきます。

#↓ドライブをマウントした後に実施すること
%cd "/content/drive/My Drive/Colab Notebooks/swing_trade"

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

続いて、適当な銘柄のデータを取得します。

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

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

取得したデータがdfという変数に格納されました。

ステップ2:単純移動平均線

単純移動平均線(sma)は、簡単にいうと基準の日から指定した過去期間の終値の平均を線でつないだ線です。

例えば、5日単純移動平均は基準の日を含む5日間分の終値を平均した値となります。

証券会社のチャートでは、デフォルトで25日移動平均がよく表示されています。

今回は簡便のため、5日移動平均を算出してみようと思います。

以下のコードで算出が可能です。

close=df['Close']
df['sma05'] = close.rolling(window=5).mean()

1行目はdfのClose列をcloseという変数に格納しています。

2行目は、rolling.meanという関数を利用しています。windowの部分の数字を変えることで、任意の単純移動平均を算出可能です。

算出した値を、sma05という新しく追加した列に格納しています。

headで確認してみましょう。

df.head(10)
	      Open	High	Low	Close	Adj Close	Volume	sma05
Date							
2013-01-04	477.0	485.0	474.0	484.0	335.292023	119113900	NaN
2013-01-07	487.0	488.0	475.0	476.0	329.749939	86678900	NaN
2013-01-08	469.0	471.0	457.0	462.0	320.051422	117835800	NaN
2013-01-09	451.0	472.0	449.0	469.0	324.900726	122409400	NaN
2013-01-10	474.0	484.0	472.0	474.0	328.364410	158715200	473.0
2013-01-11	482.0	485.0	476.0	479.0	331.828186	102374600	472.0
2013-01-15	487.0	488.0	481.0	483.0	334.599182	83801000	473.4
2013-01-16	479.0	482.0	466.0	469.0	324.900726	111780600	474.8
2013-01-17	473.0	474.0	461.0	471.0	326.286194	109902600	475.2
2013-01-18	484.0	485.0	477.0	484.0	335.292023	117878500	477.2

5日移動平均のため、始めの4日間はNaNになっています。5日目以降は正しく算出されていそうです。

ステップ3:指数平滑移動平均線(次回実施)

続いて指数平滑移動平均線(ema)を追加します。

と思ったのですが、emaを算出するにはTa-libというライブラリを利用することで簡単に算出することができるのですが、グーグルコラボで利用しようとするとなかなか手間がかかるので、次回MACDやRSIを算出する回でまとめて解説とさせてください。

ステップ4:出来高移動平均線

最後に出来高移動平均線を算出します。

こちらも単純移動平均線と同じで、扱う値が終値⇒出来高に変わっただけです。

出来高を伴って上昇/下落した日はトレンド発生のシグナルとなったり、トレンドの転換点となったりすると言われています。

出来高を伴ったかどうかの判断基準として、出来高移動平均線を使うことが多いので、これも有用な指標となりそうです。

例として5日の出来高移動平均線を算出します。

volume=df['Volume']
df['vwma05'] = volume.rolling(window=5).mean()

df.head(10)

問題なく算出されていそうです。

	      Open	High	Low	Close	Adj Close	Volume	sma05	vwma05
Date								
2013-01-04	477.0	485.0	474.0	484.0	335.292023	119113900	NaN	NaN
2013-01-07	487.0	488.0	475.0	476.0	329.749939	86678900	NaN	NaN
2013-01-08	469.0	471.0	457.0	462.0	320.051422	117835800	NaN	NaN
2013-01-09	451.0	472.0	449.0	469.0	324.900726	122409400	NaN	NaN
2013-01-10	474.0	484.0	472.0	474.0	328.364410	158715200	473.0	120950640.0
2013-01-11	482.0	485.0	476.0	479.0	331.828186	102374600	472.0	117602780.0
2013-01-15	487.0	488.0	481.0	483.0	334.599182	83801000	473.4	117027200.0
2013-01-16	479.0	482.0	466.0	469.0	324.900726	111780600	474.8	115816160.0
2013-01-17	473.0	474.0	461.0	471.0	326.286194	109902600	475.2	113314800.0
2013-01-18	484.0	485.0	477.0	484.0	335.292023	117878500	477.2	105147460.0

次回の記事はこちらからどうぞ。

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

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

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

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

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

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

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

目次