16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MATLABで株価データ自動取得 その1 データ取得

Last updated at Posted at 2019-08-06

MATLABで株価データを取得してみた

Yahooファイナンスの時系列データを自動的に取得して解析したい!
ということで、MATLABのText Analytics Toolboxで試しにやってみた。今回はとりあえずデータ取得するところまで。

1. RESTful-API

Yahooファイナンスの時系列データのURLは以下のような構造になっている。

baseURLTimeseries = "https://info.finance.yahoo.co.jp/history/?code=";
getURL = baseURLTimeseries+num2str(stockCode)+"&sy="+string(year(sDateTmp))+...
        "&sm="+string(month(sDateTmp))+"&sd="+string(day(sDateTmp))+...
        "&ey="+string(year(eDateTmp))+"&em="+string(month(eDateTmp))+...
        "&ed="+string(day(eDateTmp))+"&tm=d";

2. HTMLの取得

MATLABではwebreadだけでHTMLデータを取得できる。上のURLをwebreadに放り込むとHTMLのテキストデータが取得できる。

str = webread(getURL);
tree = htmlTree(str);
stockName = eraseTags(string(findElement(tree,"h1")));  % H1タグ(会社名)を見つけてHTMLタグを削除

3. テキストデータの加工

HTMLファイルからタグや不要な文字列を削除して、時系列データだけを抽出する。

startTag = "調整後終値*";
stopTag = "VIP倶楽部限定";
str = eraseTags(str);   % HTML Tagを削除
str = extractBetween(str, startTag, stopTag);   % 不要部分文字列を削除
splitStr = split(str, "  ");    % 1つのセルをセル配列に分割
splitStr = splitStr(2:end-2);           % 最後の2つは不要のため削除
splitStr = reshape(splitStr, [verNum+1, length(splitStr)/(verNum+1)])';
splitStr = erase(splitStr, ",");   % 数値の, を削除

こんなセル配列になった。
stockDataCell.jpg

4. Time Talbeデータの作成

ここはもうちょっと賢いやり方がありそうだけど、とりあえずこんな感じでセル配列をTime Tableに変換した。

temp = timetable(datetime(splitStr(:,1)));
for n = 2:numel(varNames)+1
    temp = addvars(temp, cellfun(funcStr2num, splitStr(:,n)));
end
stockData = [stockData; flipud(temp)];

5. MATLAB関数化

引数に株価コード、開始・終了日を設定できるようにして関数化した。

function stockData = dataAcqFromYahoo(stockCode, startDate, endDate)

6. 実行結果

実行すると株価データをtime tableにして返してくれる。(トヨタ自動車の2019/6/1~8/5までの株価)
commandWindowStockData.jpg

変数エディタで見るとTime Tableはこのように。
timeTableStock.jpg

次はプロットする予定。

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?