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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.
Остановить скрипт при закрытии терминала
 
Есть ещё вариант, но он вам не понравится:
Код
local stopped, id

function OnStop(flag)
  stopped = true
  DestroyTable(id)
end

function main()
  id = AllocTable()
  CreateWindow(id)
  SetTableNotificationCallback(id, function(t_id, msg, par1, par2)
    if msg == QTABLE_CLOSE then
      OnStop()
    end
  end)
  repeat
    sleep(16)
  until stopped
end
Контекстное меню в Lua-таблицах
 
Это не пожелание, а баг-репорт, как и здесь
Контекстное меню в Lua-таблицах
 
Если задана SetTableNotificationCallback (как для ячеек так и для заголовков) по событиям QTABLE_RBUTTONDOWN, QTABLE_RBUTTONDBLCLK, QTABLE_RBUTTONUP, то контекстное меню, в том виде, в котором сейчас есть (не настраиваемое) не нужно!
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
 
Код
function main()
  local id = AllocTable()
  AddColumn(id, 1, 'QTABLE_STRING_TYPE', true, QTABLE_STRING_TYPE, 30)
  AddColumn(id, 2, 'QTABLE_INT_TYPE', true, QTABLE_INT_TYPE, 25)
  CreateWindow(id)

  local row = InsertRow(id, -1)
  SetCell(id, row, 1, 'задано')
  SetCell(id, row, 2, '0', 0)

  row = InsertRow(id, -1)
  SetCell(id, row, 1, '')

  row = InsertRow(id, -1)
  SetCell(id, row, 2, '')
end


Как сделать, чтобы условие «задано» корректно работало для числовых ячеек?
Контекстное меню в Lua-таблицах
 
QUIK 8.2.0.78
При клике правой кнопкой мыши в Lua-таблице появляется контекстное меню. Как убрать?
Метки
 
Метки
 
Раньше можно было настроить прозрачность вручную. Зачем убрали?
Метки
 
Где теперь устанавливается прозрачность метки и фона?
Не срабатывает колбек OnTrade
 
Значения глобальных переменных, таких как, Status_Order, State_Order, Num_Order, удалять надо перед началом нового цикла.
Таблица всех сделок
 
Отправил на почту архив сделок alltrade.dat
В таблице такие данные:

и по многим другим бумагам.
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
Но не нашёл метаметода при удалении элемента.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.
Наверх