Данный Google Apps Script предназначен для импорта сделок из Тинькофф Инвестиций прямо в Google таблицы, для последующего анализа.
Я сделал форкнул и допилил этот скрипт для автоматизации ручного вбивания данных из приложения тинькофф, и надеюсь он окажется полезен кому-нибудь ещё :)
- Создать или открыть документ Google Spreadsheets http://drive.google.com
- В меню "Tools" выбрать "Script Editor"
- Дать проекту имя, например
TinkoffTrades
- Для работы с API v1 (aka invest-openapi)
- Скопировать код из
Code-api-v1.gs
- Получить API-токен тинькофф
- Скопировать код из
- Для работы с API v2 (aka investAPI)
- Добавить код отсюда. Можно добавить в отдельный файл, но нужно убедиться, что этот файл будет первым в списке.
- Скопировать код из
Code-api-v2-figi-only.gs
. Этот скрипт работает только с FIGI! Для работы с тикерами используйте код изCode-api-v2-old.gs
(Больше не поддерживается). - Получить API-токен тинькофф. Используйте read-only токен, если не требуется автоматизировать торговлю.
- Добавить свойство
API_TOKEN
в разделеFile -> Project properties -> Script properties
равным токену, полученному выше. - Сохранить скрипт 💾
На этом всё. Теперь при работе с этим документом на всех листах будут доступны новые функции, описанные ниже (в API v2 доступны не все функции).
-
=getPriceByTicker(ticker, dummy)
- Получить последнюю цену (lastPrice
) указанного инструмента по тикеру. Требует на вход тикер и опциональный параметрdummy
. Для автоматичекого обновления необходимо указать в качествеdummy
ячейкуZ1
. -
=getNameByTicker(ticker, dummy)
- Получить имя указанного инструмента по тикеру. Требует на вход тикер и опциональный параметрdummy
. Для автоматичекого обновления необходимо указать в качествеdummy
ячейкуZ1
. -
=getCurrencyByTicker(ticker, dummy)
- Получить валюту (currency
) указанного инструмента по тикеру. Требует на вход тикер и опциональный параметрdummy
. Для автоматичекого обновления необходимо указать в качествеdummy
ячейкуZ1
. -
=getTrades(ticker, from, to)
- требует на вход тикер и опционально фильтрацию по времени. Параметрыfrom
иto
являются строками и должны быть в ISO 8601 формате
NOTA BENE: Следующие функции работают непосредственно с портфелем пользователя. Данные о портфеле собираются одним запросом и хранятся в кэше (см. переменную EXPIRATION_IN_SECONDS
, по умолчанию 10 сек).
-
=getAccounts()
- Вспомогательная функция для получения счетов (brokerAccountType
,brokerAccountId
) пользователя: брокерские и ИИС. -
=getAccountBalanceByTicker(accountId, ticker, dummy)
- Получить баланс указанного инструмента в указанном аккаунте по тикеру и accountId. Требует на входaccountId
(можно получить с помощью функцииgetAccounts()
), тикер и опциональный параметрdummy
. Для автоматичекого обновления необходимо указать в качествеdummy
ячейкуZ1
. -
=getAccountBalanceByCurrency(accountId, currency, dummy)
- Получить баланс указанной валюты в указанном аккаунте по имени валюты и accountId. Требует на входaccountId
(можно получить с помощью функцииgetAccounts()
),currency
(RUB, USD, EUR, etc.) и опциональный параметрdummy
. Для автоматичекого обновления необходимо указать в качествеdummy
ячейкуZ1
.
-
Скрипт резервирует ячейку
Z1
(самая правая ячейка первой строки), в которую вставляет случайное число на каждое изменении листа. Данная ячейка используется в функцииgetPriceByTicker
, - она позволяет автоматически обновлять текущую стоимость тикера при обновлении листа. -
Среди настроек скрипта есть
TRADING_START_AT
- дефолтная дата, начиная с которой фильтруются операцииgetTrades
. По умолчанию этоApr 01, 2020 10:00:00
, но данную константу можно в любой момент поменять в исходном коде.
=getPriceByTicker("V", Z1) # Возвращает текущую цену акции Visa
=getPriceByTicker("FXMM", Z1) # Возвращает текущую цену фонда казначейских облигаций США
=getTrades("V")
# Вернёт все операции с акцией Visa, которые произошли начиная с TRADING_START_AT и по текущий момент.
=getTrades("V", "2020-05-01T00:00:00.000Z")
# Вернёт все операции с акцией Visa, которые произошли начиная с 1 мая и по текущий моментs.
=getTrades("V", "2020-05-01T00:00:00.000Z", "2020-05-05T23:59:59.999Z")
# Вернёт все операции с акцией Visa, которые произошли в период с 1 и по 5 мая.