Предположим, что скрипту на Lua в течение одной секунды по сигналам торговой системы нужно отправить 1000 лимитных заявок по разным инструментам и счетам, после чего успокоиться на 60 минут. Известно, что на бирже у брокера логин с производительностью 200 транзакций в секунду. Числа в этом примере условные.
Вопросы:
1) Что мы увидим: а) в скрипте Lua будут вылезать какие-то ошибки из-за большой частоты отправки заявок на сервер QUIK или б) сервер все эти заявки успешно примет в свою очередь и будет отправлять на биржу, ориентируясь на производительность логина брокера (при этом, понятное дело, ответы от биржи будут приходить в течение примерно 5 секунд).
2) Если мы увидим вариант 1а), то как понять (без экспериментов), с какой интенсивностью можно слать заявки из скрипта?
3) Если правильное функционирование сервера QUIK -- это вариант 1б), а ошибки внутри скрипта Lua вылезут, что делать (кто должен настраивать сервер QUIK, если он стоит на аутсорсинге ARQA)?
Здравствуйте, При отправке большого количества транзакций сервер не будет делить их на порции а отправит как есть. Далее транзакции будут отвергнуты и клиенту придет соответственная ошибка.
Решать вопрос нужно между клиентом и брокером, даже если сервер находится у нас. Ибо сервер принадлежит не нам, хоть и находится в наших дата центрах.
1000 заявок в секунду по разным инструментам и разным счетам да еще через терминал КВИК? Так Вы ж, батенька, фантазер!!! Для начала попробуйте хотя бы 100 отправить.
Sergey Gorokhov пишет: При отправке большого количества транзакций сервер не будет делить их на порции а отправит как есть. Далее транзакции будут отвергнуты и клиенту придет соответственная ошибка.
1. ну и смысл их тогда "отправит как есть", если потом "транзакции будут отвергнуты и клиенту придет соответственная ошибка"???
2. каким образом пользователь поймёт/узнает, что он полностью засрал канал брокера???
3. как определить оптимальное число транзакций на сервер???
<ответ обязателен, т.к. разработчиков "никто за язык не тянул">
Николай Камынин пишет: 1000 заявок в секунду по разным инструментам и разным счетам да еще через терминал КВИК? Так Вы ж, батенька, фантазер!!! Для начала попробуйте хотя бы 100 отправить.
Николай, на ежегодном нагрузочном тестировании отправляется в разы больше.
тот самый пишет: 1. ну и смысл их тогда "отправит как есть", если потом "транзакции будут отвергнуты и клиенту придет соответственная ошибка"??? 2. каким образом пользователь поймёт/узнает, что он полностью засрал канал брокера??? 3. как определить оптимальное число транзакций на сервер??? < ответ обязателен, т.к. разработчиков "никто за язык не тянул" >
Я так понимаю что надо дистанцировать "отправить-транзакцию" и "отправить-транзакцию-с-ответом".
Если первый вариант, то квик может 1000 выплюнуть, в асинхронном режиме.
А вот сколько их реально обработается (и по скольки например успеют заявки выставиться) - вопрос другой. Вероятно, посылка транзакций в синхронном режиме даст более-менее вменяемую цифру.
Когда Вы отправляете заявку: 1. Сначала, она выглядит, как транзакция 2. Как только серевер её принял и, (возможно, бо как не все транзакции биржевые) получил ответ с биржи - она становится не просто транзакцией, а полноценной заявкой. И вот в этом самом месте и идёт разделение по времени. Бо как тут уже учитывается полный roundtrip заявки с учётом её пути до биржи и обратно. Конкретно о том, что было упомянуто выше - речь шла о другом (насколько я понял): а именно, сколько можно подать из скрипта квик-клиента транзакций в секунду на квик-сервер - прежде чем он упадёт. На что уже ответил техсуппорт.
тот самый пишет: Когда Вы отправляете заявку: 1. Сначала, она выглядит, как транзакция 2. Как только серевер её принял и, (возможно, бо как не все транзакции биржевые) получил ответ с биржи - она становится не просто транзакцией
Думаю дело в том, что вы путаете понятия "транзакция" и "заявка".
Транзакция - это просто отправка команды серверу. Любой. И ответ на нее приходит когда транзакция была обработана.
А вот заявка - это результат исполнения транзакции, а уведомление, например, о созданной заявке (тот же OnTrade) - приходит отдельно и к поданной транзакции отношения-то как бы и не имеет.
Если речь именно про транзакции, то отправить их можно более 1000 в секунду. Так на тестовом QUIK я отправлял 12-14 тыс. транзакций за одну секунду. Другое дело, что заявки по ним выставляются в течение нескольких секунд. А ответ по всем транзакциям приходит так вообще в течение более минуты.
Надо делать так, как надо. А как не надо - делать не надо.
Старатель пишет: Если речь именно про транзакции, то отправить их можно более 1000 в секунду. Так на тестовом QUIK я отправлял 12-14 тыс. транзакций за одну секунду. Другое дело, что заявки по ним выставляются в течение нескольких секунд. А ответ по всем транзакциям приходит так вообще в течение более минуты.
это говорит о том, что: на сервере достаточно мощный комп, под приём транзакций выделен отдельный поток. канал до биржи - (в данном случае, её эмулятора) - работает тоже весьма неплохо. приём и отправка ответа на клиентские транзакции - разделены по отдельным потокам. запись в базу заявок происходит быстрее считывания.
Это говорит только о производительности рабочего места Далее появляется объект с неизвестными нам свойствами в виде трассы до сервера QUIK, который не позволяет сделать каких-либо объективных выводов о производительности самого сервера, поскольку не известно, с какой частотой эти транзакции попадали к нему на обработку.
Надо делать так, как надо. А как не надо - делать не надо.
Добрый вечер, Объясняю для тех,кто не понял. -------------------------- Речь идет не об отправлении пулеметом 1000 транзакций по 1 сделке в каждой, а об отправлении 1000 транзакций по различным бумагам и различным счетам. ------------------------------------- Кратко рассказываю про грабли. ------------------- Для начала, решите на основе какой информации будут отправляться эти 1000 транзакций. ----------------------------- Если это информация по свечам, то она приходит не чаще, чем 10 раз в секунду. Кроме того, на Вашем компе работает алгоритм энгл, который обеспечит вам отправку транзакций примерно 10 раз в секунду Ну и так далее... ==================== Кроме того, учтите , то время обработки транзакции ядром сервера брокера да и биржи примерно 1 ms. А Вы в очереди не первый. ------------------------ После того, как учтете все это, то можете попробовать отправить хотя бы 100 в секунду, хотя бы по 10 бумагам, хотя бы по 5 счетам. ------------------------------------------- Успехов Вам мечтатели.
После того, как учтете все это, то можете попробовать отправить хотя бы 100 в секунду, хотя бы по 10 бумагам, хотя бы по 5 счетам.
Если Вы не работами с большим числом счетов, то зачем влазить влазить в тему? Данный вопрос ответа не требует!
Был конкретный вопрос как поведет себя сервер квика в такой ситуации, пользователь получил ответ.
Цитата
Sergey Gorokhov пишет: Здравствуйте, При отправке большого количества транзакций сервер не будет делить их на порции а отправит как есть. Далее транзакции будут отвергнуты и клиенту придет соответственная ошибка.
Решать вопрос нужно между клиентом и брокером, даже если сервер находится у нас. Ибо сервер принадлежит не нам, хоть и находится в наших дата центрах.
А как же "QUIK как риск-сервер (RISQ server)"?
Цитата
Сам модуль RISQ filter умеет проводить простые проверки (fat fingers): * списка разрешенных для торговли бумаг (фильтр допустимых/запрещенных инструментов, наличие инструмента в справочнике); * максимально допустимого объема заявки; * кратности количества, указанного в заявке, размеру лота по данному инструменту; * частоты подачи заявок (flood control).
Что понимается по последним пунктом (проверка частоты подачи заявок)? Как работают крупные брокеры, типа БКС, Финам, у которых 50 тыс. клиентов? Они резервируют сотни "Транзакционных логинов"?
Что касается проверки на сервере QUIK: Есть отдельные FIX решения для претрейда о них мы сейчас говорить не будем, так как эти продукты специфичны. На сервере QUIK есть своя встроенная проверка. По умолчанию проверка на сервере отключена. Проверяется частота транзакций в секунду на каждого отдельного пользователя. Проверяются все транзакции пользователей типа "Новая заявка". В количестве разрешенных транзакций будут учтены только те транзакции, которые прошли FloodControl. Не прошедшие его учитываться не будут. Если Ваша транзакция прошла наш FloodControl, но ее отвергла биржа, то такая транзакция попадет в счетчик. Какая частота настроена у каждого конкретного брокера нам не известно. Пример: Если пользователь за раз подает 100 транзакций а на севере разрешено только 10, то это означает что первые 10 транзакций пройдут, а последующие будут отвергнуты.
Текст ошибки в случае нарушения ограничения, будет следующим: "Количество транзакций превышает максимально разрешённое <число> в секунду."
Что касается проверки на стороне биржи, рекомендуем уточнить у специалистов биржи.