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

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

Страницы: Пред. 1 ... 14 15 16 17 18 19 20 21 22 23 24 ... 46 След.
Остановить скрипт при закрытии терминала
 
Есть ещё вариант, но он вам не понравится:
Код
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 ... 14 15 16 17 18 19 20 21 22 23 24 ... 46 След.
Наверх