Описание полей в методе on_trans_reply

Страницы: 1
RSS
Описание полей в методе on_trans_reply
 
Когда снимаю заявку на срочном рынке (да и на фондовом), мне прилетает сообщение в callback on_trans_reply. В нем есть поле flags, смысл которого мне непонятен и документации я что то не нашел. Также есть поле cancalled_uid, которое всегда одно и то же. В чем его смысл? Оно прилетает в on_order
 
Добрый день.

Параметр flags для функции onTransReply содержит следующие значения:
- бит 20 (0x21) Служебная транзакция
- бит 21 (0x22) Транзакция на выставление заявки

Параметр canceled_uid для функции onOrder содержит идентификатор пользователя, снявшего заявку.

Все параметры и их описания вы сможете найти в мануале Интерпретатор языка Lua (ссылка кликабельна).
 
Похоже, документация не соответствует реальности. Во-первых, что за странные цифры в скобках - (0x21) и (0x22)?
А во-вторых, я записывал в лог значения полей в OnTransReply, и в flags вижу такие значения:
0x260001 - при выставлении заявки на продажу.
0x240001 - при выставлении заявки на покупку и снятии любой заявки.
Отличаются они в 22 бите. Но установлен этот бит только при выставлении заявки на продажу, не на покупку.
 
Похоже опять несоответствие в справке?

Для флагов транзакций напечатано "бит 20 (0x21) и бит 21 (0x22)".

Математические маски битов 20 и 21 — 0x100000 и 0x200000;
по самой справке нельзя однозначно установить, где именно опечатка?

справка QLua - версия руководства 13.1;


И еще одно. Как проверять флаг? Для корректного целого flags заявки или собственной сделки:

Код
local is_sell = bit.test(flags, 2)             -- 2: номер бита
local is_sell_54 = (flags & 0x4) ~= 0   -- 0x4: маска, Lua 5.4.1


bit.band(flags, 0x4) возвращает 0 или 4, а не 0 или 1.
Проверять нужно через ~= 0. Кроме того, в Lua число 0 считается истинным, поэтому if bit.band(...) then — опасная проверка.
Почему Так?
Страницы: 1
Читают тему
Наверх