Старатель (Автор тем)

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

Страницы: Пред. 1 2 3 След.
Показывать коды классов в настройках списков заказа данных, Заказ данных -> Поток котировок, Поток обезличенных сделок
 
Отображать код класса в указанных окнах
Надо делать так, как надо. А как не надо - делать не надо.
CalcBuySell, Долгая работа функции
 
Среднее время выполнения функции CalcBuySell 6-7 мс. Как-то долго.
Может, можно что-то подкрутить в настройках?
Надо делать так, как надо. А как не надо - делать не надо.
Перестают работать события SetTableNotificationCallback
 
Создаём QLua-окно, назначаем ему колбек на события QTABLE_CHAR и/или QTABLE_VKEY.
Если переключиться на контрол "Edit" или "ComboBox" на панели инструментов ("Поиск инструмента", "Окно сообщений" и пр.), а затем активировать окно кликом на его заголовок, то события, назначенные раннее не работают. Чтобы заработали, нужно активировать кликом внутри окна.
Надо делать так, как надо. А как не надо - делать не надо.
Контекстное меню в Lua-таблицах
 
QUIK 8.2.0.78
При клике правой кнопкой мыши в Lua-таблице появляется контекстное меню. Как убрать?
Надо делать так, как надо. А как не надо - делать не надо.
Метки
 
Где теперь устанавливается прозрачность метки и фона?
Надо делать так, как надо. А как не надо - делать не надо.
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.
Надо делать так, как надо. А как не надо - делать не надо.
Клиентский портфель, Настройки обновления
 
Цитата
Система / Настройки / Основные настройки… раздел «Торговля» / «Клиентский портфель»
Влияют ли эти настройки на значения, получаемые из Lua, например, getPortfolioInfo, getPortfolioInfoEx и др.?
Надо делать так, как надо. А как не надо - делать не надо.
OnOrder, снятие заявки
 
Скрипт отправляет транзакцию на снятие заявки.
Допустим, OnOrder получен раньше или OnTransReply вообще не пришел.
Есть возможность установить инициатора снятия: сам скрипт, пользователь (вручную) или, может, другой бот?
Надо делать так, как надо. А как не надо - делать не надо.
Не завершается 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 не завершается (чаще всего) должным образом?
Надо делать так, как надо. А как не надо - делать не надо.
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Старая проблема.
Настроен список инструментов для получения информации по обезличенным сделкам.
К примеру, получаем сделки по классу FORTS, фильтр инструментов не включен.
Открываем новую таблицу ТВС и указываем только один инструмент из класса FORTS для вывода в эту таблицу. В результате настройки сбрасываются, сделки по остальным инструментам прекращают поступать.

Надо исправить: при открытии новой таблицы список инструментов не должен изменяться в сторону уменьшения.
Надо делать так, как надо. А как не надо - делать не надо.
Показывать последнее значение, точность отображения
 
Где настройка точности отображения последнего значения на графике?
Скрытый текст
Надо делать так, как надо. А как не надо - делать не надо.
Модуль опционной аналитики, Кривой расчёт прибылей/убытков
 
info.exe 7.14.1.7
StratVolat.dll 2.1.61.1
Неверно отображается прибыль при цене БА, равной страйку, на момент экспирации.
И как не меняй масштаб, добиться шага цены 100, чтобы страйк попал на одно из делений на шкале, невозможно.
Надо делать так, как надо. А как не надо - делать не надо.
Различаются графики в QUIK и экспорт с Финама
 
У кого-нибудь есть свежая история торгов непосредственно с биржи?
А то не совпадают данные из QUIK с экспортом с Финама
Скрытый текст

Как видно на скриншоте идёт смещение на одну минуту.
И такая беда по многим бумагам, которые проверил.
Надо делать так, как надо. А как не надо - делать не надо.
QUIK не может установить соединение с сервером.
 
У меня одного если QUIK работает несколько дней, то иногда после перезагрузки сервера, клиент не может установить соединение с сервером?
Надо делать так, как надо. А как не надо - делать не надо.
История торгов
 
1. Каким образом происходит обновление графиков при смене (идентификатора) сессии? Путём дозаписи в конец?
2. Если у брокера произошёл сбой, и часть графика за какой-то период не отображается, а затем он положил на сервер корректные данные, как получить корректный график, не потеряв при этом накопленную историю свыше 3000 свечей, которой нет на сервере?
Надо делать так, как надо. А как не надо - делать не надо.
CalcBuySell()
 
Функция CalcBuySell() возвращает значение в зависимости от установленной настройки "Исходя только из собственных средств", т.е. ведёт себя непредсказуемо.
Предлагаю добавить в функцию опциональный параметр, аналогичный этой настройке.
Надо делать так, как надо. А как не надо - делать не надо.
Заказ обезличенных сделок
 
В меню <Система / Заказ данных / Поток обезличенных сделок...> выбран класс целиком.
Если теперь создать Таблицу обезличенных сделок и добавить в неё или добавить в раннее открытую таблицу одну бумагу из выбранного класса, то в <Поток обезличенных сделок...> установится фильтр на заказ только одной бумаги из всего класса.
Можно сделать так, чтобы открытие или редактирование ТОС не сбрасывало инструменты, заказанные через <Поток обезличенных сделок...>?
Надо делать так, как надо. А как не надо - делать не надо.
QUIK 7.11.0.88, Не подставляется "Кол-во лотов" по умолчанию
 
После обновления до 7.11.0.88 игнорируется значение параметра "Кол-во лотов" на вкладке "Торговля"
Надо делать так, как надо. А как не надо - делать не надо.
Падение QUIK при DestroyTable
 
Код
run, t_id = true

function main()
  t_id = AllocTable()
  CreateWindow(t_id)
  while run do
    sleep(1)  -- можно sleep убрать, чтоб наверняка
  end
end
function OnStop()
  run = nil
  DestroyTable(t_id)
end
function OnDisconnected()
  OnStop()
end

При разрыве соединения в темной теме QUIK падает.
Как временное решение проблемы - поставить небольшую задержку в конце main()
Надо делать так, как надо. А как не надо - делать не надо.
Пропадает глобальная таблица _G
 
QUIK 7.10.0.76. Иногда при подключении к серверу скрипт падает с ошибкой
Цитата
attempt to call global 'W' (a nil value)
W - это функция, которая крутится в цикле main. Она никак не может быть nil.
Вот фрагмент кода:
Код
function OnConnected()
  Sort = true
end
function W()
  return nil
end
function main()
  ...
  while run do
    if Sort then
      table.sort({0, 1})  -- сортировка никак не связана с функцией W, но без сортировки проблема не воспроизводится
      Sort = nil
    elseif not W() then   -- тут возникает ошибка
    else sleep(100) end
  end
end

Целый день убил на поиск проблемы, пока не заглянул в глобальную таблицу _G. А её и нет:
когда изменил код так:
Код
function main()
  while run do
    if Sort then
      table.sort({0, 1})
      Sort = nil
    else
      if not _G then message('Ahtung! Not _G', 3)
      elseif not W() then
      else sleep(100) end
    end
  end
end
то при подключении скрипт стал однократно выдавать сообщение об отсутствии _G (т.е. впоследствии _G снова обнаруживается) или падать с ошибкой
Цитата
attempt to call global 'W' (a table value)
(неожиданно!)
Скрипт использует только функции из qlua.dll, не модифицирует функцию W, и не работает напрямую с глобальной таблицей.

Соответственно, вопрос разработчикам: есть ли в QLua какие-либо механизмы, способные так повлиять на работу?
Надо делать так, как надо. А как не надо - делать не надо.
Не открывается график
 
Несмотря на то, что инструменты сохраняются в sec.dat и таблице securities, графики  - в кэше archive, по инструментам с истёкшим сроком не открываются графики.
Зачем это ограничение?
Надо делать так, как надо. А как не надо - делать не надо.
Гарантийное обеспечение, В руководстве ошибка
 
Цитата
Значения параметров функций

54 BUYDEPO NUMERIC Гарантийное обеспечение продавца
55 SELLDEPO NUMERIC Гарантийное обеспечение покупателя
Надо делать так, как надо. А как не надо - делать не надо.
getParamEx
 
Код
Price = tonumber(getParamEx('FUTSPREAD', 'RIM7RIU7', 'last').param_value)
message(tostring(Price))
--> 0

Вопрос к разработчикам:
Вы можете предложить надёжный способ убедиться, что getParamEx даёт действительно последнюю цену инструмента, а не её отсутствие?
Надо делать так, как надо. А как не надо - делать не надо.
Самопроизвольная остановка Lua-скриптов, при замене инструментов с истекающим сроком обращения
 
При замене инструментов с истекающим сроком обращения останавливаются Lua-скрипты.
Почему так происходит?
Надо делать так, как надо. А как не надо - делать не надо.
OnStop
 
Это верно, что во время работы колбэка OnStop работа потока main приостанавливается?
Кроме того, скрипту даётся время на завершение работы, которое отсчитывается не по окончании OnStop (как это показано на вашей схеме), а от начала работы функции OnStop. Т.о., схема должна выглядеть так:
Скрытый текст
Надо делать так, как надо. А как не надо - делать не надо.
getDataSourceInfo
 
Предлагаю модифицировать функцию getDataSourceInfo: добавить необязательный параметр: STRING Tag и сделать функцию доступной как в индикаторах так и в обычных скриптах.
При задании параметра функция будет возвращать параметры графика с идентификатором Tag.
Надо делать так, как надо. А как не надо - делать не надо.
ParamRequest и CreateDataSource не заказывают получение параметров Таблицы текущих торгов
 
Если в настройках получения данных стоит галка "Исходя из настроек открытых пользователем таблиц", то ни ParamRequest ни CreateDataSource не могут заказать получение параметров Таблицы текущих торгов с сервера. При этом они радостно сигнализируют об успехе.
Нужно изменить такое поведение.
Надо делать так, как надо. А как не надо - делать не надо.
setmetatable
 
Код
function func(v)
  return v * v
end

s = {
  f = function(v)
    local r = s.r
    if not r then
      r = func(v)
      s.r = r
    end
    return r
  end
}

print(tostring(s.f(3)))
print(tostring(s.f(3)))

Функция s.f() запоминает вычисленное значение и при повторном обращении возвращает раннее вычисленное значение.
Можно ли описать её через setmetatable?
PS: возвращать она должна раннее сохранённое значение, независимо от переданного аргумента при повторном вызове.
Надо делать так, как надо. А как не надо - делать не надо.
AddColumn
 
Цитата
width – ширина в условных единицах.
Что это за условные единицы такие? Они привязаны к шрифту? Если да, то каким образом?
Надо делать так, как надо. А как не надо - делать не надо.
Сделки с вечерней сессии FORTS
 
Здравствуйте.

Как в коде определить, относится ли вечерняя сделка к текущей торговой сессии?
Надо делать так, как надо. А как не надо - делать не надо.
Редактирование настроек при добавлении индикатора
 
Куда пропало окно с настройками при первичном добавлении индикатора?
Надо делать так, как надо. А как не надо - делать не надо.
getFuturesHolding()
 
Скрытый текст

Может ли в таблице "futures_client_holding" с одним набором firmid, trdaccid, sec_code быть несколько строк с разными типами лимита type?
Надо делать так, как надо. А как не надо - делать не надо.
Рассчитать среднюю стоимость позиции
 
Если рассчитывать среднюю стоимость позиции по прошедшим сделкам, возникает вопрос:
Может ли колбэк по сделке прийти позже колбэка OnDepoLimit или OnFuturesClientHolding?
Надо делать так, как надо. А как не надо - делать не надо.
Почему скрипты в QUIK выполняются дольше
 
В среде QUIK скрипты выполняются в несколько раз дольше, чем в командной строке.
Вот такой скрипт
Код
function main()
  print = message or print
  local abs = math.abs
  local t = os.clock()
  for i = 1, 100000000 do abs(-1234.56789) end
  t = os.clock() - t
  print(string.format('%0.1f', t))
end

if not message then main() end
в командной строке выполняется 3.5 сек, в QUIK - 8.8 сек.
В 2.5 раза дольше! Почему так?

PS: ЦП: 2 ядра, 4 логических процессора.
Надо делать так, как надо. А как не надо - делать не надо.
Копирование значения ячейки в таблице
 
Добрый день.
Добавьте пункт меню "Копировать ячейку" (для копирования кодов бумаг, ISIN и пр.)
Надо делать так, как надо. А как не надо - делать не надо.
Фильтр по кодам клиентов, Доступ к фильтру из QLua
 
Добрый день.
Предлагаю дать доступ на чтение к фильтру по кодам клиентов из QLua и, соответственно, добавить колбэк при изменении этого поля.
Будет полезно для брокеров и управляющих.
Надо делать так, как надо. А как не надо - делать не надо.
SearchItems
 
Добавьте в функцию параметр, задающий количество совпадений, после которых прекращать поиск. А то если нужно циклически пройтись по таблице для поиска всего одного значения, то занимает слишком много времени.
Надо делать так, как надо. А как не надо - делать не надо.
OnFuturesClientHolding, session_status
 
Добрый день.

Подскажите, по какой причине во время основной сессии (в 14:16) параметр session_status может иметь значение 3?
Надо делать так, как надо. А как не надо - делать не надо.
SetTableNotificationCallback, множественное срабатывание
 
Код
f_cb = function(t_id, msg, par1, par2)
  if msg == QTABLE_LBUTTONDBLCLK then
    message("QTABLE_LBUTTONDBLCLK")
  elseif msg == QTABLE_LBUTTONUP then
    message("QTABLE_LBUTTONUP")
  elseif msg == QTABLE_LBUTTONDOWN then
    message("QTABLE_LBUTTONDOWN")
  end
end
SetTableNotificationCallback(t_id, f_cb)

Есть простой способ отличить двойной клик от одинарного? А то срабатывают сразу все события:
Код
QTABLE_LBUTTONDOWN
QTABLE_LBUTTONUP
QTABLE_LBUTTONDBLCLK
QTABLE_LBUTTONUP
Надо делать так, как надо. А как не надо - делать не надо.
CHANGETIME
 
Из таблицы "Список возможных идентификаторов параметров":
Цитата
56 CHANGETIME STRING Время последнего изменения

Время последнего изменения чего? Чьё время сюда подставляется?
Надо делать так, как надо. А как не надо - делать не надо.
QUIK v.7.1.0.381, Баги
 
Вот такой код:
Код
  local t_id = AllocTable()
  for i = 1, 12 do AddColumn(t_id, i, "", true, QTABLE_STRING_TYPE, 20) end
  CreateWindow(t_id)
  for i = 1, 5 do InsertRow(t_id, -1) end
  SetWindowPos(t_id, 0, 0, 1270, 120)
Появляется скрол:

хотя высоты хватает:
Надо делать так, как надо. А как не надо - делать не надо.
OnQuote
 
Здравствуйте.
Добавьте, пожалуйста, опциональную настройку, запрещающую создавать очередь событий OnQuote. Т.е, чтобы с сервера всегда поступало только последнее событие, а не вся очередь.
(Такой эффект можно наблюдать в моменты высокой активности на рынке, когда стакан сначала замирает на некоторое время, а затем ускоренно "прокручивает" все пропущенные котировки. В реал-тайм торговле в этом нет особого смысла.)
Надо делать так, как надо. А как не надо - делать не надо.
Выделять объём на тиковом графике цветом в зависимости от направления сделки
 
Здравствуйте.

Сделайте возможным на тиковом графике выделять разным цветом объёмы покупок и продаж.
Надо делать так, как надо. А как не надо - делать не надо.
OnTransReply, status
 
Здравствуйте.
В каких ситуациях может прийти OnTransReply со статусом 0 или 1?
Какие возможные значения может принимать status при выставлении стоп-заявок?
Надо делать так, как надо. А как не надо - делать не надо.
getQuoteLevel2, Приведение данных к корректному виду
 
Здравствуйте.

Измените QLua-функцию getQuoteLevel2 таким образом, чтобы она возвращала значения типа number вместо строковых.
(Я не могу придумать ни одного варианта, когда было бы необходимо (или даже возможно) использовать данные того формата, что сейчас возвращает функция... Даже в sendTransaction без форматирования эти данные не подойдут.)
Конечно, всё форматирование можно написать в своей программе, но форматирование в число занимает гораздо больше времени, чем в C-коде внутри самого терминала. Особенно, если нужно обработать несколько строк бидов и офферов. Это не дело.

Далее, при отсутствии заявок на покупку/продажу "таблицы" bid/offer имеют строковый тип. Логичнее было бы возвращать либо пустую таблицу {}, либо nil.
Надо делать так, как надо. А как не надо - делать не надо.
Изменение/перемещение стоп-заявки
 
В QUIK есть условные заявки типа "Со связ. заявкой". При частичном исполнении связанной заявки объем стоп-заявки уменьшается до величины неисполненного остатка лимитированной заявки.
Предлагаю на основе данного функционала добавить функцию изменения некоторых параметров (объёма, цены...) любых стоп-заявок без необходимости снятия/выставления новой заявки, т.е. в таблице стоп-заявок это будет та же самая заявка.
И также добавление нового вида ("ACTION") транзакции "MOVE_STOP_ORDER", при выполнении которой номер стоп-заявки остаётся прежним.
Надо делать так, как надо. А как не надо - делать не надо.
Таблица транзакций
 
Таблица транзакций очищается при переключении на другой сервер. Надо бы исправить.
Надо делать так, как надо. А как не надо - делать не надо.
Тейк-профит и стоп-лимит
 
При наведении курсором на линию условной заявки на графике всплывает подсказка с её параметрами.
На обеих линиях отображается параметр "Стоп-цена". Сделайте на тейк-профит линии название параметра "Тейк-цена", чтобы понятней было.

И ещё: я правильно понимаю, что после того как сработал сигнал по тейк-профит и начался расчёт min/max, то стоп-условие уже не рассматривается?
Надо делать так, как надо. А как не надо - делать не надо.
InsertRow
 
Цитата
NUMBER InsertRow(NUMBER t_id, NUMBER key)
Примечание:
При добавлении данных в новую таблицу в первую очередь выполните данную функцию с параметром «key» равным «-1». При этом строка добавится в конец таблицы.
Почему при добавлении в новую таблицу key должен быть равен -1?
Что произойдёт, если добавлять в новую таблицу с другим, отличным от -1, значением?
Надо делать так, как надо. А как не надо - делать не надо.
Нулевые позиции
 
Иногда, например во время клиринга, в таблицах QUIK транслируются нули вместо реальных позиций.
Эти нули присылает биржа или QUIK сам подставляет их вместо null?

Как можно понять, когда там действительно нули, а когда позиции пока ещё не загружены?
Надо делать так, как надо. А как не надо - делать не надо.
Страницы: Пред. 1 2 3 След.
Наверх