Добрый день Как узнать, полностью ли выполнена заявка? Из мануала: бит 0 (0x1) Заявка активна, иначе – не активна бит 1 (0x2) Заявка снята. Если флаг не установлен и значение бита «0» равно «0», то заявка исполнена
Не понятно значение второго поля (то есть, бита "1") Судя по первому предложению ("Заявка снята"), он должен быть "1", когда заявка снята. Судя по второму предложению ("Если флаг не установлен..."), он должен быть "0", как и первый бит... иначе получается, что заявка еще не снята, а до сих пор актуальна.
В таблице trade нет никакого balance. Я анализирую то, что приходит в OnTrade. Есть trade.value, но это объем в деньгах, ничем не помогает.
Печалька такая: независимо от того, полностью или не полностью выполнена заявка, биты "0" и "1" в flags ВСЕГДА нулевые. Это проверено экспериментально. Конкретно код такой: if bit.band(trade.flags,1) == 0 and bit.band(trade.flags,2) == 0 then isComplete = true else isComplete = false end Может, тут ошибка? Я ее не вижу. Следующий бит "2" срабатывает при аналогичной проверке на buy/sell корректно: if bit.band(trade.flags,4) > 0 then operation = sell else operation = buy end
Как проверить-то?! Не хочется запоминать отправленное в заявке значение объема, а потом смотреть на пришедшее в OnTrade trade.qty, вычитать и сравнивать с нулем... это будет костыль какой-то.
Вопрос в тему: На практике кто-нибудь сталкивался с тем, что сумма всех qty > запрашиваемого объёма. Я имею ввиду, всегда ли гарантировано хватает точности Lua-типа number (или Си типа double) для хранения значения объёма (и проведения с этим значением поэтапного вычитания - вычисление невыполненного объёма)?