C++ client for Tinkoff invest API
OpenAPI SDK для Тинькофф Инвестиций
Данный проект представляет собой инструментарий на языке C++ для работы с grpc-интерфейсом торговой платформы Тинькофф Инвестиции, который можно использовать для создания торговых роботов.
Начало работы
Сборка
Перейдите в директорию проекта и выполните следующие команды:
mkdir build && cd build
cmake ..
make
Примеры
Примеры доступны здесь. Для запуска примеров необходимо добавить токен в переменную окружения.
$ export TOKEN=YOUR_TOKEN
Пример использования унарных запросов: открытие счета в песочнице и получение информации о нем.
InvestApiClient сlient(
"invest-public-api.tinkoff.ru:443", getenv(
"TOKEN"));
auto sandbox = std::dynamic_pointer_cast<Sandbox>(сlient.service("sandbox"));
sandbox->OpenSandboxAccount();
auto accounts = sandbox->GetSandboxAccounts();
auto portfolio = sandbox->GetSandboxPortfolio(accounts.accountID(0));
std::cout << portfolio.ptr()->DebugString() << std::endl;
sandbox->CloseSandboxAccount(accountId);
Пример использования потокового блокирующего вызова: подписка на получение последних цен.
{
std::cout << reply.ptr()->DebugString() << std::endl;
}
int main()
{
InvestApiClient сlient(
"invest-public-api.tinkoff.ru:443", getenv(
"TOKEN"));
auto marketdata = std::dynamic_pointer_cast<MarketDataStream>(сlient.service("marketdatastream"));
marketdata->SubscribeLastPrice({"BBG000BWPXQ8", "BBG00844BD08"}, tradesStreamCallBack);
return 0;
}
Пример использования потокового асинхронного запроса: подписка на получение последних цен.
{
std::cout << reply.ptr()->DebugString() << std::endl;
}
int main()
{
InvestApiClient сlient(
"invest-public-api.tinkoff.ru:443", getenv(
"TOKEN"));
auto marketdata = std::dynamic_pointer_cast<MarketDataStream>(сlient.service("marketdatastream"));
marketdata->SubscribeLastPriceAsync({"BBG000BWPXQ8", "BBG00844BD08"}, tradesStreamCallBack);
return 0;
}
Вывод:
subscribe_last_price_response {
tracking_id: "8442ce626f5a6e6"
last_price_subscriptions {
figi: "BBG000BWPXQ8"
subscription_status: SUBSCRIPTION_STATUS_SUCCESS
}
last_price_subscriptions {
figi: "BBG00844BD08"
subscription_status: SUBSCRIPTION_STATUS_SUCCESS
}
}
last_price {
figi: "BBG000BWPXQ8"
price {
units: 41
nano: 500000000
}
time {
seconds: 1651270899
nanos: 146644771
}
}
last_price {
figi: "BBG00844BD08"
price {
units: 100
nano: 120000000
}
time {
seconds: 1585063374
nanos: 334361000
}
}
Документация
Подробную документацию можно найти по ссылке.