1. В потоке обезличенных сделок: GAZP, BRV, SBER, RIZ0, SIZ0. 2. Создаю таблицу "Всех сделок" добавляю GAZP. 3. Жду загрузки 4. Удаляют из таблиц всех сделок, удаляю GAZP и добавляю BRV0 5. Жду когда загрузятся тики 6. Запускаю скрипт и получаю доступ к таблице all_trades через lua api. 7. Сначала выводятся сделки по BRV0 со временем 10:25 8. Потом идут сделки по BRV0 со временем 10:00 Получается в таблице all_trades - теряется порядок хронологии. Все остальные сделки идут верно.
Александр написал: 1. В потоке обезличенных сделок: GAZP, BRV, SBER, RIZ0, SIZ0. 2. Создаю таблицу "Всех сделок" добавляю GAZP. 3. Жду загрузки 4. Удаляют из таблиц всех сделок, удаляю GAZP и добавляю BRV0 5. Жду когда загрузятся тики 6. Запускаю скрипт и получаю доступ к таблице all_trades через lua api. 7. Сначала выводятся сделки по BRV0 со временем 10:25 8. Потом идут сделки по BRV0 со временем 10:00 Получается в таблице all_trades - теряется порядок хронологии. Все остальные сделки идут верно.
никто и никогда не обещал, что в таблице обезличенных сделок будет какое то упорядочивание по времени.
единственное, на что можно полагаться с большой долей уверенности - что в пределах одного инструмента сделки будут отсортированы по возрастанию времени.
Александр написал: 1. В потоке обезличенных сделок: GAZP, BRV, SBER, RIZ0, SIZ0. 2. Создаю таблицу "Всех сделок" добавляю GAZP. 3. Жду загрузки 4. Удаляют из таблиц всех сделок, удаляю GAZP и добавляю BRV0 5. Жду когда загрузятся тики 6. Запускаю скрипт и получаю доступ к таблице all_trades через lua api. 7. Сначала выводятся сделки по BRV0 со временем 10:25 8. Потом идут сделки по BRV0 со временем 10:00 Получается в таблице all_trades - теряется порядок хронологии. Все остальные сделки идут верно.
никто и никогда не обещал, что в таблице обезличенных сделок будет какое то упорядочивание по времени.
единственное, на что можно полагаться с большой долей уверенности - что в пределах одного инструмента сделки будут отсортированы по возрастанию времени.
Как раз нет хронологии в пределах одного инструмента BRV0 (в примере) - а должна быть. Так полагаемся на хронологию в приделах одного инструмента. Номера сделок увеличиваются. Проблема в том, что идут номера большие, потом идут сделки с меньшими номерами. Брокер финам, версия среды 8.8.4.3
Сделайте скриншот таблицы обезличенных сделок, чтобы на нем было видно, что сделка с меньшим временем находится ниже сделки с бОльшим временем в пределах одного инструмента.
если такой случай сделать не получается (так и будет) - ищите ошибку в том, что у вас работает через "луа апи"
Табличка подсортировывает при отображении. Вообще манипуляциями с фильтрами можно получить в хранилище месиво. Правда, чтобы по одному инструменту порядок менялся, я не видал еще, но думаю, что нет ничего невозможного для заинтересованного экспериментатора.
Зафильтруйте все, оставьте один газик, перезакажите ТВС - в хранилище будет один газик. Теперь снимите фильтр с газика, выберите один риз, не перезаказывая ТВС, - риз добавится в хранилище после газика. А в таблице будет в правильном порядке показано.
Александр, Добрый день! Записи в Таблице Обезличенных Сделок действительно должны быть упорядочены.
Для детального анализа проблемы просим выслать архив рабочего места и скрипт, который вы используете, на почту нашей поддержки (quiksupport@arqatech.com).
s_mike@rambler.ru написал: обезличенные сделки отсортированы в пределах одного инструмента на уровне внутренней базы квика.
С этим и спору нет. Речь о том, что на клиентской стороне, благодаря фильтрам, флагу "получать с текущего момента" и шаловливым ручкам теоретически можно наколбасить по-другому.
Александр, а вот этим скриптиком можете экспортнуть? То же самое получится?
Код
local function save_ticks(cls, sec)
local f = io.open(getScriptPath() .. '\\' .. cls .. '.' .. sec .. '.' .. 'csv', 'w')
f:write('<DATE>;<TIME>;<TRADENUM>;<PRICE>;<QTY>\n')
local fmt = '%04u%02u%02u;%02u%02u%02u%03u;%u;%.6f;%u\n'
local function cmp(t)
if not t then
return nil
end
if cls == t.class_code and sec == t.sec_code then
local dt = t.datetime
f:write(string.format(fmt,
dt.year, dt.month, dt.day,
dt.hour, dt.min, dt.sec, dt.ms,
t.tradenum, t.price, t.qty))
end
return false
end
SearchItems('all_trades', 0, 2000000000, cmp)
end
function main()
save_ticks('SPBFUT', 'BRV0')
end
Старатель написал: Этот флаг никак не должен менять порядок сделок в хранилище
Сам по себе да, а вкупе с шаловливыми ручками? Поставить флажок, накачать чего, снять флажок, накачать еще.
Проверьте. При снятии флага пропущенные сделки закачиваются только при перезаказе. Так что как раз теоретически в пределах одного тикера накрутить невозможно. А что на практике - так это не шаловливые ручки виноваты.
Надо делать так, как надо. А как не надо - делать не надо.
Старатель написал: Проверьте. При снятии флага пропущенные сделки закачиваются только при перезаказе. Так что как раз теоретически в пределах одного тикера накрутить невозможно.
Просто ручки недостаточно шаловливые. Ставлю с текущего момента, ставлю фильтр только BRV0, подключаюсь, едет с момента подключения. Снимаю с текущего момента, сбрасываю все галки. Ничего не едет. Ставлю опять фильтр только BRV0, едет со вчерашней вечерки безо всякого перезаказа.
s_mike@rambler.ru написал: обезличенные сделки отсортированы в пределах одного инструмента на уровне внутренней базы квика.
С этим и спору нет. Речь о том, что на клиентской стороне, благодаря фильтрам, флагу "получать с текущего момента" и шаловливым ручкам теоретически можно наколбасить по-другому.
Александр, а вот этим скриптиком можете экспортнуть? То же самое получится?
Код
local function save_ticks (cls, sec)
local f = io.open ( getScriptPath () .. '\ \' .. cls .. '.' .. sec .. '.' .. 'csv' , 'w' )
f:write( '<DATE>;<TIME>;<TRADENUM>;<PRICE>;<QTY>\n' )
local fmt = '%04u%02u%02u;%02u%02u%02u%03u;%u;%.6f;%u\n'
local function cmp (t)
if not t then
return nil
end
if cls = = t.class_code and sec = = t.sec_code then
local dt = t.datetime
f:write( string.format (fmt,
dt.year, dt.month, dt.day,
dt.hour, dt.min, dt.sec, dt.ms,
t.tradenum, t.price, t.qty))
end
return false
end
SearchItems ( 'all_trades' , 0 , 2000000000 , cmp)
end
function main ()
save_ticks( 'SPBFUT' , 'BRV0' )
end
Галочка нет на флаге "получать с текущего момента" Попробую сделать.
Roman Azarov написал: Александр, Добрый день! Записи в Таблице Обезличенных Сделок действительно должны быть упорядочены.
Для детального анализа проблемы просим выслать архив рабочего места и скрипт, который вы используете, на почту нашей поддержки ( quiksupport@arqatech.com ).
На счет скрипта не понятно. Там у меня мой скрипт запущен, который написан на lua api? Вы его хотите?
Roman Azarov написал: Александр , Добрый день! Записи в Таблице Обезличенных Сделок действительно должны быть упорядочены.
Для детального анализа проблемы просим выслать архив рабочего места и скрипт, который вы используете, на почту нашей поддержки ( quiksupport@arqatech.com ).
На счет скрипта не понятно. Там у меня мой скрипт запущен, который написан на lua api? Вы его хотите?