#
#
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 отображается локальное время пользователя.

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

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

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

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

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

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

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