#
#
12. Сравнение C++ формул и WebSocket API

Расширение существующих возможностей робота возможно двумя способами: с помощью механизма С++ формул и WebSocket API. Это разные механизмы, решающие разные задачи, тем не менее, у этих механизмов есть общие черты. Для удобства пользователей ниже в таблице приведено сравнение С++ формул и WebSocket API по ряду параметров.

Характеристика С++ формулы WebSocket API
Язык программирования C++ Любой язык программирования. Желательно использовать высокоуровневые языки, имеющие стандартные библиотеки для работы с протоколом WebSocket
Возможности Ограниченные. Есть ограничения на длину исходного кода формул. Доступно получение значений по финансовым инструментам и изменение некоторых параметров портфелей. Для использования в формулах предусмотрены пользовательские поля, не задействованные в основном алгоритме. Запрещено использование функций, обращающихся к файловой системе или работающих с сетью. Крайне нежелательно выполнение затратных по времени операций. Нет возможности получения значений из внешних источников данных (баз данных, таблиц Excel и т.д.) Полные. Можно автоматизировать всё то, что доступно через веб-интерфейс платформы. Нет ограничений на архитектуру приложения и на использование внешних источников данных.
Взаимодействие между портфелями Возможно только между портфелями одного робота, при этом у портфелей, к которым осуществляется доступ, должен быть взведен флаг Shared formulas Можно из одного приложения взаимодействовать со всеми доступными портфелями вне зависимости от того, каким роботам они принадлежат
Способ исполнения Нативный код, компилируется в динамически загружаемую библиотеку, которая выполняется в том же потоке, что и код основного алгоритма робота Отдельное приложение, которое запускатся на другом сервере
Влияние на скорость работы робота Могут замедлять работу робота, так как являются неотъемлемой частью основного алгоритма робота и выполняются в одном потоке с ним Нет влияния на скорость работы робота, так как расчёты производятся параллельно работе робота
Скорость доступа к данным Код формул выполняется всегда, когда вызывается расчёт цен по основному алгоритму. Соответственно, формулы пересчитываются сразу после получения цен при любом изменении в стакане. Никаких ограничений на доступ к данным, доступным в формулах, не накладывается Для получения данных или внесения изменений необходимо отправить соотвествующий запрос, есть ограничения на количество отправляемых запросов в единицу времени. При подписке на получение данных данные со стороны сервера управления роботами отправляются не при каждом изменении данных, а "пачками" с определенной частотой
Отказоустойчивость Ошибки в формулах могут приводить к аварийному завершению работы всего робота Аварийное завершение работы отдельного приложения повлияет лишь на расчёты, выполняемые в этом приложении, робот при этом продолжит торговать в соответствии со своим алгоритмом и заданными параметрами. Стоит учитывать, что при такой автоматизации есть риск разрыва связи между роботом и отдельным приложением, в таком случае робот продолжит торговать с теми параметрами, которые у него остались перед разрывом связи