Старатель (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.
table.ssort, зависает терминал при выполнении table.ssort в main
 
Похоже, SetCell ждёт код возврата и не может его получить, поскольку основной поток "заморожен"
table.ssort, зависает терминал при выполнении table.ssort в main
 
Демонстрационный скрипт:
Код
local AllTrades = {}
function main()
  ID = AllocTable()
  AddColumn(ID, 1, '1', true, QTABLE_INT_TYPE, 20)
  CreateWindow(ID)
  row = InsertRow(ID, -1)

  while not stoped do
    if #AllTrades ~= 0 then
      local trade_num = table.sremove(AllTrades, 1).trade_num
      table.ssort({0, 0}, function()
        SetCell(ID, row, 1, ''..trade_num)
        return true
      end)
   else sleep(1) end
  end  
end

function OnAllTrade(alltrade)
  table.sinsert(AllTrades, alltrade)
end

Через непродолжительное время терминал вешается.
Зависание происходит при выполнении инструкции SetCell в main.
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
 
Регистрируем
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
 
В настройках шрифтов («Программа» / «Шрифты») указан шрифт Tahoma.
При выборе условного форматирования эти настройки игнорируются, стоит по-умолчанию другой шрифт (Arial). Приходится дополнительно ещё указывать нужный шрифт и размер.
Клиентский портфель, Настройки обновления
 
Цитата
Система / Настройки / Основные настройки… раздел «Торговля» / «Клиентский портфель»
Влияют ли эти настройки на значения, получаемые из Lua, например, getPortfolioInfo, getPortfolioInfoEx и др.?
Дробное значение balance
 
Цитата
Sergey Gorokhov написал:
ответ зависит еще и от версии сервера.
Не внимательно прочитал.
Т.о., для российских площадок в версиях клиента (>= 7.24 and < 8) можно умножать balance на 100, не зависимо от версии сервера?
Дробное значение balance
 
Цитата
Sergey Gorokhov написал:
Если сервер выше 8.0 то количество требуется отображать с учетом точности инструмента, однако, на российских рынках как правило нет инструментов с дробным количеством, так что можно также умножать на 100.
Можно поподробнее?
В версии 8.1.0.30 balance отображается целым числом, зачем ещё умножать?
Дробное значение balance
 
Сотрудники ARQA Technologies, просвятите, пожалуйста,
В какой версии была добавлена ошибка?
В какой версии ошибка устранена?
Проблема на всех рынках?
В версиях, где ошибка присутствует, чтобы получить корректное значение снятого остатка, достаточно balance умножить на 100, или размер лота, или другое значение? Или всё сложнее?
Дробное значение balance
 
В какой версии была добавлена ошибка?
7.16 - это последний релиз 7 версии, где нет этой ошибки?
OnOrder, снятие заявки
 
uid и canceled_uid будут равны при выставлении/снятии заявки от имени одного логина как пользователем так и скриптом.
Увы, но при отсутствии OnTransReply это не поможет.
OnOrder, снятие заявки
 
Вопрос можно поставить так:
Можно ли из Lua-скрипта определить, что заявка снята по транзакции этого скрипта, если OnTransReply не получен?
OnOrder, снятие заявки
 
Цитата
Николай Камынин написал:
и главное зачем скрипту знать
Так и знал, что кто-нибудь из зевак будет задавать кучу вопросов.  :smile:
Ну, например, для реализации функции для фондовой и валютной секций, аналогичной "MOVE_ORDERS" на срочке.
Заявку может снять пользователь, но скрипт не сразу об этом узнает, особенно, когда биржа тормозит, и колбеки приходят с задержкой в несколько секунд.
OnTransReply - один из колбеков, доставка которого не гарантируется, ну так сложилось.
Рассуждения "кто, зачем и почему" не интересуют.

Интересует ответ на вопрос в первом сообщении темы с учётом особенностей архитектуры ИТС QUIK.
Доска опцинов из QLUA
 
Код
getParamEx(class, sec, "optiontype")
OnOrder, снятие заявки
 
Цитата
s_mike@rambler.ru написал:
если этот колбек к вам не пришел, значит, нужно исправлять аппаратную часть.
По секрету: проблема может быть не на стороне клиента, чью аппаратную часть будете исправлять?  :wink:
depo_limit.currentbal в лотах на демо
 
к разработчикам:
Если это - "та самая" функция, можете её легализовать или сделать публичную версию, чтобы можно было использовать её в своих проектах, не опасаясь, что в будущем эта функция будет упразднена.
OnOrder, снятие заявки
 
Скрипт отправляет транзакцию на снятие заявки.
Допустим, OnOrder получен раньше или OnTransReply вообще не пришел.
Есть возможность установить инициатора снятия: сам скрипт, пользователь (вручную) или, может, другой бот?
LuaSQL
 
Цитата
Anton написал:
получили sqlite3.dll
Помимо этой библиотеки ещё что-то нужно?
А то:
Цитата
error loading module 'luasql.sqlite3' from file:
Не найдена указанная процедура.
Работа с таблицами Квика
 
Цитата
Alexey Ivannikov написал:
Действительно, описываемое поведение некорректно. IsWindowClosed()  возвращает TRUE только в случае, если окно таблицы было закрыть  "вручную" (т.е. кликом мыши по "крестику"). Ошибка будет исправлена в одной из очередных версий программы.

Главное исправить так, чтобы было понятно, какую таблицу можно повторно открыть с помощью CreateWindow, а кукую нужно создавать заново, чтобы результат работы кода
Код
if IsWindowClosed(id) == true then CreateWindow(id) end
был предсказуем.
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
 
Цитата
Alexander Kopyatkevich написал:
Обнаруженная Вами ошибка была исправлена в выпущенной версии     Рабочего места QUIK 8.1.
Так а что исправили-то можете объяснить?


Форматирование отличается только галкой "применить ко всей строке".
Хотим отформатировать только шрифт, фон оставить, как есть.

В первом случае цвет фона остаётся, т.е. зелёный, как был задан из скрипта.
Во втором случае цвет фона из красного перекрашивается в белый.
depo_limit.currentbal в лотах на демо
 
Может, да, а может нет. Назвать как угодно можно, а что показывает одному автору известно.
Учитывая, что функция появилась в 7.18 и до сих пор никому не известна, либо это не то, что вы подумали, либо разработка совершенно секретная )))
depo_limit.currentbal в лотах на демо
 
Что за функция isLimitsInLots в qlua.dll?
*AllTrade*, новые функции для qlua
 
Цитата
Sergey Gorokhov написал:
важнее с какой скоростью данные поступают и обрабатываются нежели с какой скоростью происходит заказ.
Для сравнения: в день по опционам проходит биржевых сделок около 20 тыс. (±10 тыс.). Чтобы подписаться на сделки по всему классу опционов, нужно дёрнуть info.ini около 150 тыс. раз.
*AllTrade*, новые функции для qlua
 
Цитата
Sergey Gorokhov написал:
Ваши ~500 сек никуда не идут в сравнении с нашими ~20сек.
При каждом вызове CreateDataSource по тикам дергается info.ini: раз 15 повторяется цикл LockFile/ReadFile/UnlockFile/CloseFile и один раз даже WriteFile ))
Скорость выполнения такого блока операций сильно зависит от скорости диска, на который установлен QUIK. И, как ни странно, может отличаться в десятки раз.

Ну ещё и сравнивать надо в одинаковых условиях, например, какие были установлены фильтры, что было в файлах info.ini (в частности в секции [ALL_TRADES_DATA]), alltrade.dat до запуска скрипта.
перехват ошибки
 
Ошибки в колбеках (не только OnCalculate) не останавливают работу скриптов, так и было задумано?
Не завершается main после остановки скрипта
 
Цитата
Nikolay Pavlov написал:
скрипт висел 5 секунд на строчке SetCell(t_id, 1, 1, tostring(r ))
Так и должно быть?
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
 
Я думал "Нет цвета" означает не перекрашивать в белый (или любой другой) цвет.
Это не так? Что же тогда?
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
 
Если условное форматирование применено ко всей строке, то настройка "Нет цвета" не работает.
Не завершается main после остановки скрипта
 
Nikolay Pavlov, если вы тестируете на Pentium 100, то, возможно, так и есть.
На современных компьютерах время работы функции f() менее 65 мс
Не завершается main после остановки скрипта
 
Под "не завершается должным образом" имеется ввиду невыполнение последнего оператора message('Exit') после нажатия кнопки "Остановить"
Где посмотреть описание на флаг в транзакции?
 
?
depo_limit.currentbal в лотах на демо
 
Цитата
Zoya Skvorcova написал:
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам,     что реализация пожелания признана потенциально целесообразной. Если     по результатам дальнейшего анализа, включающего юридические аспекты,     анализ на непротиворечивость с общей политикой компании, никаких     возражений не возникнет, мы постараемся включить Ваше пожелание в     план доработок при выпуске одной из следующих версий нашего ПО.
Цитата
Stanislav Tvorogov написал:
Данная настройка выполняется со стороны сервера QUIK. Получить ее значение из рабочего места QUIK через QLUA на данный момент, к сожалению, нельзя. При реализации ранее зарегистрированного пожелания ответ будет предоставлен в данной ветке форума.
Здравствуйте.
Удалось что-нибудь сделать?
Не завершается main после остановки скрипта
 
Код
local run = true

local function f()
  for i = 1, 2000000 do
    local a = 1 + 2 * 3 / 4
  end
  return run
end

function main()
  local t_id = AllocTable()
  AddColumn(t_id, 1, "", true, QTABLE_DOUBLE_TYPE, 20)
  CreateWindow(t_id)
  InsertRow(t_id, -1)
  while run do
    local r = f()
    SetCell(t_id, 1, 1, tostring(r))
    sleep(1)
  end
  message('Exit')
end

function OnStop()
  run = nil
  message('OnStop')
  return 5000
end
Почему после остановки скрипта main не завершается (чаще всего) должным образом?
Критерий исполнения заявки OnTrade
 
Цитата
Sergey Gorokhov написал:
Еще есть параметр ext_order_status, в котором значение 2 соответствует частичному исполнению.
В QUIK 8 параметр ext_order_status всегда равен 0. Это нормально?

Возможна ли ситуация, когда при снятии частично исполненной заявки параметр flag обновится раньше balance?
Где посмотреть описание на флаг в транзакции?
 
Цитата
Sergey Gorokhov написал:
«2097152» – на ввод заявки
Что такое "на ввод заявки"? Имеется ввиду ACTION "NEW_ORDER" или что-то другое?
Для ACTION "KILL_ORDER" или "MOVE_ORDERS" флаг должен отличаться?
InsertRow
 
Код
InsertRow(1, 1)
InsertRow
 
В документации написано:
Цитата
Функция возвращает номер добавленной строки при успешном выполнении, иначе – «-1».
По факту в случае ошибки возвращается 0
Перенос лимитной заявки, Перенос лимитной заявки на фондовой секции!?
 
Цитата
Виктор Волков написал:
запоминать эти заявки и выставлять заново
Такой функционал можно реализовать через Lua-скрипт
setmetatable
 
Код
t = setmetatable({vol = 0,
  ins ert = function(self, pos, value)
    if not value then
      pos, value = #self + 1, pos
    end
    self.vol = self.vol + value
    table.ins ert(self, pos, value)
  end,
  remove = function(self, pos)
    self.vol = self.vol - self[pos]
    table.remove(self, pos)
  end
}, {__newindex = function(self, key, value)
    self.vol = self.vol + val ue
    rawset(self, key, val ue)
  end})
Вроде, работает:
Код
t[1] = 3
t:insert(2, 2)
t:insert(3, 5)
t:remove(2)
setmetatable
 
Цитата
s_mike@rambler.ru написал:
пересчитывать итоги каждый раз при попытке извлечь значение по ключ vol
Думаю, будет накладно в общем случае, т.к. надо будет при каждом обращении к vol пробегать по всем элементам таблицы. Хотелось бы более элегантного решения.
setmetatable
 
При добавлении в таблицу сделал:
Код
t = setmetatable({vol = 0}, {__newindex = function(self, key, value)
  self.vol = self.vol + value
end})
t[1] = 3
t[2] = 2
t[3] = 5
print(t.vol)  --> 10
Но не нашёл метаметода при удалении элемента.
setmetatable
 
Код
local t = {vol = 0}
table.insert(t, 1, 3)  -->  t.vol = 3
table.insert(t, 2, 2)  -->  t.vol = 5
table.insert(t, 3, 5)  -->  t.vol = 10
table.remove(t, 2)     -->  t.vol = 8

Можно сделать через метатаблицу, чтобы при добавлении/удалении элемента в таблице в vol автоматически изменялась сумма всех индексных элементов?
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Давайте подумаем вместе.
Вот настроен список классов для получения обезличенных сделок. В терминале крутятся скрипты, работающие со сделками.
И тут "нерадивому" пользователю вдруг вздумалось зачем-то открыть ТОС и вывести в неё только один инструмент из класса. И бац, терминал перестаёт получать сделки по всем остальным инструментам из этого класса. Как следствие, некорректно работают скрипты.
Вы считаете нормальная логика? И как вы предлагаете работать? Опять лезть в настройки, выставлять фильтры, перекачивать данные, перезапускать скрипты?
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Предвосхищая вопросы: одна ТОС должна быть открыта всегда, если необходимо работать со сделками из скриптов. В неё может быть добавлен один любой инструмент, не важно какой, главное, чтобы была открыта сама таблица.
При открытии/закрытии других таблиц ТОС происходит #3
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Egor Zaytsev, вы внимательно прочитали, что я написал? Не увидел ответа на свой вопрос.
Вот есть у нас настройки для заказа обезличенных сделок:

Создаём новую таблицу обезличенных сделок, в которую хотим получать только один инструмент. Пусть это будет Si-9.19 в классе FORTS.

Конкретно, в эту таблицу один инструмент. В сам терминал же, по прежнему, сделки должны поступать по всем инструментам выбранных классов согласно первоначальным настройкам.
После создания таблицы настройки для заказа обезличенных сделок сбрасываются, включается фильтр в классе FORST
Таблица всех сделок
 
Egor Zaytsev,
Цитата
Старатель написал:
При перезаказе данных в течение торговой сессии по обезличенным сделкам
Ключевые слова здесь "в течение". Если вы тестируете на демо, да ещё когда торги не активны, то, очевидно, что не воспроизводится. Запустите на боевом QUIK в момент высокой активности торгов, чтобы сделки поступали в терминал непрерывно.
Что касается других площадок, я не проверял.
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Старая проблема.
Настроен список инструментов для получения информации по обезличенным сделкам.
К примеру, получаем сделки по классу FORTS, фильтр инструментов не включен.
Открываем новую таблицу ТВС и указываем только один инструмент из класса FORTS для вывода в эту таблицу. В результате настройки сбрасываются, сделки по остальным инструментам прекращают поступать.

Надо исправить: при открытии новой таблицы список инструментов не должен изменяться в сторону уменьшения.
Таблица всех сделок
 
Хочу вернуться к данной теме.
При перезаказе данных в течение торговой сессии по обезличенным сделкам (кнопка "Получить заново данные по обезличенным сделкам", настройка "Получать информацию по всем обезличенным сделкам с текущего момента" отключена) нарушается порядок следования сделок в хранилище.


В таблице параметр index - это индекс строки, получаемой функцией
Код
SearchItems('all_trades', 0, getNumberOf('all_trades')-1, function(class_code,sec_code) return sec_code == 'SiU9' and class_code == 'SPBFUT' end, 'class_code,sec_code')

Перезаказ был осуществлен примерно в 12:04. Как видно, первые несколько строк идут с этим временем, далее хронология начинается с начала веченей сессии.
На мой взгляд, это косяк, надо исправить.
А то приходится закрывать QUIK и вручную удалять файл alltrade.dat, чтобы восстановить порядок следования сделок.
Данные из стакана котировок
 
Сначала заявка на бирже проверяется на возможность исполнения, лишь затем не исполненные заявки попадают в очередь - т.н. стакан торгов.
Поделитесь, кто как отслеживает факт "готовности свечи"?
 
Николай Камынин,
offtopic
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.
Наверх