# 2. Введение

Doc

# 2.1. Краткое описание робота

Данный робот может торговать несколькими одинаковыми алгоритмами. Один алгоритм, со всеми его настройками, далее будем называть портфелем. Каждый портфель робота должен содержать биржевые инструменты, которыми предполагается торговать или использовать их в расчётах. В портфеле может содержаться минимум один инструмент.

Один из инструментов портфеля должен быть отмечен признаком Is first, такой инструмент будем называть главным или первой ногой портфеля. Инструменты портфеля, не отмеченные признаком Is first, будем называть второй ногой портфеля. В каждом портфеле робота есть параметры, которые задаются на весь портфель, назовём их параметры портфеля. Кроме них в портфеле есть параметры, которые задаются отдельно для каждого из инструментов портфеля, будем называть их параметры инструментов портфеля. Так же, для всего портфеля задаются параметры уведомлений (Notifications).

Есть еще несколько параметров, которые задаются для каждого используемого инструмента каждого транзакционного подключения (параметры позиций по инструментам и параметры позиций по валютам). Параметры делятся на редактируемые (т.е. собственно настройки) и отображаемые или расчётные (например, финансовый результат).

Некоторые параметры портфеля и инструментов для большей гибкости могут быть заданы как формулы на Языке программирования C++.

Для каждого из портфелей робота можно выбрать Type используемого алгоритма. Основной алгоритм робота арбитражный. Цена заявок на покупку и продажу по главному инструменту в общем случае рассчитывается на основе цен других инструментов портфеля. Поддерживается работа в двух режимах. В режиме котирования (флаг Quote взведен) после включения торговли на покупку и продажу, в стакане по главному инструменту портфеля держатся заявки на покупку и продажу соответственно. Котирующая заявка переставляется при выполнении определенных условий, например, при отклонении цены выставленной заявки от расчетной цены. Если котирование отключено, то заявки по главному инструменту выставляются при появлении сигнала (выполнении определенного условия).

Заявки по инструментам второй ноги выставляются после прохождения сделки по первой ноге. Направление заявок по инструментам второй ноги определяется направлением сделки по первой ноге, а также значением параметра On buy соответствующего инструмента.

Робот может быть настроен как на выставление заявок второй ноги после прохождение каждой сделки по первой ноге, так и на более редкое выставление заявок по второй ноге. Объем для выставления по каждому инструменту (бумаге) второй ноги вычисляется исходя из текущей позиции портфеля по первой ноге и значения параметра Count обеих бумаг таким образом, чтобы отношение "новой" позиции текущей бумаги (которая будет после прохождения сделки по еще невыставленной, но выставляемой в данный момент заявке) к позиции первой ноги было равно отношению значения параметра Count второй ноги к значению параметра Count первой ноги. Причем, если при определении "новой" позиции по бумаге в портфеле есть неисполненные заявки, то исходим из того, что они будут полностью сведены в сделку.

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

# 2.2. Краткое описание интерфейса

Основная страница интерфейса представлена набором таблиц-виджетов, которые расположены в выпадающем списке Widgets. Все виджеты могут быть открыты и закрыты в любом количестве и порядке, кроме виджета Robot logs, который открыт всегда.

Во время работы робота могут возникать различные "ошибки" при выставлении и удалении заявок, такие ситуации не являются нештатной работой робота и могут быть вызваны причинами, не связанными с некорректной работой торгового робота, например, отсутствием денег на счете клиента. Все "ошибки" и еще некоторую информацию, связанную с работой программы, можно посмотреть в виджете Robot logs. Некоторые слишком часто приходящие сообщения будут отображаться в таблице не все, а 1 раз в 10 секунд и будут отмечены в конце сообщения символом xN, где N - количество не показанных сообщений. Некоторые сообщения, которые заведомо будут отклонены биржей, на биржу не отправляются. Такие "ошибки" помечены постфиксом "_LOCAL".

Исторические логи можно посмотреть, используя виджет Robot logs history. В настройках виджета можно выбрать один из предложенных периодов: сегодня, вчера, 5 дней, неделя, 10 дней, месяц или задать интересующий период самостоятельно с точностью до минуты.

В виджетах Robot logs, Robot logs history, Financial result for today, Finres history, Deals for today, Deals history отображается локальное время пользователя.

В основном интерфейсе робота есть функционал важных сообщений, которые показываются в виде модального окна, блокирующего взаимодействие пользователя с сайтом до подтверждения им кнопкой, что он ознакомился с сообщением. Сообщение появляется в момент отправки. Если в момент отправки пользователь был offline, то при ближайшем входе в приложение. Если какое-то сообщение приходит в лог не реже, чем каждые 20 секунд и длится 10 минут, то пользователь получит об этом сообщение. Такое сообщение всплывает поверх всех окон и держится до тех пор, пока пользователь не нажмет ok. Первоначальный таймаут для получения такого сообщения 10 минут, потом 30 минут, 1 час, 3 часа и 6 часов, затем снова 10 минут и т.д. Список отправленных сообщений также доступен для просмотра в меню Notification в личном кабинете пользователя под иконкой справа сверху.

Стоит заметить, что все виджеты настраиваемые. Можно менять местами столбцы, регулировать их ширину, а так же скрывать ненужные Columns. Возможно одновременное открытие нескольких одинаковых виджетов с использованием в них разных настроек. Настроенное рабочее пространство можно сохранить в Workspaces и позже загружать его на другие устройства. Также есть возможность экспорта и импорта Workspaces через файл. Это позволяет пользователям с несколькими ролями перенести настроенные Workspaces из одной роли в другую.

Для начала работы с роботом необходимо активировать нужные подключения для получения маркет-даты и добавить необходимые транзакционные подключения. Маркет-дата подключения активируются в виджете Data connections. Транзакционные подключения добавляются в виджете Trade connections. Для создания портфеля необходимо выбрать виджет Portfolios table.