OnAllTrade flags

Страницы: 1
RSS
OnAllTrade flags, Как определить покупку или продажу по полю flags события OnAllTrade
 
Здравствуйте. Вопрос по поводу поля flags функции обратного вызова OnAllTrade получения обезличенных сделок. По документации поле flags принимает значения 1 (сделка на продажу) и 2 (сделка на покупку), однако по факту приходят значения 1025 и 1026. Что это за значения и как по ним определить покупку и продажу?
 
Добрый день.
Поле flags структуры all_trades нужно интерпретировать как битовую маску (т.е. рассматривать не как число в десятичной системе счисления, а как число в двоичной системе счисления).
В вашем случае:
1025 = 0100 0000 0001 (бит 0 (0x1)  Сделка на продажу)
1026 = 0100 0000 0010 (бит 1 (0x2)  Сделка на покупку)

Для работы с битовыми масками есть специальные функции (см. справку QLua, раздел "Функции для работы с битовыми масками в структурах данных")

Легче всего использовать функцию bit.test, вот примет:
Код
if bit.test(alltrade.flags, 0) then
  message("Обезличенная следка на продажу")
elseif bit.test(alltrade.flags, 1) then
  message("Обезличенная следка на покупку")
else
  message("Направление обезличенной сделки не определено")
end
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
 
Спасибо!
Страницы: 1
Читают тему
Наверх