MATLAB에서 주가 데이터 자동 취득 그 1 데이터 취득

7999 단어 주가matlab

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, ",");   % 数値の, を削除

이런 셀 배열이 되었다.


4. Times Table 데이터 작성



여기는 좀 더 현명한 방법이 있을 것 같지만, 우선 이런 느낌으로 셀 배열을 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까지의 주가)


변수 편집기에서 보면 Time Table은 이렇게.


다음은 플롯할 예정.

좋은 웹페이지 즐겨찾기