код московской биржи для google finance
Автоматическое получение биржевых котировок в Google Spreadsheet
Приветствую вас, начинающие (и не только) портфелеводы. В прошлый раз (https://smart-lab.ru/blog/492069.php) мы значительно облегчили себе жизнь, частично автоматизировав ввод сделок. Сегодня сделаем еще один небольшой шажок в светлое будущее, научим наш Гугл документ по расписанию забирать актуальные котировки.
Шаг этот будет немного скучный (так как придется немного попрограммировать), но, надеюсь, полезный.
Итак, приступим. Без лишних слов хочу показать Гугл документ, в котором уже реализовано обновление котировок: https://docs.google.com/spreadsheets/d/1vGj_NszrlVt-1sA225RAgkOLEkdiGBmnSa3lTpsWfzI/edit?usp=sharing
Вполне возможно, что вам этого будет достаточно. Если же остались вопросы, то коротенько опишу, что он делает и как работает.
Во-первых, в этом документ есть лист «Портфель», который содержит информацию по вашим ценным бумагам. Для примера я оставил несколько бумаг (акций и облигаций), убрав все лишнее (в том числе и форматирование).
Для обновления котировок нужно нажать большую красную кнопку, после чего скрипт запросит у вас (вы должны быть залогинены в Гугл) определенные разрешения (их нужно дать, иначе не работает) и начнет получать данные. По результаты работы выдает такое сообщение:
Как же все работает?
Сначала в скрипте (сам скрипт можно скачать по ссылке: my.pcloud.com/publink/show?code=XZG0Q17ZuC1NsO3HKY8PaD2e8cAzXR5Byz47) идет «настроечная часть», где нужно прописать правильный ID листа, УРЛы до данных и т.п.:
var sheet_id = «1vGj_NszrlVt-1sA225RAgkOLEkdiGBmnSa3lTpsWfzI»;
var googleSpreadSheet = SpreadsheetApp.openById(sheet_id);
//my tickers settigns
var rangeDefPortfolio = «A8:AC120»;
var myBadTickersGlobal = [‘TODO:’,’EXTRA’]; //no real tickers which exist in my Portfolio. I want to ignore them
var myTickersDataGlobal = <>; //Some extra data about my tickers parsed from the Portolio sheet. I need to know number of lots, types, etc.
var myTickersGlobal = collectMyTickersNew();
var limitForWarningGlobal = 4;
var warningsArr = []; //if a price changes — we’ll push info about changed ticker into this global array
var allErrors = [];
С помощью функции collectMyTickersNew() собираются данные о ваших ценных бумагах с листа «Портфель». Это нужно, чтобы сохранять информацию только по нужным активам.
Основная функция — stocksAndBondsRealTime(), именно ее нужно запускать, чтобы получить обновленные котировки. Сама она достаточно простая.
Сначала забирает XML данные по указанным в начале адресам, формирует массив в нужном формате, а потом записывает его на лист «XMLStocks».
Все легко и элегантно, в результате на листе XMLStocks появляются нужные нам данные:
Для облигаций дополнительно сохраняется информация по купону (дата и размер следующего и т.д.), экспирации, НКД.
Потом эти данные можно использовать для подсчета будущих денежных поступлений (описывал здесь: https://smart-lab.ru/blog/492305.php )
Осталось два небольших действия:
1. На листе «Портфель» в колонку «Рыночная цена» прописываем формулу, которая будет показывать актуальные данные с листа XMLStocks: VLOOKUP($A8,XMLStocks!$A$2:$P$98, 3, FALSE)
2. Добавляем в триггеры проекта регулярное выполнение функции stocksAndBondsRealTime()
Я запускаю эту функцию раз в час, чаще необходимости не вижу. Да и зачем создавать лишнюю нагрузку на сервера Гугла и Биржи?
В дополнение для каждой бумаги в портфеле я добавил две колонки «Цена алерта покупать» и «Цена алерта продавать». Они нужны для оповещения по почте, когда рыночная цена оказывается меньше или больше желаемой. Скрипт, получив все котировки, проверяет целевые цены и формирует массив на отправку. Также у меня есть оповещения (код функций я здесь не привожу, там все несложно, просто сравниваю одну цену с другой), если цена какой-то бумаги изменилась больше, чем на заданную величину (limitForWarningGlobal = 4 в моем случае). Выглядит письмо примерно так:
Сначала я думал, что это мне будет полезно, но в реальной жизни оказалось, что я все равно никаких действий не предпринимаю, даже если цена поменялась на эти 4-5 процента. Разве что может быть полезно узнать, что облигации ваши сильно просели. Если у эмитента начались какие-то проблемы, то облигации падают не так быстро, как акции. Можно успеть слить их процентов по 90 от номинала, а не дожидаться падения до 30% и ниже (как у меня было с Татфондбанком)
Учет инвестиций в гугл-таблицах №2 — получаем котировки акций и ETF с Мосбиржи
В прошлой статье мы разобрали способ получения котировок акций ( и ETF) с помощью функции GoogleFinance. Правда по некоторым российским бумагам получении инфы таким образом невозможно. Речь идет о привилегированных акциях (типа Сбера, Татнефти, Сургута) и практически всех российских биржевых фондах (FXIT, VTBX, SBSP и так далее).
Ок, будет разбираться как это можно сделать другим способом. Расскажу какие формулы можно использовать для этих целей. Отдаю готовый шаблон гугл-таблицы с уже заполненными данными.
Котировки российских акций
Для вызова котировок привилегированных акций (впрочем как и обыкновенных) используем формулу следующего вида (все пишется слитно, без пробелов):
Вот как это выглядит в таблице:
Получение котировок для российских привилегированных акций
Дополнительно, чтобы не прописывать руками, можно сделать автоматический вывод названия компании. Мы сразу будем видеть, что формула ничего не путает и отдает нам котировки нужных нам акций.
Для вывода названия акций (компании) используем формулу:
Получаем цену ETF и БПИФ в рублях / долларах и евро
Если мы захотим получить котировки российских биржевых фондов по вышеописанной формуле, просто заменив тикер акции на тикер ETF (или БПИФ), то нас постигнет фиаско. Формула будет выдавать ошибку.
Для биржевых фондов нужна формула следующего вида:
Как всегда, при необходимости меняем адрес ячейки с тикером.
Получаем название и котировки российских биржевых фондах в Гугл-таблицах
Что это за зверь такой?
Соответственно прописываем в формулу нужный идентификатор.
Дабы сэкономить читателю время, в формуле вызова котировок используем идентификатор:
Для автоматического получения названия фонда по тикеру, в формуле соответственно также нужно поменять идентификатор.
В таблице накидал несколько примеров вызова цен по валютным фондам.
Выводим котировки биржевых фондов РФ в долларах и евро
Цена иностранных акций на Мосбирже
На Московской бирже обращаются иностранные акции, номинированные в рублях.
Формула вызова котировок имеет следующий вид:
Красным пометил отличия от предыдущих формул:
Настройка таблицы или возможные проблемы
Для исправлении ошибки выбираем в меню «Файл->Настройки таблицы».
На вкладке «Общие» в поле Региональные настройки» нужно выбрать Соединенные Штаты.
Нужно знать
Не забываем про задержку во времени. Так же как и ГуглФинанс, котировки по API Мосбиржи подгружаются примерно с 20 минутным опозданием.
В приоритете (там где это возможно) лучше использовать функцию GoogleFinfnce. Если в таблице много инструментов, то загрузка по API может быть очень долгой. В этом плане Гуглфинанс работает пошустрее. Поэтому используем API Мосбиржи только там, где Гугл бессилен: префы российских компаний и биржевые фонды.
Для акций у которых котировки рассчитываются до более 2-х знаков после запятой, тоже лучше использовать API. В этом случае цена будет передаваться более точная.
Из подобного есть еще Русал, ИнтерРао, Русгидро, АФК Система, Россети, ФСК ЕЭС и много чего еще.
Готовый шаблон
Комментарии, замечания, пожелания приветствуются!
В третьей части будем автоматически выдергивать информацию по дивидендам российских акций.
Всем огромное спасибо за замечания!
За обновлениями в этой и других статьях теперь можно следить на Telegram-канале: @vsedengy.
Что делает Free API Московской биржи в Google Таблицах
Количество частных инвесторов на Московской бирже удвоилось за последний год и составило 3,86 млн: за 2019 счета на Мосбирже открыли 1,9 млн человек. Санкт-Петербургская биржа, специализирующаяся на торгах акциями иностранных компаний, в прошлом году зафиксировала трехкратный прирост счетов – с 910 000 до 3,06 млн шт.
Это означает, что на рынок пришло почти 2 млн новичков, которые никогда не занимались трейдингом и не использовали специализированный софт для торгов и учета позиций.
И если мобильные приложения брокеров для торгов постоянно обновляются и в целом достаточно удобны для пользователей, то учёт позиций, особенно при использовании нескольких брокеров (счёт от одного, а ИИС от другого) может вызывать вопросы. Бесплатным решением с автоматическим скачиванием котировок и параметров могут быть гугл таблицы с использованием бесплатного API Московской биржи.
Ранее я уже описывал на Хабре возможности при использовании разных приложений (Intuit Quicken, KMyMoney, Microsoft Excel, Google Таблицы) для совокупного учета капитала “в одном окне”.
API Московской биржи в формулах Google Таблиц
Вообще вариантов использования API Мосбиржи два:
Но скрипты в бесплатных документах скорее пугают людей, особенно, если у этих людей есть какие-то инвестиции. И особенно, если они не понимают код скрипта. Поэтому я остановлюсь только на формулах.
В общем виде все запросы, которые можно отправить к API Мосбиржи можно узнать в справочнике. Но лично для меня этот справочник был не очень понятен и я далеко не сразу в нём разобрался, поэтому сделал простую Гугл таблицу с примерами, которые использую сам.
Идентификатор режима торгов
В API Московской биржи очень многое зависит от параметра “Идентификатор режима торгов” (primary_boardid), который можно посмотреть прямо у них на сайте через форму поиска.
Идентификатор режима торгов для акций Сбербанка
Также этот идентификатор можно посмотреть через обычный HTTP-запрос к API:
Идентификатор режима торгов primary_boardid для акций Яндекс
Автоматическое получение имени инструмента с Московской биржи по его идентификатору
Очень удобно, что можно получить полное наименование инструмента. Также можно автоматически получать и краткое наименование инструмента, но полное название более понятно особенно для облигаций.
Гугл таблица с примерами автоматического получения имени для разных классов активов
Автоматическое получение цены инструмента с Московской биржи по его идентификатору
Цены на российские активы можно получать с множества сайтов, но если мы говорим про API Московской биржи, то на этой вкладке представлены актуальные примеры.
Гугл таблица с примерами автоматического получения цен для разных классов активов
Автоматическое получение даты следующего купона и его значения с Московской биржи по идентификатору облигации
По облигациям (не только корпоративным, но также ОФЗ и еврооблигациям) можно автоматически получать дату выплаты следующего купона и его значение.
Гугл таблица с примерами автоматического получения дат и значений купонов
Автоматическое получение дивидендной доходности на конкретную дату с Московской биржи по идентификатору облигации
К сожалению, в одну формулу получить значение дивидендной доходности для облигации на конкретную дату можно получить только для ОФЗ, потому что их список короткий. Для корпоративных облигаций — можно перебирать в скрипте, например, или вручную указывать начальную позицию для поиска.
Гугл таблица с примерами автоматического получение дивидендной доходности на конкретную дату
Автоматическое получение дат оферт с Московской биржи по идентификатору облигации
Очень удобно можно планировать собственные финансы, получая оферты по облигациям автоматически.
Гугл таблица с примерами автоматического получения дат оферт
API Московской биржи предоставляет широкие возможности. В статье описал только те инструменты, которыми пользуюсь сам как долгосрочный частный инвестор.
Также хочу отметить, что никак не связан с Московской биржей и использую ИСС Мосбиржи только в личных интересах, например, для учета собственного капитала.
Автор: Михаил Шардин,
4 февраля 2020 г.
Получение real-time данных с Google Finance
Существует класс алгоритмов, основанных на корелляции цен активов на разных рынках. Для того, чтобы исследовать такие корелляции, например, между американским и российским рынком, необходимо иметь доступ к данным в реальном времени с западных бирж, поставку которых предлагают специальные провайдеры за довольно существенную плату.Однако, есть возможность использования вместо платного датафида парсинг данных real-time с сайта Google Finance. На таких данных высокочастотную стратегию, конечно, не построить, но для более медленных стратегий такой способ вполне подойдет. Впрочем, на высоких частотах сильной корелляции с американцами уже давно нет, и HFT алгоритмы с такой идеей не работают, а вот на длинных промежутках времени есть очень широкое поле для исследований. Как осуществить получение данных с Google Finance рассмотрено в блоге Pawel Lachowicz, перевод которой представлен ниже.
В этом посте мы рассмотрим, как получить данные реального времени, транслируемых на сайте Google Finance, для использования их в качестве исходных данных бэктеста или в реальном торговом приложении. Эти данные можно применять для внутридневных торговых систем. В заглавии поста показан пример отображения котировок Apple на Google Finance.
Ядро нашего кода, написанного на языке Python, представляет собой небольшую функцию, делающую основную работу.Для определенного тикера компании на сайте Google, она парсит данные непосредственно с сайта, получая последнюю текущую цену актива:
Для правильной работы программы нужно убедиться, что тикер написан верно (как будет показано ниже). Далее, отобразим на экране местное текущее время и затем заменим его на нью-йоркское (биржевое) время. Мы делаем это, так как будем получать цены акций, торгующихся на NYSE или NASDAQ. Если вы хотите получать значения английского индекса FTSE100, то нужно сменить время на универсальное (Лондон):
Сделав это, применим стороннюю функцию combine для помещения всех считанных данных в переменную-список языка Python:
На вход мы подаем тикер интересующей нас компании с сайта Google:
для которого открываем новый текстовый файл, где будем сохранять все запросы в реальном времени:
Далее создаем окончательный цикл по всему торговому дню. В нашем примере мы получаем последние данные в 16:00:59 по нью-йоркскому времени. Ключевой параметр программы — переменная freq, где мы задаем частоту внутридневной нарезки данных (в секундах). Автор определил, что оптимальным значением будет 600 сек (10 мин), так как при более частых запросах Google Finance может зафиксировать высокую активность с вашего IP и посчитать это флудом. Впрочем, вы можете найти наименьшее значение для вашего IP.
Чтобы проверить, как программа работает на практике, автор запустил ее 9 января 2014 года по времени Нью-Йорка 03:31:19. Полученные данные записались в файл в следующем виде:
Важно отметить, что время, которое мы записываем и пытаемся ассоциировать со временем полученной котировки, является локальным временем компьютера, поэтому не ожидайте равных временных интервалов между значениями и большой точности фиксации. Однако в нашем случае, когда мы хотим оценить корелляцию на довольно длительных промежутках, точность определения времени не имеет столь важного значения, как это бывает в случае высокочастотных стратегий. Обратим внимание, что если интернет соединение неустойчиво, то могут появляться пропуски в данных, как это видно на приведенном выше примере.
Представленный код может быть легко модифицирован, если вы хотите получать данные сразу по нескольким активам. Просто замените часть кода приведенной выше программы, начиная с определения переменной ticker, нижеследующим кодом:
Запись котировок в реальном времени получилась такой:
где мы можем увидеть значения текущих цен для 6 акций и одного биржевого фонда ETF через каждые 10 минут.
В заключении, от себя добавлю, что было бы интересно исследовать корелляцию между американскими и российскими сырьевыми компаниями, там может присутствовать хороший временной гэп.
Другие стратегии, применяемые в алгоритмической торговле и биржевых роботах смотрите на моем сайте.
Данные Мосбиржи в гугл таблицах
Половину июня (с начала месяца до 20 июня 2021 года) в гугл таблицах было невозможно получать данные российских акций через встроенную функцию.
Сервис починили и данные снова доступны, но можно сильно расширить диапазон получаемых данных, если использовать API Московской биржи.
Копирование формул из таблицы-примера в ваши собственные таблицы
Вы можете свободно копировать формулы из моей таблицы с примером для использования в собственных таблицах, потому что на формулах нет и не может стоять никакой защиты.
Если после копирования из таблицы-примера в вашу таблицу формула не работает, то проверьте региональные настройки вашей таблицы.
Моя таблица с примером получения данных с Московской биржи
Я использую регион Соединенные Штаты, а если по умолчанию ваш регион Россия, то формулы корректно НЕ копируются!
Вот подробная инструкция как проверить региональные настройки конкретной таблицы:
Если вы не хотите менять регион в своей собственной таблице, то можно просто изменить разделитель в формуле. Для корректной работы надо изменить разделитель с запятой на точку с запятой.
Получение названий акций и облигаций
Гугл таблица с примерами автоматического получения имени для разных классов активов
Можно получать названия акций и облигаций используя сервера Московской Биржи. Сама формула при этом выглядит следующим образом:
Получение цен акций и облигаций
Гугл таблица с примерами автоматического получения цен акций и облигаций
Можно получать цены акций и облигаций используя сервера Московской Биржи. Сама формула при этом выглядит следующим образом:
Получение даты и значения дивиденда для акций
Гугл таблица с примерами автоматического получения дат и значений дивидендов для акций
Можно получать даты и значения дивидендов для акций, используя сервера Московской Биржи. У гугл финанса такого функционала никогда не было для российских акций. Сама формула при этом выглядит следующим образом:
Получение даты купона и значения для облигаций
«> Гугл таблица с примерами автоматического получения дат купонов и значений для облигаций
Можно получать даты и значения купонов для облигаций, используя сервера Московской Биржи. У гугл финанса такого функционала никогда не было для российских облигаций и вообще облигаций в сервисе нет. Сама формула при этом выглядит следующим образом:
Получение даты оферты
Гугл таблица с примерами автоматического получения дат оферт для облигаций
Можно получать оферты облигаций, используя сервера Московской Биржи. У гугл финанса такого функционала никогда не было для российских облигаций и вообще облигаций в сервисе нет. Сама формула при этом выглядит следующим образом:
Источник данных
Итоги
Можно легко расширить список получаемых в гугл таблицу параметров за счёт Московской Биржи.
Эти формулы работают только за счет API Московской биржи, с которой я никак не связан. Использую ИСС Мосбиржи только в личных информационных интересах.