вадим написал: Вроде бы? Зачем утверждать то, в чём не уверен? Данные, которые может увидеть скрипт, при отсутствии ошибок, те же что и в видимой таблице. Легко проверить с помощью функций. Запрашиваешь количество строчек таблицы обезличенных сделок, а потом пробуешь получить значение из строки большей, чем их есть в видимой таблице. Выдаст значение nil. k = getNumberOf("all_trades") F=getItem("all_trades",k).flags Но как я и писал выше, в некоторых случаях случается ошибка, при редактировании параметров фильтров, замене инструментов перед экспирацией. Скрипт выдаёт значения из строк неверно, скорее всего из-за того что при редактировании параметров фильтра, некорректно обновляется файл, содержащий данные обезличенных сделок. Из-за это скрипты у меня, которые анализируют ТОС, начинают выдавать чушь. Правда ситуация исправляется перезаказом данных, но иногда это приходится делать по несколько раз. В последний раз у меня было такое, что я перезаказывал данные после замены инструментов перед экспирацией и у меня раз через раз отображалось то 42108 строчек, то 41958. Притом, что менялось и их программное отображение. В зависимости от того сколько отображалось строчек, у меня менялись первые свечки тикового графика. То их не было, то они появлялись, после перезаказа. И только на раз 8 перезаказа, после проверки, таблица начала выдавать данные, которые запрашивают. И поэтому когда происходят какие то изменения в параметрах фильтра таблицы обезличенных сделок, я проверяю корректное их обновление. В своё время, пока я не обнаружил эту ошибку, я сильно намучался, пытаясь понять почему мои скрипты работают неверно.
Написал "вроде бы" так как исследовал это надцать лет назад. Но специально для Вас сделал сейчас снова. ------------------ Да, я оказался прав. вот две картинки На этой таблица содержит все
а на этой включен фильтр кол-во=10
но результат запроса числа строк в ТОС остается как без фильтра
Если вы перезакажите данные, или перезапустите квик, то таблица будет выдавать только данные инструментов, выбранные фильтром. Но проблема то и не в этом, а в том что потом таблица выдаёт данные не из тех строк, из которых вы их заказываете. Возможно я крайне туп, что очень долго это мерещится мне, и зря при изменениях в фильтре каждый раз проверяю таблицу и перезаказываю данные. Очень возможно. Если у кого нибудь ещё появятся такие ошибки, тогда проблема подтвердится.
вадим написал: Здравствуйте. В квике есть ошибки, связанные с таблицей обезличенных сделок (далее ТОС). При чём у меня два брокера и эта проблема есть в обоих QUIK. При включенном фильтре, когда убираешь какой-либо инструмент из ТОС, то программно он не убирается. Или когда происходит замена инструментов перед экспирацией, ТОС начинает выдавать не правильные данные. Возможно есть и другие ситуации, когда случаются ошибки, я встречал пока только эти. У меня скрипты собирают данные из ТОС. И я заметил ошибки, когда скрипты начали сбоить. Хоть визуально таблица правильно выглядит, программно из неё нельзя корректно получить данные. Сегодня произошла замена инструмента. И мне пришлось раз 8 перезаказать данные, ещё и перезапустить QUIK. Проверяю я работу выводом данных из случайных строк через функцию getItem. И только спустя столько перезагрузок, мне начало выдавать значения те, что и показываются в строке из которой я беру данные. Исправьте пожалуйста проблему в следующих версиях.
Вроде бы, если включить фильтры, то они действуют лишь на отображаемую таблицу. Скрипт будет видеть всю таблицу без фильтров.
Вроде бы? Зачем утверждать то, в чём не уверен? Данные, которые может увидеть скрипт, при отсутствии ошибок, те же что и в видимой таблице. Легко проверить с помощью функций. Запрашиваешь количество строчек таблицы обезличенных сделок, а потом пробуешь получить значение из строки большей, чем их есть в видимой таблице. Выдаст значение nil. k = getNumberOf("all_trades") F=getItem("all_trades",k).flags Но как я и писал выше, в некоторых случаях случается ошибка, при редактировании параметров фильтров, замене инструментов перед экспирацией. Скрипт выдаёт значения из строк неверно, скорее всего из-за того что при редактировании параметров фильтра, некорректно обновляется файл, содержащий данные обезличенных сделок. Из-за это скрипты у меня, которые анализируют ТОС, начинают выдавать чушь. Правда ситуация исправляется перезаказом данных, но иногда это приходится делать по несколько раз. В последний раз у меня было такое, что я перезаказывал данные после замены инструментов перед экспирацией и у меня раз через раз отображалось то 42108 строчек, то 41958. Притом, что менялось и их программное отображение. В зависимости от того сколько отображалось строчек, у меня менялись первые свечки тикового графика. То их не было, то они появлялись, после перезаказа. И только на раз 8 перезаказа, после проверки, таблица начала выдавать данные, которые запрашивают. И поэтому когда происходят какие то изменения в параметрах фильтра таблицы обезличенных сделок, я проверяю корректное их обновление. В своё время, пока я не обнаружил эту ошибку, я сильно намучался, пытаясь понять почему мои скрипты работают неверно.
Здравствуйте. В квике есть ошибки, связанные с таблицей обезличенных сделок (далее ТОС). При чём у меня два брокера и эта проблема есть в обоих QUIK. При включенном фильтре, когда убираешь какой-либо инструмент из ТОС, то программно он не убирается. Или когда происходит замена инструментов перед экспирацией, ТОС начинает выдавать не правильные данные. Возможно есть и другие ситуации, когда случаются ошибки, я встречал пока только эти. У меня скрипты собирают данные из ТОС. И я заметил ошибки, когда скрипты начали сбоить. Хоть визуально таблица правильно выглядит, программно из неё нельзя корректно получить данные. Сегодня произошла замена инструмента. И мне пришлось раз 8 перезаказать данные, ещё и перезапустить QUIK. Проверяю я работу выводом данных из случайных строк через функцию getItem. И только спустя столько перезагрузок, мне начало выдавать значения те, что и показываются в строке из которой я беру данные. Исправьте пожалуйста проблему в следующих версиях.
Знаю, сталкивался с этим. В переменной PRCStr у тебя строка типа "12345.0" А в транзакцию цену надо передавать строку с учетом шага цены "12345"
Короче, точку с нулем из строки похерь и будет счастье
Код
function cut_zero (str)
local num = tonumber(str)
local zero = string.byte ( "0" , 1 )
local point = string.byte ( "." , 1 )
if ( string.find (num,'%.')) then -- Имеется точка в числе
for n = string.len (num), 1 , - 1 do -- Перебор справа налево
if ( string.byte (num,n) = = point) then return string.sub (num, 1 ,n - 1 ) end
if ( string.byte (num,n)~ = zero) then return string.sub (num, 1 ,n) end
end
end
return num
end
Можно и проще, зачем такие сложности. Можно округлить до целого и убрать точку с нулём через math.ceil().