Добрый день Как узнать, полностью ли выполнена заявка? Из мануала: бит 0 (0x1) Заявка активна, иначе – не активна бит 1 (0x2) Заявка снята. Если флаг не установлен и значение бита «0» равно «0», то заявка исполнена
Не понятно значение второго поля (то есть, бита "1") Судя по первому предложению ("Заявка снята"), он должен быть "1", когда заявка снята. Судя по второму предложению ("Если флаг не установлен..."), он должен быть "0", как и первый бит... иначе получается, что заявка еще не снята, а до сих пор актуальна.
Итак, "0" и "0" или "0" и "1"?
Спасибо!
Пользователь
Сообщений: Регистрация: 02.07.2015
29.03.2016 08:05:18
Первый флаг 0х1 означает "Активна ли заявка". Если == 1, то активна. Если == 0, то снята либо исполнена.
Второй флаг как раз объясняет это состояние. Если == 1, то снята. Если == 0, то исполнена.
т.е. 0х00 = исполнена, 0х01 или 0х03 = активна, 0х02= снята
Michael Bulychev
Гость
29.03.2016 08:24:23
Добрый день. В заявке есть поле balance (остаток). Если заявка не активна и balance == 0 , то заявка исполнена полностью
Пользователь
Сообщений: Регистрация: 02.07.2015
29.03.2016 08:25:49
А если неактивна, не снята, и balance != 0?
Пользователь
Сообщений: Регистрация: 26.02.2015
29.03.2016 09:54:56
А можно ли использовать только balance без битовых проверок?
Пользователь
Сообщений: Регистрация: 26.02.2015
30.03.2016 14:52:06
Уважаемые господа, вопрос не решен.
В таблице 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, вычитать и сравнивать с нулем... это будет костыль какой-то.
Heeeeeeeeeeeeeeeeeeelp !!! Спасибо!
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
30.03.2016 15:18:03
Может, поможет: В QUIK нет таблицы "trade", но только "trades". В таблице "trades" нет заявок, только сделки. Заявки - в таблице "orders".
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 26.02.2015
30.03.2016 15:33:05
полагаю, что есть в описании функции, то и будет работать: function OnTrade(trade) function OnTrade(trades) function OnTrade(ooooooo)
ooooooo.qty - рабочий вариант, ась?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
30.03.2016 17:34:34
Хорошо, в OnTrade нет заявок.
Цитата
Сергей написал: ooooooo.qty - рабочий вариант, ась?
Рабочий. Можете работать.
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 26.02.2015
30.03.2016 17:44:37
Это ирония или что? Я всерьез рассчитываю, что именно указанная в описании функции переменная/таблица будет содержать необходимые данные.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
30.03.2016 17:58:19
По-моему, два решения озвучено:
Цитата
Michael Bulychev написал: В заявке есть поле balance (остаток). Если заявка не активна и balance == 0 , то заявка исполнена полностью
Цитата
Сергей написал: запоминать отправленное в заявке значение объема, а потом смотреть на пришедшее в OnTrade trade.qty, вычитать и сравнивать с нулем
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
30.03.2016 18:02:08
. Сделки (trades) не могут быть активны/не активны или сняты. Поэтому 0-й и 1-й биты для них не используются.
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 26.02.2015
30.03.2016 19:58:38
Вооот! Точно! Не в OnTrade нужно ловить, и не сделки! СПА-СИ-БО!
Пользователь
Сообщений: Регистрация: 31.01.2015
31.03.2016 15:13:04
Цитата
Imersio Arrigo написал: А если неактивна, не снята, и balance != 0?
Imersio Arrigo написал: А если неактивна, не снята, и balance != 0?
Хотелось бы услышать ответ на этот вопрос.
Добрый день. Придумайте. пожалуйста, реальную ситуацию для такого случая.
Пользователь
Сообщений: Регистрация: 31.01.2015
31.03.2016 16:24:13
По флагам - заявка исполнена, но Balance ещё(?) не стал равен нулю. Вот и спрашивают - такое возможно?
Michael Bulychev
Гость
01.04.2016 06:18:01
Я такой ситуации не представляю.
Пользователь
Сообщений: Регистрация: 27.01.2016
05.04.2016 01:54:41
Вопрос в тему: На практике кто-нибудь сталкивался с тем, что сумма всех qty > запрашиваемого объёма. Я имею ввиду, всегда ли гарантировано хватает точности Lua-типа number (или Си типа double) для хранения значения объёма (и проведения с этим значением поэтапного вычитания - вычисление невыполненного объёма)?