最近投資を始める方が増えているらしいと
ニュースになっていました。

Pythonという言語は
そういった時系列データを分析するのに
非常に相性の良い言語です。

是非投資を始めるなら
プログラミングの方も
合わせて学んでいきましょう。


解説動画はこちら



今回の株価データは
こちらに掲載されていたものを
利用しています。

株式投資メモ
1321 日経225連動型上場投資信託
https://kabuoji3.com/stock/1321/

スプレッドーシートなどで
CSVファイルにする事で
株価データを読み込みする事ができます。

まずは手作業でCSVファイルを
作ってみてください。

CSVファイルが出来たら
データを読み込んでいきます。

今回は「Google Colabolatry」
というGoogle社が提供している
プログラミングツールのサービスを利用します。

https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja

Googleアカウントを持っている方は
すぐに始める事ができます。

使い方が分からない方は
こちらをみてください。
GoogleColabの使い方

まず最初にデータをアップロードします。
画面左のフォルダマークをクリックして
右クリックからアップロードで
ファイルを配置します。
スクリーンショット 2020-09-21 17.11.06


それができたらデータの読み込みを行います。

「Pandas」ライブラリは
表構造のデータを取り扱うためのライブラリです。

ファイルからデータフレームという形で
データを読み込みします。

これと数値計算用の「numpy」ライブラリ
これを使っていきます。
import pandas as pd
import numpy as np

df = pd.read_csv('stock_1321.csv',index_col=0)
df = df.sort_index(ascending=True)

df
スクリーンショット 2020-09-21 17.14.05


今回のデータはこんな感じになっています。
date 日付
open 始値
high 高値
low 安値
close 終値
volume 出来高
adjust 調整済終値

株価の動きをみていきましょう。
描画用のライブラリである
Plotlyを使って時系列データを描画します。

まずはライブラリの読み込みです。
import plotly
import plotly.graph_objs as go
# Google Colab. やJupyter Lab.でプロットするためには,以下を実行する.
import plotly.io as pio
pio.renderers.default = "colab"
plotly.__version__
4.4.1

続いて表示用データの作成です。
# 表示用のデータを生成しておく
xlabels = np.arange(len(df))
interval = 20 
vals = [df.index[i*interval] for i in range(len(df)//interval)]
labels=[df.index[i*interval] for i in range(len(df)//interval)]
date_format = 'date:{}
open:{}
high:{}
low:{}
close:{}' hovertext = [date_format.format(df.index[i],df.loc[df.index[i],'open'],df.loc[df.index[i],'high'],df.loc[df.index[i],'low'],df.loc[df.index[i],'close']) for i in range(len(df))]

表示するデータを作成できたら
描画を行います。
# ローソク足のプロット
fig = go.Figure(
    # データの指定
    data=go.Candlestick(
        x = xlabels,
        open=df['open'],
        high=df['high'],
        low=df['low'],
        close=df['close'],
        hovertext=hovertext ,
        hoverinfo="text"
        ),
    # グラフのレイアウト設定
    layout = go.Layout(
        xaxis = dict(
            tickvals=vals,
            ticktext=labels,
            tickangle=-45
        ),
    )
)
fig.show()
スクリーンショット 2020-09-21 17.17.41



データフレームには
各種データが揃っているので
ここから色々な数値計算をする事で
各指標を作成していく事ができます。

ただし、この指標の作成は
初心者には少し厳しいと思います。

cufflinksライブラリを用いると
指標の作成を簡単に行う事ができるので
これを使っていきましょう。

import cufflinks as cf

Pandasデータフレームから
一度cf用のデータに変換して描画します。
import cufflinks as cf

qf = cf.QuantFig(df, name='日経 225')

plotly.offline.iplot(
    qf.iplot(asFigure=True)
)
スクリーンショット 2020-09-21 17.20.03


ここに色々な指標を追加していきます。

移動平均(add_sma)
ボリンジャーバンド(add_bollinger_bands)
出来高(add_volume)
RSI(add_rsi)
MACD(add_macd)
qf = cf.QuantFig(df[150:], name='日経 225')

qf.add_sma([10,20],width=2,color=['green','lightgreen'],legendgroup=True)
qf.add_bollinger_bands(periods=20,boll_std=2,colors=['magenta','grey'],fill=True)
qf.add_volume()
#qf.add_rsi(periods=20,color='java')
#qf.add_macd()

plotly.offline.iplot(
    qf.iplot(asFigure=True)
)
スクリーンショット 2020-09-21 17.20.49




指標の他にラインを引く事ができます。

サポートライン
qf.add_support(日付)
抵抗ライン
qf.add_resistance(日付)

日付の指定方法が
少し特殊なので気をつけてください。

日(2桁) 月(英語表記の3桁) 年(2桁)

qf = cf.QuantFig(df[250:], name='日経 225')

# サポートライン
qf.add_support('31Jul20')

# 抵抗ライン
qf.add_resistance('25Aug20')

plotly.offline.iplot(
    qf.iplot(asFigure=True)
)
スクリーンショット 2020-09-21 17.24.20




最後にトレンドをみてみましょう。

トレンドラインを引いてみます。
qf.add_trendline(開始日, 終了日)
qf = cf.QuantFig(df[250:], name='日経 225')

qf.add_trendline('03Aug20', '26Aug20')

plotly.offline.iplot(
    qf.iplot(asFigure=True)
)
スクリーンショット 2020-09-21 17.25.14


データを差し替えれば
様々な個別銘柄の株価を描画して
トレンドなどを把握していく事ができます。

プログラミングが上達したら
各証券会社が提供しているツールよりも
細かな設定を施すことなどが出来る様になります。

自己投資として
プログラミングは
身につけておいて損はありません。

Python言語の文法などが分からない方のために
5時間ほどで学べる動画講座を用意しています。
5時間で学ぶプログラミング基礎 (python編)

是非この機会にプログラミングの方も
始めてみましょう。

分からない所があれば
気兼ねなくYoutubeにコメントをどうぞ

今回はここまでです
それでは。