Чтобы понимать алгоритм выполнения основных задач, ознакомьтесь с доступными 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. Установите сертификат через мастера импорта сертификатов, выбирая ответы по умолчанию.
