Other
Decimal
Путь в Local Pack include/base/decimal.h
Класс Decimal используется для проведения вычислений с большой точностью и представления цен (для удобства имеет синоним Price).
Есть возможность получать значение в виде double с помощью метода get_double().
Внимание: в С++ напрямую выводить Decimal в cout/cerr/printf нельзя, однако можно воспользоваться нашими потоками вывода. В Python работает вывод с помощью print.
JsonValue
Путь в Local Pack include/base/json.h
Формат данных JSON подробно описан здесь: https://ru.wikipedia.org/wiki/JSON. В нашей реализации вы можете изменять конфиг вашей стратегии в .json файле.
Для получения значения переменной в стратегии нужно воспользоваться методом "as".
Этот класс используется только в C++, в Python используется стандартная реализация (dict).
Методы
Имя | Описание |
---|---|
as() | Получение значения из JsonValue. |
Описание методов
as()
Преобразует json-значение в значение заданного типа и возвращает его.
Пример использования для получения объекта типа string — config["имя_поля_в_json"].as<std::string>()
.
Есть возможность задавать значение по умолчанию в скобках (оно будет использовано, если в конфиге нет такого поля):
config["имя_поля_в_json"].as<std::string>("строка_по_умолчанию")
.config["time"].as<Microseconds>(10us)
.
Amount
Путь в Local Pack include/base/constants.h
Синоним int32_t для повышения читабельности кода. Этот синоним используется только в C++.
Price
Путь в Local Pack include/base/constants.h
Синоним класса Decimal, про него можно прочитать здесь: https://docs.hftbattle.com/ru/api/Other.html#decimal.
Id
Путь в Local Pack include/base/constants.h
Числовой идентификатор, синоним uint64_t. Этот синоним используется только в C++.
Microseconds
Путь в Local Pack include/base/constants.h
Синоним std::chrono::microseconds. Подробнее читайте здесь: http://en.cppreference.com/w/cpp/chrono/duration.
Этот класс используется только в C++, в Python используется стандартный тип int.
Logs
Путь в Local Pack include/base/log.h
Для удобного вывода информации о поведении стратегии, рекомендуем воспользоваться выводом с помощью потоков логирования. Они позволяют быстро переключать уровень подробности записей: при необходимости можно включить максимально детальный уровень логирования или, наоборот, выводить только самые важные записи. Также они автоматически записывают свой вывод в файл.
Приведём пример использования данного метода. Выведем среднюю цену с помощью потока вывода SCREEN().
SCREEN() << order_book.middle_price();
LogLevel
Путь в Local Pack include/base/log.h
Данный enum отвечает за уровень логирования. Каждому уровню соответствует поток вывода. Например, уровню логирования Error соответствует поток вывода ERROR().
Допустим, вы хотите выбрать уровень логирования Error. Тогда необходимо в файле конфигурации стратегии установить поле "log_level": "error". При этом работать будут и потоки вывода SCREEN() и FATAL().
Замечание 1: потоки вывода уровня Error и ниже выводятся исключительно в файл, а SCREEN() и FATAL() также выводятся и на экран.
Замечание 2: поток вывода FATAL завершает работу программы. Используйте его с особой осторожностью.