Сейчас проверил, и требуются разъяснения. Скрипт выставил заявку. Система приняла, в онордере флаг 29, лотов 5 произошло частичное исполнение, трейд. в онордере флаг опять 29, остаток 4 (продался один контракт)
Я расчитывал, что флаг изменится и строил логику поиска нужной записи по номеру заявки и изменившемуся флагу на частичное исполнение. Вижу что по факту флаг что при выставлении, что после частичного исполнения не изменился. Проясните, в чем я не прав и как работать с флагом?
Egor Zaytsev нас здесь немного обманывает. Согласно документации, бит 0 (0x1) Заявка активна, иначе – не активна бит 1 (0x2) Заявка снята. Если флаг не установлен и значение бита «0» равно «0», то заявка исполнена
Это значит, что следующие комбинации битов 0 и 1 соответствуют статусам: "Активна" - "х1" "Снята" - "10" "Исполнена" - "00"
... что говорит о том, что если бит 0 равен 1, то бит 1 не имеет значения и анализировать его не нужно.
Частичное исполнение можно отследить с помощью полей qty (Количество в лотах) и balance (Остаток). Заявка частично исполнена, если при статусе "Активна" выполняется условие: 0 < balance < qty.
да, и еще на понятен смысл битовых флагов в онтрэйд. У меня выдает 4 ( это 00) При частичном исполнении заявки. Документация отсылает к тому же описанию, что и онордер. Но вижу, что работает иначе, проясните, пожалуйста.
Viktor MMM пишет: Да, я понял уже, что статус не будет меняться. А по статусу в онтрэйд есть информация?
Для сделок эти биты неприменимы, ибо к сделкам они отношения не имеют. Просто по формату используется тот же набор флагов. У сделок будет существенен только бит 2: "Данный флаг для сделок и сделок для исполнения определяет направление сделки (BUY/SELL)". Остальные пропускаем.
Понял, спасибо. Непонятно только почему разработчики не ответили, вроде поиском не нашел подобных тем. Получилось, что пользователи, которым я благодарен, ответили на вопросы, в сущности, касающиеся самого продукта.
Viktor MMM пишет: да, и еще на понятен смысл битовых флагов в онтрэйд. У меня выдает 4 ( это 00) При частичном исполнении заявки. Документация отсылает к тому же описанию, что и онордер. Но вижу, что работает иначе, проясните, пожалуйста.
онТрейд - это совершенная сделка? флаги = 4 = 0100b, верно? биты: 2й = 1 продажа 1й = 0 - не отменена, а исполнена. 0й = 0 - не активна. т.е. исполнено на продажу. Что не так?
Цитата
SDL пишет: Это значит, что следующие комбинации битов 0 и 1 соответствуют статусам: "Активна" - "х1" "Снята" - "10" "Исполнена" - "00"
Вариант не противоречит документации. Но... он не менее спорный, чем первый. Всё зависит от того, как интерпретировать комбинацию "11": "снята" + "активна" (?!). В первом варианте алгоритм обработки флагов такой: 1. Бит 0 == 1 ? "Активна" : "Не активна" 2. Если "Не активна". Бит 1 == 1 ? "Снята" : "Исполнена".
Второй вариант анализа. 1. Бит 1 == 1 ? "Снята" : "Не снята" 2. Если "Не снята". Бит 0 == 1 ? "Активна" : "Исполнена".
Лично мне кажется первый вариант логичнее. Пускай разработчики ответят, какие комбинации битов возможны в приходящих данных.
Вариант не противоречит документации. Но... он не менее спорный, чем первый. Всё зависит от того, как интерпретировать комбинацию "11": "снята" + "активна" (?!). В первом варианте алгоритм обработки флагов такой: 1. Бит 0 == 1 ? "Активна" : "Не активна" 2. Если "Не активна". Бит 1 == 1 ? "Снята" : "Исполнена".
Второй вариант анализа. 1. Бит 1 == 1 ? "Снята" : "Не снята" 2. Если "Не снята". Бит 0 == 1 ? "Активна" : "Исполнена".
Лично мне кажется первый вариант логичнее. Пускай разработчики ответят, какие комбинации битов возможны в приходящих данных.
Интерпретатор языка Lua.pdf страница 75
5. Описание битовых флагов 5.1 Флаги для таблиц Заявки, Заявки на внебиржевые сделки, Сделки, Сделки для исполнения Флаг установлен Значение бит 0 (0x1) Заявка активна, иначе – не активна бит 1 (0x2) Заявка снята. Если флаг не установлен и значение бита «0» равно «0»,
т.е. русским по белому написано: если бит 1 установлен - заявка снята!. Все. Нет других вариантов. Снятая заявка не может быть активной.
А если бит 1 не установлен - то значение бита 0 определяет состояние активна (=1), либо исполнена(=0).
бит 0 (0x1) Заявка активна, иначе – не активна бит 1 (0x2) Заявка снята. Если флаг не установлен и значение бита «0» равно «0»,
т.е. русским по белому написано: если бит 1 установлен - заявка снята!. Все. Нет других вариантов. Снятая заявка не может быть активной.
Речь не о том, может быть снятая заявка активной или нет. Нет, не может. И точно так же русским по белому написано, что если бит 0 установлен - заявка активна! Повторяю, вопрос в том, как интерпретировать комбинацию "11" по факту ее появления? Вопрос в приоритете битов при анализе этой комбинации - бит 0 или бит 1? Вот как раз это в документации не разъяснено. Заявка активна ИЛИ (исключающее или, XOR, если так понятнее) снята? Разработчики, возможна в реальности эта комбинация или нет?