elelel / qluacpp

C++ interface for Quik trading terminal via lua bindings
48 stars 26 forks source link

Изменение нумерации заявок и сделок в Spectra 6.3 #27

Closed QApplication closed 4 years ago

QApplication commented 4 years ago

Добрый день. Прошу Вас внести изменения в библиотеку в связи с переходом Spectra 6.3 с 14-значного на 19-значные номера заявок и сделок. Ссылка на ветку quik форума. Проблему частично описал в issues.

Изменения предположительно касаются:

  1. table orders field order_num
  2. table trades field trade_num
  3. table trades field order_num
  4. table stop_orders field order_num
  5. table stop_orders field co_order_num
  6. table neg_trades field order_num
  7. table trans_reply field order_num
  8. table all_trades field trade_num
  9. table stop_orders field alltrade_num
  10. table neg_trades field trade_num

Пример значения полей callback alltrade, полученные через qluacpp quik image при этом аналогичные значения в quik для приведенной выше сделки image

QUIK 8.3.2.4 Библиотеки (на сколько я понял используется lua5.1 (на lua5.3 quik не перешел)) image

image

elelel commented 4 years ago

Номер сделок (trade_num) обновил в 7e222c60400be66207d636a40f41aa3b00520040 Номер заявок (order_num) не обновлял, у вас есть возможность подтвердить, что они тоже не работают и стали 19-значными? Я к сожалению, не могу проверить, FORTS есть только на продакшн терминалах, работу с ним сейчас не веду, а Quik Junior (demo-доступ от Arqa) до сих пор транслирует записи со старыми номерами сделок и в вопросе заявок на него опираться так же нельзя.

QApplication commented 4 years ago

На moex (#1#, #2#, #3# ) говорится об изменении нумерации заявок и сделок

image

image

QApplication commented 4 years ago

Каким Вы сейчас пользуетесь терминалом на moex?

elelel commented 4 years ago

В этих сообщениях идет только о срочном рынке (Spectra). На срочном рынке в демо-терминале Квика идет проигрыш старых записанных событий, то есть со старыми номерами сделок, поэтому там я не могу проверить какие поля изменились, а какие нет. Являются ли все поля, называемые orders в QLua полями, куда транслируются номера сделок со срочного рынка, или часть этих полей осталась Int и их менять не нужно. У меня есть доступ к продакшн терминалам Quik 8 64-битному и 7 32-битному, на которых можно это проверить, исполнив реальные сделки на реальной бирже и посмотреть, какие будут номера в каких таблицах. Но на срочном рынке я заявки не выставляю сделки не исполняю в настоящий момент, и специально исполнить ради проверки у меня тоже возможности нет. Что касается пассивной информации, типа all_trades сделок, их я проверил в 64 и 32 терминалах.

QApplication commented 4 years ago

выше я привел таблицу ордеров для срочного рынка с ордером на покупку - нужно посмотреть как при этом работет qluacpp? или нужно сделку совершить?

QApplication commented 4 years ago

Проверил работу OnOrder callback на срочном рынке. При выставлении ордера, а также его снятия, кидается исключение (предположительно на поле order_num)

Exception at 0x7ffb633aa388, code: 0xe06d7363: C++ exception, flags=0x1 (execution cannot be continued) (first chance) at contrib\qluacpp\contrib\luacpp\src\entity.hpp:63
PLUGIN:  2020-Feb-17 11:25:22.908 void __cdecl quik::QLua::OnOrder(const struct lua::state &,const struct lua::entity<struct lua::type_policy<class qlua::table::orders> > &)    EXCEPTION:  Luacpp entity get: typecheck failed (Lua type at stack index -1 is nil; content as string: <Oops, got null from Lua when tried to get actual content as string>)

Также брокер за спамил сообщением image

Думаю можно смело менять все поля ордеров на string

elelel commented 4 years ago

Давайте действительно сделаем так. Заменю все поля с номерами сделок/заявок на строки. А если у кого-то возникнут проблемы с измененными номерами, уже будем фиксить по месту.

QApplication commented 4 years ago

Ок, буду тестить на фонде и срочном рынках. Спасибо за оперативность.

elelel commented 4 years ago

Добавил, когда будете тестировать, проверьте, пожалуйста стоп-заявки. Думаю, там используется внутренний номер сервера Quik, и его следует откатить обратно в int.

QApplication commented 4 years ago

Проверил стоп-заявку, исключений из-за смены типа данных номера intto stringне кидает.

QUIK: image

QLUACPP: image

QApplication commented 4 years ago

Проверил лимитную заявку на FORTS (SPBFUT), иключений не кидает QUIK: image QLUACPP: image

QApplication commented 4 years ago

alltrade callback работает без иключений image

QApplication commented 4 years ago

Завтра скину сканы с транзакций

elelel commented 4 years ago

Проверил стоп-заявку, исключений из-за смены типа данных номера intto stringне кидает.

QUIK: image

Судя по скрину, order_num короткий?

QApplication commented 4 years ago

да, номер короткий. У меня есть предположение, что арка когда нибудь и эти ордера переведет на 19-значные. Теоретически можно оставить uint.