Получение финансовых данных. Название индикаторов показано на рисунке выше. Вы также можете использовать скрипт https://pypi.org/project/Yahoo-ticker-downloader/.
Парсинг финансовой информации с Yahoo Finance
Чтобы анализировать экономические данные, их необходимо получить. Данные в режиме почти реального времени легче получить от Yahoo Finance, чем от Bloomberg. Поскольку Bloomberg ориентирован на новости, защита от веб-скрейпинга, конечно, намного сильнее. Если вы введете данные небрежно, то легко можете получить страницу запроса капчи.
Ниже я привожу пример получения данных о валюте и индексах с сайта Yahoo Finance в Python с помощью движка Chrome и Yahoo Finance API. Код Google Colab здесь. Я извлекал и разбирал данные из JSON в html-коде страниц, а не разбирал страницы, хотя в коде есть небольшой пример, как это сделать с помощью библиотеки BeautifulSoup.
Код получения данных с Yahoo Finance
Для анализа страниц вам понадобится библиотека Selenium, драйвер Chrome и библиотека BeautifulSoup.
!pip install selenium !apt-get update # для обновления Ubuntu для правильной работы apt install !apt install chromium-chromedriver !cp /usr/lib/chromium-browser/chromedriver /usr/bin import sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver') from selenium import webdriver chrome_options = webdriver. ChromeOptions() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('-disable-dev-shm-usage') import pandas as pd #import chromedriver_binary from bs4 import BeautifulSoup import re import string import import time from google.colab import files from json import loads
После загрузки библиотек загружается драйвер chrome:
wd = webdriver.Chrome('chromedriver', chrome_options=chrome_options)
Для получения данных о валютах используется простой код:
wd.get('https://finance.yahoo.com/currencies') time.sleep(10) currencies_html = wd.execute_script('return document.body.innerHTML;') currencies_soup = BeautifulSoup(currencies_html,'lxml') currencies_soup = currencies_soup.find('script',text=re.compile('root.App.main')).text data = loads(re.search('root.App.main\s+=\s+(\s<.*\>)", currencies_script).group(1) #print(data) info = stores = data "context""dispatcher""stores""StreamDataStore""quoteData" print("Количество валют:", len(stores)) for stores in stores: name = data "context""dispatcher""stores""StreamDataStore""quoteData "store nm = "" value = "" symbol = "" if 'shortName' in name. keys(): nm = name "shortName" value = name "regularMarketPrice "raw" symbol = name "symbol" elif 'quoteSourceName' in name.keys(): nm = name "quoteSourceName" value = name "regularMarketPrice "raw" symbol = name "symbol" info. append(nm, symbol, value) df = pd.DataFrame(data = info, columns='name', 'symbol', 'value') df'value' = df'value'.map('.format) df
Парсинг HTML страниц Yahoo Finance
Несмотря на отсутствие специального закона
symbols = '\^GSPC', '\^DJI', '\^IXIC', '\^NYA', '\^XAX', '\^BUK100P', for symbol in symbols: indexes = entry for entry in indexes_soup.find_all('tr', ) #'data-row^DJI Bgc($extraLightBlue):h BdT Bdc($tableBorderGray) Bdc($tableBorderBlue):h H(33px) Bgc($altRowColor)'>На первый взгляд может показаться, что это громоздкое решение, но это базовое решение, дополнительный модуль к другим сценариям. Я просто включаю его в розетку, и его функции меня больше не интересуют. Я могу сразу же сосредоточиться на других задачах и выполнить их, не беспокоясь о том, что откуда и как берется.
Я искал, как я могу получить текущую стоимость из ЦБ и использовать ее в сценарии Python. Я описал свой первый метод здесь.
В комментариях к предыдущему сообщению было высказано предположение, что, возможно, проще использовать github.com/ranaroussi/yfinance ?
сравнение yahooparser и yfinance для получения текущей цены в python
Признаюсь, я не знал об этом и о том, что он существует, но мне просто было не до этого, и я решил самостоятельно изучить, как работает процесс восстановления данных и его разновидности.
Я продолжаю искать способы добавить бумажные данные в свой сценарий. Из предыдущей заметки, где я объяснял, как буквально разобрать результаты поиска Google и получить фактические данные о ценах, я узнал из комментариев уважаемых обитателей smartlab, что этот метод не будет хорошим решением из-за особенностей использования html-тегов и таких атрибутов, как class id. В какой-то момент идентификатор изменится, и сценарий перестанет работать. Лучше искать что-то долгосрочное.
На этот раз я хочу сделать свой сценарий более гибким. Он должен получить данные из списка или словаря в этом формате:
В предыдущем сообщении мне пришлось загрузить исторические значения для 650 растений. Некоторые из них находятся на российском рынке, некоторые — криптовалюты, а большинство — на рынке США. Все, что касается криптовалют, валют и рынка США, взято из yahoo finance. Российский рынок был загружен с сайта finam. Конечно, я загрузил его с помощью Python. Также я расскажу вам, как сделать это снова.
Пакет yfinance. github.com/ranaroussi/yfinance Команда установки: pip install yfinance.
Забираем данные по ценным бумагам с finance.yahoo.com Python класс в подарок.
Забираем данные по ценным бумагам с finance.yahoo.com Простой способ на Python.
Можно перекачивать не только ежедневные данные. Интервалы из документации: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo На практике менее чем ежедневные данные очень ограничены. Например, почасовые данные доступны за последние 60 дней.
Теперь перейдем к тому, как загрузить котировки:
Как скачать исторические котировки c yahoo finance и финама с помощью python
импортировать yfinance как yf
Yahoo finance и python
данные = yf.download(«TSLA», start=»2017-01-01″, end=»2017-04-30″)
Как добавить интервал:
данные = yf.download(‘TSLA’, start=’2017-01-01′, end=’2017-04-30′, interval=’1h’)
Данные загружаются в рамку данных. Рамка данных может быть сохранена в формате csv:
Postfix .ME должен быть добавлен для бюллетеней Московской Биржи. То есть SBER и GAZP становятся SBER.ME и GAZP.ME Для валют тикеры выглядят следующим образом RUBUSD=X Для криптовалют BTC-USD.
Как только вы окажетесь на сайте, нажмите на кнопку «Войти» в правом верхнем углу страницы.
После регистрации введите свое имя пользователя и нажмите «Продолжить». Введите свой пароль и войдите в систему. Чтобы зарегистрироваться, нажмите кнопку «Создать учетную запись». Или создайте аккаунт, нажав на одну из кнопок для аккаунтов третьих лиц (в разделе «Создать аккаунт»).
Заполните необходимые поля и нажмите на кнопку «Далее».
Установите флажок, подтверждающий, что вы не являетесь роботом, и снова нажмите кнопку «Далее».
Как зарегистрироваться на Yahoo Finance?
Нажмите кнопку, как показано на рисунке ниже. На указанный вами номер телефона будет отправлен проверочный код.
Как только номер будет подтвержден, станет доступен ваш личный кабинет и все функции сервиса.
Чтобы создать диаграмму нужного шага за нужный период, нажмите на соответствующую иконку в области компании.
Откроется страница с подробной диаграммой. Над ним расположено горизонтальное меню, в котором можно выбрать период (1-5 дней, 1-6 месяцев, один год, два года или пять лет).
Когда вы вернетесь на страницу компании, вы увидите годовую цель для акции и диапазон цен за тот же период в левой части графика, на который вы щелкнули. Годовой целевой уровень выше текущей цены — можно покупать a ctie.
Чтобы получить общее представление о новостной картине за последние несколько дней, прокрутите страницу вниз, пока не увидите раздел с пресс-релизами или новостями.
Как работать со страницей компании?
Инструменты для технического анализа ценных бумаг можно найти на вкладке «Анализы». Чтобы открыть их, перейдите в этот раздел.
Здесь вы увидите мувинги, различные индикаторы, скользящие средние и многое другое.
Чтобы открыть профиль компании, необходимо немного прокрутить страницу вниз. Обратите внимание на движущуюся правую колонку. Когда появится текстовое поле с номером телефона и адресом, прокрутку можно прекратить. В этой колонке содержится краткая информация об организации.
Если вы хотите узнать больше об организации, нажмите на «Профиль компании». В качестве альтернативы можно использовать горизонтальное меню, с которым мы уже знакомы. Здесь также есть вкладка «Профиль». Если вы нажмете на нее, вы будете перенаправлены на профиль компании.
Здесь вы найдете адрес компании, вид деятельности, номер телефона, актуальный веб-адрес и другую информацию.
В разделе «Данные рынка» (нажмите на «Больше статистики рынка») вы найдете множество ссылок:
При выборе и анализе ценных бумаг вся эта информация будет вам полезна.
На странице портфеля вы найдете компании, которые вы добавили для отслеживания. В этом разделе вы также можете отслеживать текущий портфель и ценные бумаги, создавать и просматривать портфели и многое другое. Функциональность этого блока гораздо шире, и вы можете постепенно знакомиться с ним.
Что еще надо знать о Яху Финанс?
- на фондовый исследовательский центр;
- календарь получения дохода;
- на просеивателей и экономические данные.