Перейти к содержанию

Модуль robot

Содержит классы, непосредственно связанные с торговым роботом:

  • TradingRobot - торговый робот;
  • TradingRobotFactory - фабрика торговых роботов, позволяет просто создавать робота.

Внимание! Рекомендуется не создавать робота вручную, а использовать для этого фабрику, так как фабрика умеет получать сведения об аккаунте и инструменте непосредственно из API, и не требует передачи этих данных в конструктор. При необходимости точечной настройки робота (например, ограничение баланса, доступного для траты) возможно отредактировать параметры робота после его создания.

На текущий момент один робот ограничен одним аккаунтом и одним видом ценных бумаг. При желании настроить торговлю одновременно несколькими бумагами и / или с нескольких аккаунтов, рекомендуется создать и параллельно запустить нескольких роботов.

TradingRobot

Основной класс, торговый робот. Содержит в себе всю логику взаимодействия с API: создание и отмена торговых поручений, подписка на обновления и тд.

Методы

init

Входные данные:

Field Type Description
token str Токен API Тинькофф Инвестиций
account_id str ID аккаунта, с которого будет вестись торговля.
sandbox_mode bool True для запуска робота в песочнице, False для "боевого" режима
trade_strategy TradeStrategyBase Стратегия торгового робота
trade_statistics TradeStatisticsAnalyzer Анализатор статистики робота
instrument_info tinkoff.invest.Instrument Информация о торгуемых ценных бумагах
logger loggig.Logger Логгер

Выходные данные: TradingRobot.

trade

Запуск торгового алгоритма.

Метод загружает в стратегию исторические данные и подписывается на необходимые обновления биржевых данных. При получении обновления, передает его стретагии и действует согласно ее распоряжению.

Выходные данные: TradeStatisticsAnalyzer - статистика робота.

backtest

Тестирование торговой стратегии на исторических данных.

Метод получает из API данные за два последовательных периода длиной train_duration и test_duration. Обучающие данные загружает в робота в качестве исторических данных, после чего последовательно передает ему тестовые данные в качестве текущих биржевых данных. Все торговые поручения стратегии записывает в статистику, предоставляемую на выходе для анализа.

Входные данные:

Field Type Description
initial_params TradeStrategyParams Изначальные параметры торговой стратегии
test_duration datetime.timedelta Длительность тестового периода
train_duration datetime.timedelta Длительность обучающего периода

Выходные данные: TradeStatisticsAnalyzer - статистика робота.

to_money_value

Преобразовывает значение в MoneyValue.

Входные данные:

Field Type Description
currency str Валюта, в которой необходимо вернуть MoneyValue

Выходные данные: MoneyValue.

TradingRobotFactory

Фабрика торговых роботов.

Методы

init

Во входных данных обязательно должны быть представлены либо figi, либо ticker и class_code.

Входные данные:

Field Type Description
token str Токен API Тинькофф Инвестиций
account_id str ID аккаунта, с которого будет вестись торговля.
figi Optional[str] FIGI торгового инструмента
ticker Optional[str] Тикер торгового инструмента
class_code Optional[str] class_code торгового инструмента
logger_level Optional[str] Уровень логирования. По умолчанию INFO

Выходные данные: TradingRobotFactory.

setup_logger

Настройка логгера.

Входные данные:

Field Type Description
logger_level str Уровень логирования

Выходные данные: logging.Logger.

create_robot

Создание торгового робота для инструмента, указанного в параметрах фабрики.

Входные данные:

Field Type Description
trade_strategy TradeStrategyBase Торговая стратегия
sandbox_mode bool Режим торговли (True - песочница, False - "боевой")

Выходные данные: TradingRobot.

Примеры использования

См. файл main.py.