gas-tinkoff-trades
gas-tinkoff-trades copied to clipboard
Google Apps Script that imports your operations from Tinkoff Investments into Google Spreadsheets
GAS Tinkoff Trades
Данный Google Apps Script предназначен для импорта сделок из Тинькофф Инвестиций прямо в Google таблицы, для последующего анализа.
Я сделал этот скрипт для автоматизации ручного вбивания данных из приложения тинькофф, и надеюсь он окажется полезен кому-нибудь ещё :)
Установка
- Создать или открыть документ Google Spreadsheets https://docs.google.com/spreadsheets/
- В меню "Tools" выбрать "Script Editor"
- Дать проекту имя, например
TinkoffTrades
- Скопировать код из Code.gs и заменить им дефолтный текст скрипта.
- Получить OpenApi-токен Тинькофф
- Добавить свойство
OPENAPI_TOKEN
в разделеProject properties -> Script properties
со значением токена, полученным выше. - Сохранить скрипт 💾
- В документе Google Spreadsheets выбрать любую ненужную ячейку и присвоить ей имя
UPDATE_DATE
с помощью менюData
->Named ranges
->Add named range
. В эту ячейку по команде меню TI->Обновить вставляется текущая дата. Данная ячейка может использоваться в качестве необязательного параметраUPDATE_DATE
любой функции для принудительного обновления формул. Например, при использовании функцииTI_GetLastPriceByFigi("BBG004730RP0",UPDATE_DATE)
можно реализовать обновление цены акции "Газпром" по команде меню TI->Обновить.
На этом всё. Теперь при работе с этим документом на всех листах будут доступны функции:
- API v2:
TI_GetAccounts()
,TI_GetAccountID()
,TI_GetInstrumentsID()
,TI_GetLastPriceByFigi()
,TI_GetPortfolio()
,TI_GetOperations()
,TI_GetBidAskSpread()
иTI_GetLastPrice()
(использует API v1 и может перестать работать) - API v1:
getPriceByTicker()
,getTrades()
,getPortfolio()
,getMaxBidByTicker()
,getMinAskByTicker()
иgetBidAskSpread()
Функции API v2
-
TI_GetAccounts()
- получение информации по счетам (идентификатор, тип, название, статус, дата открытия, права доступа). -
TI_GetAccountID(accountNum)
- возвращает идентификатор счета по его порядковому номеру (начиная с 0). -
=TI_GetLastPriceByFigi(FIGI, UPDATE_DATE)
- требует на вход FIGI инструмента (может быть получен через=VLOOKUP()
по отдельной вкладке с информацией по всем инструментам, полученной вызовомTI_GetInstrumentsID()
) и опциональный параметр с именем ячейкиUPDATE_DATE
, которая будет обновлятся через меню TI->Обновить). -
=TI_GetInstrumentsID()
- выводит информацию по всем инструментам, включая их тикер, FIGI, класс, биржу, валюту и ISIN. -
=TI_GetOperations(accountId, from, to)
- выводит операции по заданному идентификатору счета (можно получить через функциюTI_GetAccounts()
) и, опционально, фильтрацию по времени. Параметрыfrom
иto
являются ссылками на ячейки с типом Дата. -
=TI_GetPortfolio(accountId)
- выводит портфель по заданному идентификатору счета (можно получить через функциюTI_GetAccounts()
.
Функции API v1 (перестанут работать в 2023 году)
-
=getPriceByTicker(ticker, UPDATE_DATE)
- требует на вход тикер, и опциональный параметр с именем ячейкиUPDATE_DATE
, которая будет обновлятся через меню TI->Обновить). -
=getTrades(ticker, from, to)
- требует на вход тикер, и опционально фильтрацию по времени. Параметрыfrom
иto
являются строками и должны быть в ISO 8601 формате -
=getPortfolio()
- выводит портфель.
Особенности
- Среди настроек скрипта есть
TRADING_START_AT
- дефолтная дата, начиная с которой фильтруются операцииgetTrades
. По умолчанию этоApr 01, 2020 10:00:00
, но данную константу можно в любой момент поменять в исходном коде.
Пример использования работы функций API v1
=getPriceByTicker("V", UPDATE_DATE) # Возвращает текущую цену акции Visa
=getPriceByTicker("FXMM", UPDATE_DATE) # Возвращает текущую цену фонда казначейских облигаций США
=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 мая.