Таблица всех сделок

Страницы: 1
RSS
Таблица всех сделок, Проблема при считывании направлении сделок ("Купля" или "Продажа")
 
Добрый день!
Столкнулся с проблемой определения направления сделок из "Таблицы всех сделок", а именно:
1. Это бывает редко, но бывает.
Пример кода:
Код
sClassCode = "SPBFUT"
sSecCode = "SiU5"

            if alltrade.sec_code == sSecCode and alltrade.class_code == sClassCode then
                if alltrade.flags==1 then 
                        direction="Продажа"
                        end
                if alltrade.flags==2 then 
                        direction="Купля"
                        end
Так вот, например сегодня 28.07.2015 при старте в 10:00:00
первая сделка в текстовом представлении терминала QUIK (версия 6.17.1.17) выглядит так:
№      Время      Цена      Кол-во      Операция
______________________________________
1 10:00:00    60648             55     Купля
______________________________________

С помощью программы на Lua не получается определить направление сделки,
причём это бывает всегда, а именно, при старте.

Далее, всё работает нормально и все направления определяются правильно,
но и после старта случается невозможным определить направление, правда, гораздо реже.

Что же делать?
Как быть?
Что не так?
Как сам терминал определяет направление и, надеюсь, правильно определяет?

С уважением ко всем разработчикам!
Заранее благодарю!
 
Небольшое добавление к вопросу выше:
-------------------------------------------------------------------------------------------------
Флаги для таблицы Обезличенные сделки

Флаг установлен Значение
бит 0 (0x1) Сделка на продажу
бит 1 (0x2) Сделка на покупку  

В случае, если флаги не установлены, направление сделки не определено.
--------------------------------------------------------------------------------------------------


Так вот:
А такое бывает, когда флаги могут быть не установлены?
Судя по возникшей проблеме, вроде, - да.


Но как сам Квик определяет направление?
 
по-моему,
Квик сам не определяет,
этот параметр приходит с биржи
 
Цитата
Фёдор Сухов пишет:
А такое бывает, когда флаги могут быть не установлены?
Да бывает, например у нас не демо сервере или на некоторых специфичных биржевых площадках.
Цитата
Фёдор Сухов пишет:
Но как сам Квик определяет направление?
Сам QUIK не определяет

Цитата
Фёдор Сухов пишет:
alltrade.flags==1 then
Вы не правильно проверяете наличие флага, правильно так:
Код
if bit.band(alltrade.flags, 0x1) ~= 0 then
   direction="Продажа"
end
 
if bit.band(alltrade.flags, 0x2) ~= 0 then
   direction="Купля"
end
 
Цитата
Sergey Gorokhov пишет:
Цитата
Цитата
Фёдор Сухов пишет:
alltrade.flags==1 then
Вы не правильно проверяете наличие флага, правильно так:
Код
 if bit.band(alltrade.flags, 0x1) ~= 0 then
   direction="Продажа"
end
 
if bit.band(alltrade.flags, 0x2) ~= 0 then
   direction="Купля"
end
 
Но ведь по двоичной арифметике 1-й бит установлен в 1, то 2 в нулевой степени равно 1,
если 2-й бит установлен в 1, то 2 в первой степени равно 2.
Всё должно быть правильно.

Вопрос возникает только при расчёте именно первой сделки при старте, за редким исключением в течении дня, но очень редко.
 
Иногда сделки приходят с параметром flags, равным 1025 (установлен 1-й бит) или 1026 (установлен 2-й бит).
А вот, что значат эти биты - вопрос к техподдержке.
Надо делать так, как надо. А как не надо - делать не надо.
 
*Вернее, установлены 0-й (для 1025) и 1-й (для 1026) биты соответственно.
Надо делать так, как надо. А как не надо - делать не надо.
 
Спасибо Сергею Горохову (Sergey Gorokhov)!

Всё проверил!
Действительно надо было побитово проверять.
При старте и в течении дня проскакивают заполненные старшие биты, поэтому и не получалось определять направление сделки.

Низкий поклон!
 
Цитата
Старатель пишет:
*Вернее, установлены 0-й (для 1025) и 1-й (для 1026) биты соответственно.
вообще-то в 1025 установлен только 0й бит, а в 1026 только 1й.
так что все нормально
 
Цитата
Старатель пишет:
*Вернее, установлены 0-й (для 1025) и 1-й (для 1026) биты соответственно.
вот если будет 1024 (00) или 1027(11) - тогда да, надо разбираться.
 
Цитата
Imersio Arrigo пишет:
Цитата
Старатель пишет:
*Вернее, установлены 0-й (для 1025) и 1-й (для 1026) биты соответственно.
вообще-то в 1025 установлен только 0й бит, а в 1026 только 1й.
так что все нормально
Кто-то утверждал обратное?
Вопрос в том, что означают старшие биты в обезличенных сделках? (В документации информации нет.)
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель пишет:
Цитата
Imersio Arrigo пишет:
Цитата
Старатель пишет:
*Вернее, установлены 0-й (для 1025) и 1-й (для 1026) биты соответственно.
вообще-то в 1025 установлен только 0й бит, а в 1026 только 1й.
так что все нормально
Кто-то утверждал обратное?
Вопрос в том, что означают старшие биты в обезличенных сделках? (В документации информации нет.)
Значения этих битов несут служебный характер и для конечного пользователя бесполезны.
 
1024=2^10,
т е установлен 10 бит.
то бишь не старшие,
а лишь один - десятый.
 
Цитата
Николай Камынин пишет:
1024=2^10,
т е установлен 10 бит.
то бишь не старшие,
а лишь один - десятый.
Николай, а причем тут 1024? мы же про 1025 и 1026 говорим
 
Цитата
Николай Камынин пишет:
1024=2^10,
т е установлен 10 бит.
то бишь не старшие,
а лишь один - десятый.
в 16битном числе может бы до 16 установленных битов одновременно.
а в 32х-битном. аж 32. представляете?

но речь только о 0-м и 1-м :)
 
Цитата
Sergey Gorokhov пишет:
Цитата
Николай Камынин пишет:
1024=2^10,
т е установлен 10 бит.
то бишь не старшие,
а лишь один - десятый.
Николай, а причем тут 1024? мы же про 1025 и 1026 говорим
Николай, правильно пишет про 10-й бит, только 1 нему ещё добавляется самый первый (о-й) бит,
вот и получается число 1025, а если значение=1026, то заполнены 10-й  и 2-й биты
Двоичная арифметика, пымаш ли.
 
Давненько на форумах битики не гоняли!
8)
 
День добрый!
А может такое быть, что в таблицу всех сделок флаг операции не приходит и его значение равно nil. А потом например обновляется?
Или если уж пришла запись, то она всегда полная?
 
Цитата

Цитата
Фёдор Сухов пишет:
Но как сам Квик определяет направление?
Сам QUIK не определяет
Я всегда считал что Фортс не шлёт направление сделки и его вычисляет Квик....
http://forum-archive.quik.ru/forum/quik/118273/118341/
Разве не так?
 
полагаю, что серверу брокера это делать очень накладно,
поскольку он тогда должен обрабатывать все ордера  на бирже.
-------------------------------
При этом получится что все брокеры будут считать одно и тоже для всех сделок биржи. Это вообще бессмысленно.
---------------------------------------
Поэтому это делает сервер биржи, так как он может определить направление при урегулировании сделки и выставить его в поток обезличенных сделок.
Страницы: 1
Читают тему
Наверх