a.treschilov/tinkoff-invest-api-sdk

PHP SDK for Tinkoff invest API V2

v0.2.5 2022-04-24 18:59 UTC

This package is auto-updated.

Last update: 2022-04-24 18:59:49 UTC


README

Unofficial PHP SDK for Tinkoff invest API V2. See official API documentation

Installation

It's recommended that you use Composer to install.

$ composer require a.treschilov/tinkoff-invest-api-sdk

SDK requires:

  • PHP 8.0 or newer
  • grpc extension

Install grpc

sudo pecl install grpc

Add to php.ini

extension=grpc.so

How to use

Basic Usage (limited methods support)

<?php

declare(strict_types=1);

use ATreschilov\TinkoffInvestApiSdk\Exceptions\TIException as TIException;
use ATreschilov\TinkoffInvestApiSdk\TIClient;

require __DIR__ . '/../vendor/autoload.php';

/**
 * Your personal Tinkoff Invest token
 *
 * @see https://tinkoff.github.io/investAPI/token/
 */
$token = '<Your Tinkoff Invest Account Token>';

$tiClient = new TIClient($token);
try {
    $tiAccounts = $tiClient->getUser()->getAccounts();

    $accounts = [];
    foreach ($tiAccounts as $account) {
        $accounts[] = [
            'id' => $account->getId(),
            'name' => $account->getName(),
            'type' => $account->getType(),
            'status' => $account->getStatus(),
            'openedDate' => $account->getOpenedDate()->getSeconds(),
            'closedDate' => $account->getClosedDate()->getSeconds()
        ];
    }

    echo '<pre>' . print_r($accounts, true) . '</pre>';
} catch (TIException $e) {
    echo $e->getCode() . '. ' . $e->getMessage();
}

Basic usage methods support

  • User
    • ✔ getAccounts
    • ✖ GetMarginAttributes
    • ✖ GetUserTariff
    • ✖ GetInfo
  • Instruments
    • ✖ TradingSchedules
    • ✖ BondBy
    • ✔ Bonds
    • ✖ CurrencyBy
    • ✖ Currencies
    • ✖ EtfBy
    • ✔ Etfs
    • ✖ FutureBy
    • ✔ Futures
    • ✖ ShareBy
    • ✔ Shares
    • ✖ GetAccruedInterests
    • ✖ GetFuturesMargin
    • ✔ GetInstrumentBy
    • ✖ GetDividends
  • OrdersStream
    • ✖ TradesStream
  • Orders
    • ✖ PostOrder
    • ✖ CancelOrder
    • ✖ GetOrderState
    • ✖ GetOrders
  • Operations
    • ✔ GetOperations
    • ✔ GetPortfolio
    • ✖ GetPositions
    • ✔ GetWithdrawLimits
    • ✖ GetBrokerReport
  • MarketData
    • ✔ GetCandles
    • ✖ GetLastPrices
    • ✖ GetOrderBook
    • ✖ GetTradingStatus
  • MarketDataStream
    • ✖ MarketDataStream
  • StopOrders
    • ✖ PostStopOrder
    • ✖ GetStopOrders
    • ✖ CancelStopOrder
  • Sandbox
    • ✖ OpenSandboxAccount
    • ✖ GetSandboxAccounts
    • ✖ CloseSandboxAccount
    • ✖ PostSandboxOrder
    • ✖ GetSandboxOrders
    • ✖ CancelSandboxOrder
    • ✖ GetSandboxOrderState
    • ✖ GetSandboxPositions
    • ✖ GetSandboxOperations
    • ✖ GetSandboxPortfolio
    • ✖ SandboxPayIn

Advance usage (full methods support)

<?php

declare(strict_types=1);

use ATreschilov\TinkoffInvestApiSdk\TIClient;
use Tinkoff\Invest\V1\Account;
use Tinkoff\Invest\V1\GetAccountsRequest;
use Tinkoff\Invest\V1\GetAccountsResponse;
use Tinkoff\Invest\V1\UsersServiceClient;

require __DIR__ . '/../vendor/autoload.php';

/**
 * Your personal Tinkoff Invest token
 *
 * @see https://tinkoff.github.io/investAPI/token/
 */
$token = '<Your Tinkoff Invest Account Token>';

$tiClient = new TIClient($token);
$userServiceClient = new UsersServiceClient($tiClient->getHostname(), $tiClient->getOptions());
$request = new GetAccountsRequest();
/** @var GetAccountsResponse $response */
list($response, $status) = $userServiceClient->GetAccounts($request)->wait();

if ($status->code !== 0) {
    echo '<pre>' . print_r($status, true) . '</pre>';
    return;
}

$accounts = [];
/** @var Account $account */
foreach ($response->getAccounts() as $account) {
    $accounts[] = [
        'id' => $account->getId(),
        'name' => $account->getName(),
        'type' => $account->getType(),
        'status' => $account->getStatus(),
        'openedDate' => $account->getOpenedDate()->getSeconds(),
        'closedDate' => $account->getClosedDate()->getSeconds()
    ];
}

echo '<pre>' . print_r($accounts, true) . '</pre>';