Импорт котировок с сайта Мосбиржи с помощью VisualStudioCode (Pyton)

Больше
6 мес. 1 нед. назад #230 от roman
В ветке рассмотрим вопрос:
1. импорта котировок российских акций с сайта Мосбиржи с помощью VisualStudioCode используя язык программирования Pyton.
2. создание нейронной сети, обучение ее и прогнозирование дальнейшего движения цены акции.
Тема должна быть интересной.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 мес. 1 нед. назад - 6 мес. 1 нед. назад #232 от roman
В начале рассмотрим установку Pyton и Visual Studio Code на компьютер.
1. Установка Visual Studio Code с официального сайта https://code.visualstudio.com/
2. Установка расширения Python для Visual Studio Code
В верхнем меню перейдите на меню Представление (View) выберите Расширения (Extensions) или щелкните значок Расширения (Extensions) на панели действий в левой части Visual Studio Code.
Чтобы отфильтровать список расширений, введите Python в поле поиска в верхней части представления расширений. Выберите расширение, опубликованное корпорацией Майкрософт (обычно первое в списке). Сведения об этом расширении будут отображаться на вкладке в основной области справа.
3. Установка Python в Windows
Перейдите на официальную страницу загрузки Python: https://www.python.org/downloads/
Скачаете приложение на компьютер и включите установку программы. После появления диалогового окна установщика выберите Добавить Python 3.8 в ПУТЬ (установить галочку на позиции «Add python to PATH») Примечание:
Обращаю Ваше внимание, что для построения нейронной сети мы будем пользоваться библиотекой «TensorFlow», которая совместима только с 64-битной установкой python (versions of Python 3.5.x and 3.6.x на Windows).

 
Чтобы убедиться в правильности установкиPython 3, введите следующую команду в командной строке и нажмите
клавишу «ВВОД»:
py –version
Должно появиться слово Python с набором чисел, разделенных символами. Ниже приведен пример результатов, которые вы можете получить.


Чтобы проверить, какую версиюPython вы используете, создайте новое приложение Python (новый файл.py), а затем запишите в него следующие строчки:
import struct;
print(struct.calcsize("P")*8)
В результате выполнения программы вы увидите какая разрядная версия Python у вас установлена (либо 32-битная версия, либо 64-битная версия ).
Вложения:
Последнее редактирование: 6 мес. 1 нед. назад пользователем roman.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 мес. 1 нед. назад - 6 мес. 1 нед. назад #233 от roman
Загрузку котировок мы будем выполнять через запрос к информационно-статистическому серверу Московской Биржи (далее ИСС / ISS). Информационно-статистический сервер Московской Биржи (ИСС / ISS) ( https://www.moex.com/a2193 ) позволяет выполнить загрузку котировок и других данных бесплатно (с задержкой в 15 минут) и без регистрации. Более подробное описание вы можете также посмотреть по ссылке: https://iss.moex.com/iss/reference/

В данном случае мы будем запрашивать котировки цены акции за год с интервалом 1 день.
Пример такого запроса показан ниже на примере запроса котировок Сбербанка за 2020 год: Данные по данной ссылке откроются любым браузером (обычный HTTP-запрос к API Московской Биржи) в формате данных json.
Последнее редактирование: 6 мес. 1 нед. назад пользователем roman.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 мес. 1 нед. назад - 6 мес. 1 нед. назад #234 от roman
Код проекта на языке программирования Pyton  в Visual Studio Code
import json
import math
import urllib.request
import pandas as pd 
import matplotlib.pyplot as plt
 
 #1. выбираем тикер акции 
ticker = 'GMKN'
j=0
for i in range(2015,2022,1):
   #2.1. Формируем запрос к ИСС Мосбиржи
    url='https://iss.moex.com/iss/engines/stock/markets/shares/securities/' + ticker + '/candles.json?from='+str(i)+'-01-01&till='+str(i)+'-12-31&interval=24'
    s = urllib.request.urlopen(url).read()
 
   #2.2. парсим текстовый документ из формата json в формат "dict&lists"
    dictslists=json.loads(s) 
    listOHLC=dictslists['candles']['data'] # выбираем данные находящиеся в разделе 'candles'->'data'
 
   #2.3. копируем OHLC в таблицу(dataframe) пандаса
    dfOHLC=pd.DataFrame(listOHLC,columns=['Open','Close','High','Low','Value','Volume','Begin_Date','End_Date']) 
    if j < 1:
        ext_array = dfOHLC
    else:
        frames =  [ext_array, dfOHLC]
        ext_array = pd.concat(frames,ignore_index=True)
    j=j+1
 
# 3. Вывод информации на экран
print(ext_array)
plt.plot(ext_array['Open'])
plt.show()
Последнее редактирование: 6 мес. 1 нед. назад пользователем roman.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 мес. 3 нед. назад - 5 мес. 3 нед. назад #235 от roman
Представленный код работает при поддержке следующих библиотек:

1. JSON
import json
json - это библиотека Python для работы с форматом передачи данных - json.
Данная функция используется как для разбора формата, так и для создания объектов для отправки.
Python содержит встроенный модуль под названием json для кодирования и декодирования данных JSON.
Дополнительно устанавливать данную библиотеку - не требуется.

2. Pandas
import pandas as pd
pandas — программная библиотека на языке Python для обработки и анализа данных. Работа pandas с данными строится поверх библиотеки NumPy, являющейся инструментом более низкого уровня. Предоставляет специальные структуры данных и операции для манипулирования числовыми таблицами и временными рядами.
Python не содержит по умолчанию данной библиотеки, поэтому ее нужно установить с помощью команды:
pip install pandas
Pandas предоставляет расширенный набор функций и методов для работы и выполнения анализа данных.

3. Matplotlib
import matplotlib.pyplot as plt
Matplotlib — библиотека на языке программирования Python для визуализации данных двумерной (2D) графикой.
Python не содержит по умолчанию данной библиотеки, поэтому ее нужно установить с помощью команды:
pip install matplotlib

4. Requests
import urllib.request
Request — библиотека на языке программирования Python для работы с HTTP-запросами.
Библиотека requests позволяет отправлять HTTP-запросы HEAD, GET, POST, PUT, PATCH и DELETE. Все заголовки и параметры добавляются очень просто, также и обработка ответов сервера. 
Дополнительно устанавливать данную библиотеку - не требуется.
Последнее редактирование: 5 мес. 3 нед. назад пользователем roman.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 мес. 3 нед. назад - 5 мес. 3 нед. назад #236 от roman
Для вывода графика в "читаемом виде" немного корректируем окончание кода:
from datetime import datetime
def date_convert(date_to_convert):
     return datetime.strptime(date_to_convert, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d')
ext_array['New_Date'] = ext_array['Begin_Date'].apply(date_convert)
print(ext_array)
 
plt.title('1. График '+ ticker)   # заголовок
plt.xlabel('2. Дата ')   # подпись оси OX
plt.ylabel('3. Стоимость акции, (руб.)')   # подпись оси OY
plt.grid(True)
 
plt.plot(ext_array['New_Date'], ext_array['Open'], color = 'r', linewidth = 3)
plt.setp(plt.gca().xaxis.get_majorticklabels(),rotation=-30)
import matplotlib.dates as mdates
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=80))
 
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.show()

В результате получаем график изменения стоимости акции в течение времени для запрашиваемого эмитента 
Вложения:
Последнее редактирование: 5 мес. 3 нед. назад пользователем roman.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.165 секунд