Skip to content

Google Apps Script that imports your operations from Tinkoff Investments into Google Spreadsheets

License

Notifications You must be signed in to change notification settings

kdeyko/gas-tinkoff-trades

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GAS Tinkoff Trades

GAS Tinkoff Trades main image

Данный Google Apps Script предназначен для импорта сделок из Тинькофф Инвестиций прямо в Google таблицы, для последующего анализа.

Я сделал форкнул и допилил этот скрипт для автоматизации ручного вбивания данных из приложения тинькофф, и надеюсь он окажется полезен кому-нибудь ещё :)

Установка

  • Создать или открыть документ Google Spreadsheets http://drive.google.com
  • В меню "Tools" выбрать "Script Editor"
  • Дать проекту имя, например TinkoffTrades
  • Для работы с API v1 (aka invest-openapi)
  • Для работы с 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 мая.

Пример работы

=getTrades()

getTrades in action

=getPriceByTicker()

Get price by ticker in action

About

Google Apps Script that imports your operations from Tinkoff Investments into Google Spreadsheets

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%