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

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

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

Больше
6 мес. 3 нед. назад - 6 мес. 2 нед. назад #39 от roman
В начале рассмотрим установку Pyton и Visual Studio Code на компьютер.
1. Установка Visual Studio Code с официального сайта code.visualstudio.com/
2. Установка расширения Python для Visual Studio Code
В верхнем меню перейдите на меню Представление (View) выберите Расширения (Extensions) или щелкните значок Расширения (Extensions) на панели действий в левой части Visual Studio Code.
Чтобы отфильтровать список расширений, введите Python в поле поиска в верхней части представления расширений. Выберите расширение, опубликованное корпорацией Майкрософт (обычно первое в списке). Сведения об этом расширении будут отображаться на вкладке в основной области справа.
3. Установка Python в Windows
Перейдите на официальную страницу загрузки Python: 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 мес. 2 нед. назад пользователем roman.

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

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

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

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

Больше
6 мес. 3 нед. назад - 6 мес. 3 нед. назад #41 от 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=' 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'

 
#2.3. копируем OHLC в таблицу(dataframe) пандаса
 dfOHLC=pd.DataFrame(listOHLC,columns=) 
 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)
plt.show()
Последнее редактирование: 6 мес. 3 нед. назад пользователем roman.

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

Больше
6 мес. 3 нед. назад - 6 мес. 3 нед. назад #42 от 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. Все заголовки и параметры добавляются очень просто, также и обработка ответов сервера. 
Дополнительно устанавливать данную библиотеку - не требуется.
Последнее редактирование: 6 мес. 3 нед. назад пользователем roman.

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

Больше
6 мес. 3 нед. назад - 6 мес. 3 нед. назад #43 от 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 = ext_array.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, ext_array, 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()


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

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

Работает на Kunena форум
Яндекс.Метрика