Ребята, прошу помощи начинающему Lua-разрабу.
У меня есть такой код. Функция ActiveLimitOrderExists должна проверить, что по инструменту в таблице заявок есть активная лимитная заявка на продажу или покупку.
Проблема в этой строке
if bit.band(order.flags, 0x4) == operation_flag then
Не могу добиться, чтобы она отдавала правильный результат. Что может быть не так, что bit.band(order.flags, 0x4) ничего не отдает. Например, если вывести результат выполнения в message(bit.band(order.flags, 0x4)).
У меня есть такой код. Функция ActiveLimitOrderExists должна проверить, что по инструменту в таблице заявок есть активная лимитная заявка на продажу или покупку.
Проблема в этой строке
if bit.band(order.flags, 0x4) == operation_flag then
Не могу добиться, чтобы она отдавала правильный результат. Что может быть не так, что bit.band(order.flags, 0x4) ничего не отдает. Например, если вывести результат выполнения в message(bit.band(order.flags, 0x4)).
| Код |
|---|
function main()
local a = ActiveLimitOrderExists(52.50, 1)
end
function ActiveLimitOrderExists(price, operation_flag)
local orders_count = getNumberOf("orders")
for i = 0, orders_count - 1 do
local order = getItem("orders", i)
if order.class_code == CLASS_CODE and order.sec_code == SEC_CODE then
message("Не проверили направление сделки")
if bit.band(order.flags, 0x4) == operation_flag then
--if order.OPERATION == operation_flag then
-- Проверяем, что цена совпадает
message("Проверили направление сделки")
if order.price == price then
-- Проверяем, что заявка активна (бит 0 в flags = 1)
if bit.band(order.flags, 0x1) == 0x1 then
-- Проверяем, что это лимитная заявка (бит 1 в flags = 0, т.е. не снята)
if bit.band(order.flags, 0x2) == 0 then
return true
end
end
end
end
end
end
return false
end |