ParticipantStrategy
Путь в Local Pack include/participant_strategy.h
Класс-обёртка для стратегий участников для взаимодействия с торговым симулятором.
Методы
Имя | Описание |
---|---|
trading_book_update() | Вызывается симулятором при получении нового стакана торгового инструмента. |
trading_deals_update() | Вызывается симулятором при получении новых сделок по торговому инструменту. |
execution_report_update() | Вызывается симулятором при получении отчёта о проведении сделки с участием вашей заявки. |
add_limit_order() | Выставляет лимитную заявку. |
add_ioc_order() | Выставляет заявку типа IOC (Immediate-Or-Cancel). |
delete_order() | Отправляет запрос на удаление вашей заявки. |
delete_all_orders_at_dir() | Отправляет запрос на удаление всех ваших заявок по данному направлению. |
delete_all_orders_at_price() | Отправляет запрос на удаление всех ваших заявок с заданной ценой и направлением. |
amount_before_order() | Суммарный объём заявок в очереди перед вашей заявкой. |
volume_by_price() | Суммарный объём активных заявок с заданной ценой и направлением. |
add_chart_point() | Добавляет точку на график. |
current_result() | Текущий заработок стратегии, учитывающий как исполненные, так и просто выставленные заявки. |
server_time() | Текущее биржевое время. |
server_time_tm() | Биржевое время типа tm. |
set_max_total_amount() | Устанавливает желаемое ограничение максимальной позиции. |
set_stop_loss_result() | Устанавливает желаемое ограничение минимального результата. |
executed_amount() | Ваша текущая позиция, учитывающая только исполненные заявки. |
fix_moment_in_viewer() | Сохраняет ссылку на Viewer в веб системе после того как данные записываются во Viewer. |
is_our() | Является ли заявка вашей. |
is_our() | Является ли сделка вашей. |
trading_book() | Текущий стакан торгового инструмента. |
Описание методов
trading_book_update()
Вызывается симулятором при получении нового стакана торгового инструмента.
virtual void trading_book_update(const OrderBook& order_book);
trading_deals_update()
Вызывается симулятором при получении новых сделок по торговому инструменту.
virtual void trading_deals_update(std::vector<Deal>&& deals);
execution_report_update()
Вызывается симулятором при получении отчёта о проведении сделки с участием вашей заявки.
virtual void execution_report_update(const ExecutionReport& execution_report);
add_limit_order()
Принимает направление dir, цену price и размер заявки amount.
Выставляет лимитную заявку.
Возвращает значение типа bool — была ли ваша заявка принята торговым симулятором. Внимание: заявка может быть не принята при нарушении некоторых ограничений. Подробнее читайте в документации: https://docs.hftbattle.com/ru/HFAQ.html#simulator
bool add_limit_order(Dir dir, Price price, Amount amount) const;
def add_limit_order(self, dir, price, amount)
add_ioc_order()
Принимает направление dir, цену price и размер заявки amount.
Выставляет заявку типа IOC (Immediate-Or-Cancel).
Возвращает значение типа bool — была ли ваша заявка принята торговым симулятором. Внимание: заявка может быть не принята при нарушении некоторых ограничений. Подробнее читайте в документации: https://docs.hftbattle.com/ru/HFAQ.html#simulator
bool add_ioc_order(Dir dir, Price price, Amount amount) const;
def add_ioc_order(self, dir, price, amount)
delete_order()
Принимает указатель на вашу заявку, т.е. указатель на объект класса Order.
Отправляет запрос на удаление вашей заявки. Внимание: удаление происходит не моментально. Подробнее об ограничениях симулятора читайте здесь: https://docs.hftbattle.com/ru/simulator/restrictions.html.
void delete_order(Order* order) const;
def delete_order(self, order)
delete_all_orders_at_dir()
Принимает направление dir.
Отправляет запрос на удаление всех ваших заявок по направлению dir.
void delete_all_orders_at_dir(Dir dir) const;
def delete_all_orders_at_dir(self, dir)
delete_all_orders_at_price()
Принимает направление dir и цену price.
Отправляет запрос на удаление всех ваших заявок по направлению dir с заданной ценой.
void delete_all_orders_at_price(Dir dir, Price price) const;
def delete_all_orders_at_price(self, dir, price)
amount_before_order()
Принимает указатель на вашу заявку, т.е. указатель на объект класса Order.
Возвращает суммарное количество лотов, стоящих в очереди перед вашей заявкой на данном ценовом уровне.
Amount amount_before_order(const Order* order) const;
def amount_before_order(self, order)
volume_by_price()
Принимает направление dir и цену price.
Возвращает суммарное количество лотов в ваших активных заявках, стоящих на определённой цене.
Amount volume_by_price(Dir dir, Price price) const;
def volume_by_price(self, dir, price)
add_chart_point()
Принимает строку line_name (название графика), value типа double или Decimal — значение, которое хочется добавить, y_axis_type — сторона, с которой будет нарисована ось Y, и chart_number — номер графика.
Добавляет точку на график с желаемым значением value в текущий момент торговой сессии. Соседние точки на графике соединяются отрезком. В итоге получается ломаная, которая и является графиком. Используя параметр chart_number, можно создавать несколько графиков, а с помощью line_name можно строить сразу несколько линий на одном графике.
void add_chart_point(const std::string& line_name, Decimal value, ChartYAxisType y_axis_type = ChartYAxisType::Left, uint8_t chart_number = 1) const;
def add_chart_point(self, line_name, value, 0, 1)
Приведём пример использования данного метода. Мы добавим новый график лучшей цены покупки.
add_chart_point("best_bid", order_book.best_price(BID));
strat.add_chart_point("best_bid", order_book.best_price(BID))
current_result()
Возвращает текущий результат стратегии (заработок). Учитываются как исполненные, так и просто выставленные заявки. При подсчёте результата мы предполагаем, что выставленные заявки сводятся по противоположной лучшей цене.
Decimal current_result() const;
def current_result(self)
server_time()
Возвращает текущее биржевое время в микросекундах.
Microseconds server_time() const;
def server_time(self)
server_time_tm()
Возвращает биржевое время типа tm с точностью до секунды. Примечание: биржевое время в таком формате может быть использовано для определения времени суток.
tm server_time_tm() const;
def server_time_tm(self)
set_max_total_amount()
Принимает желаемое ограничение максимальной позиции — неотрицательное число не более 100.
Устанавливает данное значение позиции максимальным и не разрешает стратегии превышать его по модулю.
void set_max_total_amount(const Amount max_total_amount);
def set_max_total_amount(self, max_total_amount)
set_stop_loss_result()
Принимает неположительное число — желаемое ограничение минимального результата.
Устанавливает это значение, при достижении которого симулятор закрывает позицию и останавливает стратегию. Внимание: закрытие позиции происходит не моментально, поэтому вы можете получить результат как меньше, так и больше ожидаемого. Подробнее читайте здесь: https://docs.hftbattle.com/ru/HFAQ.html#simulator
void set_stop_loss_result(const Decimal stop_loss_result);
def set_stop_loss_result(self, stop_loss_result)
executed_amount()
Возвращает вашу текущую позицию. Учитываются только исполненные заявки.
Amount executed_amount() const;
def executed_amount(self)
fix_moment_in_viewer()
Принимает любую строку — название момента Viwer.
Сохраняет ссылку на Viewer в веб системе после того как данные записываются во Viewer.
void fix_moment_in_viewer(const std::string& name);
def fix_moment_in_viewer(self, name)
is_our()
Принимает указатель на заявку, т.е. указатель на объект класса Order.
Возвращает значение типа bool — является ли данная заявка вашей.
bool is_our(const Order* order) const;
def is_our(self, order)
is_our()
Принимает ссылку на объект класса Deal.
Возвращает значение типа bool — участвует ли в сделке ваша заявка.
bool is_our(const Deal& deal) const;
def is_our(self, deal)
trading_book()
Текущий стакан торгового инструмента.
Внимание: стакан торгового инструмента нельзя получить до первого вызова trading_book_update
.
const OrderBook& trading_book() const;
def trading_book(self)