Code:
clc
clear
% Определим тикер акции, который нужно запросить у Мосбиржи
% Тикер акции Сбербанк - SBER
ticker='SBER';
% Определим два массива данных
% i_price - Массив для хранения цены
% i_datetime - Массив для хранения даты и времени
i_price=[];
i_datetime=strings;
j=0;
% Данные будем запрашивать на несколько лет.
% Создадим Цикл по годам
for i = 2020:2023
% Сформируем ссылку на запрос данных с МосБиржи (Free API)
% https://www.moex.com/a2193
url='http://iss.moex.com/iss/engines/stock/markets/shares/securities/'+string(ticker)+'/candles.json?from='+string(i)+'-01-01&till='+string(i)+'-12-31&interval=24';
% webread(url) считывает содержимое из веб-службы, указанной в параметре, url и возвращает содержимое в формате data.
headers = {'Content-Type' 'application/json'; 'Accept' 'application/json'};
options = weboptions('HeaderFields',headers);
s=webread(url, options);
% Информация находится в массиве s.candles.data
% Скопируем данные в массив i_price[]
[sizaA,sizeB]=size(s.candles.data);
for i = 1:sizaA
j=j+1;
i_price(j,1)=j; %Номер значения
i_price(j,2)=s.candles.data{i}{1,1}; %'open'
i_price(j,3)=s.candles.data{i}{2,1}; %'close'
i_price(j,4)=s.candles.data{i}{3,1}; %'high'
i_price(j,5)=s.candles.data{i}{4,1}; %'low'
i_price(j,6)=s.candles.data{i}{5,1}; %'value'
i_price(j,7)=s.candles.data{i}{6,1}; %'volume'
dt=datestr(datetime(s.candles.data{i}{7,1},'Format','yyyy-MM-dd HH:mm:ss'), 'dd.mm.yyyy');
i_datetime(j,1)=string(dt); % begin data
dt=datestr(datetime(s.candles.data{i}{7,1},'Format','yyyy-MM-dd HH:mm:ss'), 'HH:mm:ss');
i_datetime(j,2)=string(dt); % begin time
dt=datestr(datetime(s.candles.data{i}{8,1},'Format','yyyy-MM-dd HH:mm:ss'), 'dd.mm.yyyy');
i_datetime(j,3)=string(dt); % end data
dt=datestr(datetime(s.candles.data{i}{8,1},'Format','yyyy-MM-dd HH:mm:ss'), 'HH:mm:ss');
i_datetime(j,4)=string(dt); % end time
end
end
% Вывод графика изменения стоимости акции
figure(1)
x_data=i_datetime(:,1);
y_data=(i_price(:,4)+ i_price(:,5))/2;
plot(i_price(:,1),y_data)
grid on
title('Котировки ' + string(ticker) + ". Обычный график");
figure(2)
tsobj=[ i_price(:,2),i_price(:,4), i_price(:,5), i_price(:,3)];
candle(tsobj,'b');
title('Котировки ' + string(ticker)+ ". Свечной график");