MATLAB에서 주가 데이터 자동 취득 3개 데이터 시각화

13084 단어 주가matlab

지금까지



MATLAB에서 Yahoo Finance에서 자동 데이터 수집을 하고 이동 평균을 구하는 곳까지 할 수 있었다.
timetable데이터를 가시화하면 휴일이나 공휴일이 찢어져 버리는 문제가 발각. Yahoo Finance처럼 찢어지지 않도록 표시한다.

예상 표시



timetable을 stackedplot이나 candle 함수로 가시화하면 다음과 같이 치아가 되어 버린다. 올해의 GW는 10일간도 쉬었기 때문에, 첫 쪽에 큰 이빨이 있다.


위를 아래 (Yahoo 금융에서 발췌)처럼 치아 빠지지 않고 시각화 할 수 있도록하고 싶다.


치아 제거



timetable 데이터를 가시화하는 것으로 잇몸이 발생하므로, 시간축의 데이터를 사용하지 않고 표시를 실시하면 잇몸이 해소.
candle(data{1:end, 1:4})    % 休場日が歯抜けになるので並べ替え
legend('Candle')

hold on
% 移動平均を表示
plot(data.AveFilt5,...
    'Color', [0.9 0.3 0.3], 'DisplayName','5day')
plot(data.AveFilt15,...
    'Color', [0.7 0.3 0.1], 'DisplayName','15day')
plot(data.AveFilt30,...
    'Color', [0.5 0.3 0.1], 'DisplayName','30day')
hold off
grid on



또한 X 축의 눈금 설정을 수행합니다.
ha = gca;   % 休場日が歯抜けになるので並べ替え
xticksloc = ceil(ha.XTick);
tempTime = data.Time;
for n = length(data.Time)+1:max(xticksloc)+1
    % Plot上のTickはあるが、データが無いところを補完
    tempTime(end+1) = tempTime(end)+1;
end
sz1 = size(tempTime, 1);

% データ長によって軸目盛を可変
if sz1 < 50
    tempTime.Format = 'M月d日';
    ha.XTickLabel = string(tempTime(xticksloc+1));
    xlabel(year(tempTime(end)))
elseif sz1 < 105    
    tempTime.Format = 'yy年M月';
    ha.XTickLabel = string(tempTime(xticksloc+1));
    tempTime.Format = 'yy年M月d日';
    ha.XTickLabel{1} = string(tempTime(xticksloc(1)+1));
    ha.XTickLabel{end} = string(tempTime(xticksloc(end)+1));
    xlabel(year(tempTime(end)))
else
    % 上と同じ。様子を見ながら調整する。
    tempTime.Format = 'yy年M月';
    ha.XTickLabel = string(tempTime(xticksloc+1));
    tempTime.Format = 'yy年M月d日';
    ha.XTickLabel{1} = string(tempTime(xticksloc(1)+1));
    ha.XTickLabel{end} = string(tempTime(xticksloc(end)+1));
%     xlabel(year(tempTime(end)))
end
title([data.Properties.Description '  ' num2str(data.Properties.UserData)])

색도 바꾸어 보았다



그런 다음 ...
candle 함수 속을 적게 잡아 주가가 올랐을 때와 내려갔을 때에 색을 바꾸어 보았다.


바꾼 것은 candle 함수의 여기↓
    for i = 1 : numObs
        if op(i) < cl(i)
            color = 'r';        % red
        else
            color = 'b';
        end
        h(i+1) = fill(ax, ...
                [indexLeft(i); indexLeft(i); indexRight(i); indexRight(i)], ...
                [op(i); cl(i); cl(i); op(i)], color, 'Edgecolor',color, ...
                'LineStyle','-','Marker','none','AlignVertexCenters', 'on');
    end

상당히 보기 쉬워졌다.



Thanks to i씨

좋은 웹페이지 즐겨찾기