HFAQ
Вопросы разбиты по категориям:
- Организационные вопросы
- Интерфейс арены
- Пакет для локальной разработки
- Симулятор торгов
- API симулятора
- Разное
Организационные вопросы
Q: Можно ли участвовать в данном соревновании командой?
A: Да, для этого необходимо зарегистрировать один аккаунт для всей команды, указав данные одного из участников. Приз будет выдан один на всю команду. Участие с нескольких аккаунтов запрещено. Все посылки будут проверяться на плагиат, нарушители будут исключены из соревнования.
Интерфейс арены
Q: Как послать стратегию на контрольное тестирование?
A: Чтобы послать стратегию на контрольное тестирование, нужно переключить триггер "Набор дней" на главной странице арены из режима "Тренировочный" в режим "Контрольный". В день каждому участнику предоставляется две посылки в контрольном режиме.
Пакет для локальной разработки
Q: У меня не получается прогнать стратегии из пакета для локальной разработки. Что делать?
A: Прежде всего, убедитесь, что на вашей системе установлен:
python
2.7.x
(python --version
)Обратите внимание, что для запуска Python-стратегий необходим Python версии 2.
- cmake
2.8.4
и выше (cmake --version
) - компилятор C++:
- для Linux — компилятор g++
5.0
и выше (g++ --version
) - для macOS — Apple LLVM version
6.0
и выше, (c++ --version
) - для Windows — TDM64-GCC
5.1.0
и выше
- для Linux — компилятор g++
Подробнее в разделе Установка зависимостей.
Симулятор торгов
Q: Есть ли временная задержка между моментом отправки заявки и временем ее постановки в стакан?
A: Время, прошедшее от отправки заявки на биржу до его приема биржей, называется round-trip-ом. В симуляторе round-trip полагается равным 10 микросекундам. Это значит, что все ваши запросы на добавление/удаление заявок производятся не мгновенно, а с небольшой задержкой по времени, имитирующей время "полёта" заявки до биржи.
Q: Я установил stop_loss c помощью метода set_stop_loss_result. Почему я получил меньший результат?
A: Закрытие позиции происходит не моментально, и в момент закрытия цена может сильно меняться, поэтому ваш итоговый результат может оказаться как меньше, так и больше того, который вы установили в качестве stop_loss.
Q: Почему моя заявка может была отклонена торговой системой?
A: На это может быть несколько причин:
- Возможно, ваша заявка может привести к превышению максимально допустимой позиции.
- Цена заявки является некорректной, т.е. такой цены не существует для данного инструмента.
- Количество лотов не является натуральным числом.
- Эта заявка может свестись с другой вашей заявкой.
- Вы пытаетесь поставить заявку в невидимую часть стакана.
Q: Что значит, что позиция стратегии закрывается?
A: Симулятор торгов не даёт стратегии выставлять новые заявки и удаляет текущие. После этого он автоматически выставляет заявки так, чтобы размер позиции стратегии стал равен нулю.
API симулятора
Q: Как узнать текущую лучшую цену по направлению?
A: Текущую лучшую цену можно узнать у стакана trading_book c помощью метода best_price:
Price best_price = trading_book().best_price(dir);
best_price = strat.trading_book().best_price(dir)
Разное
Q: Какой механизм работы стакана?
A: После попадания заявки X в стакан она становится в очередь заявок по своему направлению и по своей цене. Внутри каждой цены заявки отсортированы по времени постановки. Если лучшая цены покупки строго меньше лучшей цены продажи, то обработка заявки на этом заканчивается. В противном случае начинается сведение заявок.
Предположим, что заявка X была заявкой на покупку. Тогда одна за одной берутся заявки на продажу в порядке возрастания цены, а внутри каждой цены — в порядке возрастания времени постановки заявки, и сводятся с заявкой X, в результате чего получаются сделки по цене сводимых пассивных заявок (в данном случае заявок на продажу) c объёмом, равным минимуму из участвующих в сделке заявок. Объём сделки вычитается из объёмов участвующих в сделке заявок. Так продолжается до тех пор, пока лучшая цена бида не станет меньше лучшей цены аска.
Q: Какие бывают типы заявок?
A: В рамках данного контеста используется 2 типа заявок: лимитная заявка (limit order) и IOC (Immediate-Or-Cancel). Рассмотрим ситуацию, когда в результате выполнения всех возможных сведений заявка не была сведена полностью:
- Если заявка была лимитной, она остаётся стоять в стакане по своей заявленной цене.
- Если же заявка имела тип IOC, она сразу после выполнения всех возможных сведений удаляется из стакана.
Рассмотрим пример. Пусть в стакане было 3 заявки на продажу:
- объёмом 10 по цене 101, поставленная в 11:00
- объёмом 20 по цене 101, поставленная в 11:01
- объёмом 10 по цене 102, поставленная в 11:00
Цена | Объём (время постановки) |
---|---|
101 | 10 (11:00), 20 (11:01) |
102 | 10 (11:00) |
Пусть далее участник торгов ставит заявку на покупку X по некоторой цене с объёмом 35. Рассмотрим несколько вариантов:
- X — лимитная по цене 101. Тогда произойдёт 2 сделки объёмами 10 и 20, и оставшиеся 5 лотов от X останутся стоять в стакане по цене 101.
- X — типа IOC по цене 101. Тогда произойдёт 2 сделки, а остаток X удалится из стакана.
- X — типа IOC по цене 102. Тогда произойдёт 3 сделки объёмами 10, 20 и 5 по ценам 101, 101 и 102, и от X ничего не останется.