yatis 0.2.1

Yet Another T-bank Investment Sdk
Documentation
Чтобы понимать алгоритм выполнения основных задач, ознакомьтесь с доступными SDK в разделе [**Языки программирования**](https://russianinvestments.github.io/investAPI/faq_python/).   

Также рекомендуем прочитать [статью о создании торгового робота](https://habr.com/ru/companies/tinkoff/articles/709166/) — в ней описаны популярные сценарии для пользователей T-Invest API.

## Создать заявку на покупку или продажу инструмента

Когда стратегия даёт команду продавать или покупать, нужно создать заявку:

1. Проверьте, существует ли позиция по бумаге через метод [FindInstrument]/investAPI/instruments/#findinstrument.
2. Проверьте статус торгового инструмента через метод [GetTradingStatus]/investAPI/marketdata/#gettradingstatus.
3. Получите последние цены на инструмент через метод [GetLastPrice]/investAPI/marketdata#getlastprices.
4. Получите параметр `min_price_increment` для расчёта цены, которую можно выставить, через метод [GetInstrumentBy]/investAPI/instruments/#getinstrumentby.
5. Проверьте свой счёт в аккаунте.
6. Выставите заявку через метод [PostOrder]/investAPI/orders#postorder и сохраните полученный параметр `order_id`.
7. Получите список активных заявок через метод [GetOrders]/investAPI/orders#getorders и по параметру `order_id` проверьте, есть ли заявка в списке активных.

Информацию об исполненной заявке можно получить через метод [GetOrderState](/investAPI/orders#getorderstate) по параметру `order_id`.

## Получить информации об аккаунте

Чтобы получить информацию об аккаунте:

1. Вызовите метод [GetAccounts]/investAPI/users#getaccounts для получения списка счетов, их статусов и типов.
2. Вызовите метод [GetInfo]/investAPI/users#getinfo. С помощью него можно:
    * определить наличие у пользователя статуса квалифицированного инвестора и премиального клиента;
    * получить список типов инструментов, к которым пользователь имеет доступ по итогам тестирования. 
   
    Это помогает определить ограничения в торговле.

3. Получите доступные лимиты через метод [GetInfo]/investAPI/users#getaccounts.
4. Для торговли на срочном рынке периодически обновляйте информацию о маржинальных показателях счёта через метод [GetMarginAttributes]/investAPI/users#getmarginattributes по параметру `accountId`.

## Найти базовый актив фьючерса

Чтобы найти базовый актив фьючерса:

1. Вызовите один из методов: [GetFutureBy]/investAPI/instruments/#futureby или [GetFutures]/investAPI/instruments/#futures. 
2. Сохраните значение параметра `basic_asset_position_uid` — это уникальный идентификатор позиции основного инструмента.

>**Примечание**<br>
> Для поиска базового актива фьючерса можно также использовать метод [FindInstrument]/investAPI/instruments/#findinstrument — в `query` передайте значение параметра `basic_asset_position_uid`, который возвращается в методах [GetFutureBy]/investAPI/instruments/#futureby и [GetFutures]/investAPI/instruments/#futures.


## Ошибки с сертификатом

При работе с API могут возникнуть ошибки, связанные с сертификатом:

* `failed to connect to all addresses`;
* `handshake failed`;
* `certificate verify failed`;
    
Часто эта проблема возникает из-за недействительного сертификата, который используется в приложении.

Выпустите новый сертификат — например, через команду `openssl s_client -connect invest-public-api.tinkoff.ru:443`, и импортируйте его.
    

### Загрузить сертификат вручную

Сертификат можно загрузить вручную. Пример шагов для Windows и Google Chrome:

1. Зайдите на [сайт Т-Банк]https://www.tbank.ru/.
2. В адресной строке нажмите <img src="/investAPI/img/icon-chrom.png" width="20"> и выберите **Безопасное подключение**.
3. Нажмите **Показать сертификат**.
4. В открывшемся окне выберите вкладку **Подробнее**.
5. Нажмите **Экспорт** и сохраните сертификат на компьютер.
6. Откройте папку с сохранённым файлом, нажмите по нему правой кнопкой мыши и выберите **Установить сертификат**.
7. Установите сертификат через мастера импорта сертификатов, выбирая ответы по умолчанию.

![Загрузка сертификата](/investAPI/img/cert.png "Загрузка сертификата")