#
#
2. Введение

Doc

#
#
2.1. Краткое описание платформы

В упрощённом виде можно сказать что платформа состоит непосредственно из торговых роботов и системы управления ими. В систему управления роботами с точки зрения клиента входят API и сайт https://bot.fkviking.com/ (opens new window). API является единственным программным интерфейсом, обеспечивающим связь пользователя и роботов. Сайт https://bot.fkviking.com/ (opens new window) для своей работы использует тот же API, что доступен сторонним разработчикам для реализации собственных пользовательских интерфейсов. На платформе используется система разграничения прав пользователей путём указания каждому пользователю доступных ему ролей. Доступ к платформе через API или сайт осуществляется с учётом ограничений, накладываемых ролью, под которой выполнена авторизация. Предполагается, что один пользователь имеет только один аккаунт на платформе, так как ролевая модель обеспечивает одновременный доступ к портфелям нескольких роботов, даже если роботы принадлежат разным компаниям. Далее будут даны краткое описание робота, интерфейса сайта и ролевой модели.

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

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

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

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

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

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

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

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

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

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

Основная страница интерфейса представлена набором таблиц-виджетов, которые расположены в выпадающем списке 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, Trade connections orders отображается локальное время пользователя.

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

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

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

#
#
2.4. Краткое описание ролевой модели

Для разграничения прав доступа пользователей на платформе используется ролевая модель. Для её понимания необходимо сначала ввести некоторые сущности и уточнить связи между сущностями. Кроме робота, портфеля и пользователя вводится сущность "компания". Эта сущность используется как точка привязки роботов, т.е. робот создаётся для какой-либо компании и в дальнейшем ей принадлежит. Создание робота без указания компании невозможно. Портфель создается пользователем в конкретном роботе. Пользователь, создавший портфель, является его владельцем (создателем) и автоматически получает права на этот портфель. Таким образом, пользователь имеет права на все портфели, которые он создал в данном роботе. Доступ к портфелю, созданному пользователем, можно отнять только вместе с роботом.

После регистрации пользователь автоматически получает роль Demo в компании public, это специальная роль и специальная компания, под этой ролью в данной компании доступны только бесплатные роботы с виртуальной торговлей. В других компаниях роль Demo недоступна. Все остальные роли назначаются пользователю в рамках определенной, уже "реальной", компании. Пользователь может иметь одну и ту же роль в разных компаниях. Причём в каждой из компаний он может иметь одну или несколько ролей. На текущий момент кроме роли Demo существуют роли Trader и Head of traders, Head view only. Роль Trader предназначена для выполнения исключительно торговых операций. Под ролью Head of traders можно выполнять как торговые операции, так и административные. Под ролью Head view only можно просматривать торговую и административную информацию без возможности её редактирования. После того, как трейдер добавлен в компанию под ролью Trader, ему со стороны Head of traders может быть дан доступ к одному или нескольким роботам и к одному или нескольким портфелям. Один робот может быть доступен нескольким пользователям с ролью Trader. Пользователь под ролью Trader имеет доступ только к тем портфелям доступных ему роботов, для которых он является владельцем (создателем), и к тем, доступ к которым был явно предоставлен ему Head of traders.

Head of traders может назначать себе и другим пользователям роли внутри той компании, где он является Head of traders. В дальнейшем он может давать доступы к роботам и портфелям тем пользователям, которые имеют в компании роль Trader. Head of traders имеет доступ ко всем роботам и портфелям внутри компании.

Head view only является просмотровым аналогом роли Head of traders, под данной ролью видны те же данные, что и под Head of traders, но изменение этих данных запрещено. Под ролью Head view only можно редактировать только настройки своего пользователя.

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

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