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

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

Страницы: Пред. 1 ... 13 14 15 16 17 18 19 20 21 22 23 ... 46 След.
Quik 8.5 не освобождается память
 
Цитата
Старатель написал:
При остановке скрипта в результате ошибки память не освобождается.
Также не выгружаются загруженные в скрипт библиотеки. Эти проблемы, вроде, уже лечили в 6 или 7 версии.
Надо делать так, как надо. А как не надо - делать не надо.
Quik 8.5 не освобождается память
 
При остановке скрипта в результате ошибки память не освобождается. Пример:
Код
function main()
  t = {}
  for i = 1, 10000000 do
    t[i] = i
  end
  local a = b + 1
end
Надо делать так, как надо. А как не надо - делать не надо.
Появляется лишняя строка в таблице
 
Цитата
Anton написал:
в мейне тоже в критическую секцию завернуть
QUIK повесится
Надо делать так, как надо. А как не надо - делать не надо.
Появляется лишняя строка в таблице
 
Цитата
Evgeniy Karnaukhov написал:
так как строка уже удалена и не найдена, она будет добавлена вновь.
Зачем?

Цитата
Evgeniy Karnaukhov написал:
Проблема вызвана тем, что работа с таблицей в скрипте осуществляется из разных потоков без синхронизации.
Можете предложить рабочий пример?
Такой вариант тоже не работает:
Код
function OnAllTrade()
  if not run then return end
  alltrade = true
  for i = 1, rows do
    table.ssort({0, 0}, function()
      DeleteRow(id, 1)
      InsertRow(id, rows)
      return true
    end)
  end
end
Надо делать так, как надо. А как не надо - делать не надо.
Отладка QUIK 8.5
 
Если удалять скрипты из середины списка получается такая ерунда:
Надо делать так, как надо. А как не надо - делать не надо.
Оповещения и сообщения в торговом терминале QUIK
 
Нужно, чтобы message могла показывать отдельные сообщения при снятой галке "Обычные". (Для сообщений об ошибках, алерты и пр.)
Надо делать так, как надо. А как не надо - делать не надо.
Оповещения и сообщения в торговом терминале QUIK
 
А есть возможность показывать message с icon_type = 3 и/или 2 без необходимости включать все типы сообщений?
Надо делать так, как надо. А как не надо - делать не надо.
Появляется лишняя строка в таблице
 
Демонстрационный скрипт:
Код
function OnStop()
  run = nil
  SetCell(id, 1, 1, string.format('Size: %u', GetTableSize(id)))  -- Почему-то попадаем в строку 2
end

local alltrade
function OnAllTrade()
  if not run then return end
  alltrade = true
  for i = 1, 30 do
    DeleteRow(id, 1)
    InsertRow(id, 30)
  end
end

function main()
  id = AllocTable()
  AddColumn(id, 1, 'Size', true, QTABLE_INT_TYPE, 15)
  CreateWindow(id)
  SetWindowPos(id, 0, 0, 100, 520)
  for i = 1, 30 do
    InsertRow(id, -1)
  end

  run = true
  while run do
    if alltrade then
      alltrade = nil
      SetCell(id, 30, 1, string.format('%u', GetTableSize(id)))
    else sleep(1) end
  end
end

Через некоторое время работы появляется 31 строка. Первая строка становится недоступна для редактирования.

Видео
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Не рассчитывается максимальное возможное количество лотов в заявке
 
Anna Lozenko, уже почти неделя прошла. Прошло несколько клирингов. Думаю, после расширения лимитов в следующий клиринг ситуация исправляется, но точно не скажу, т.к. не отслеживал данную ситуацию.
Надо делать так, как надо. А как не надо - делать не надо.
Оповещения и сообщения в торговом терминале QUIK
 
Функция QLua message с icon_type = 2 не показывает окно при активной галке "Отмеченные как важные"
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Не рассчитывается максимальное возможное количество лотов в заявке
 
Дубль 2
После расширения планок в результате стоп-торгов в поле ввода заявки не рассчитывается максимальное возможное количество лотов по ценам выше/ниже каких-то (непонятных) границ (и эти границы не связаны с макс./мин. возможной ценой инструмента).
Так, в раннее описываемом случае для цены 23,01 количество рассчитывалось, для цены 23,00 не рассчитывалось, в то время, как текущая цена была в районе 19,5.
Данный bug вы также можете наблюдать на своём игровом сервере.
Надо делать так, как надо. А как не надо - делать не надо.
Помогите восстановить работоспособность скрипта LUA после перехода на quik 8.5 с lua 5.3
 
Самое простое в вашем случае привести шаг цены к точности инструмента:
Код
Security = getSecurityInfo(CLASS_CODE, SEC_CODE)
SEC_PRICE_STEP = tonumber(string.format("%." .. Security.scale .. "f", Security.min_price_step))
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Функция getParamEx2 не возвращает имеющийся параметр, напр TRADE_DATE_CODE или SECTYPESTATIC
 
Цитата
Sergey Gorokhov написал:
Цитата
Latrop написал:
Как получить эти значения в виде кодов (1,2,3...) в lua-скрипте?
К сожалению, такой возможности не предусмотрено. Можем предложить зарегистрировать пожелание на добавление функционала.
Регистрируйте
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Не рассчитывается максимальное возможное количество лотов в заявке
 
Для BRK0 на момент написания этого поста не рассчитывалось количество при цене ниже 23,01
Возможно это связано с расширением планок.
Надо делать так, как надо. А как не надо - делать не надо.
Помогите восстановить работоспособность скрипта LUA после перехода на quik 8.5 с lua 5.3
 
Цитата
Sergey Gorokhov написал:
в представленном коде SEC_PRICE_STEP используется в математических операциях, так что проблема точно не с ним, а с тем что в результате попадает в tostring
в tostring как раз попадает float из-за возвращаемого значения в getParamEx.

Цитата
Sergey Gorokhov написал:
Но стоит поменять инструмент на любой другой в котором дробный шаг цены и ошибка опять бы появилась.
Какая ошибка будет для инструмента с дробным шагом цены?

Цитата
Sergey Gorokhov написал:
По этому правильно форматировать то что попадает непосредственно в параметры транзакции, а не то что было до этого.

Правильно всё же работать с правильными значениями. Так, для целочисленных вычислений все входящие параметры необходимо привести к integer. Не после, а до вычислений!
Скрытый текст
В данном случае проблема именно в самом QUIK. Так, например, getParamEx(CLASS_CODE,SEC_CODE,"BID").param_value даст вам значение, которое вы не сможете подать в sendTransaction без лишних вычислений.
Надо делать так, как надо. А как не надо - делать не надо.
Помогите восстановить работоспособность скрипта LUA после перехода на quik 8.5 с lua 5.3
 
Sergey Gorokhov,
Так проблема в самом QUIK, который в getParamEx возвращает строку с дробной частью: "1.000000" вместо "1", а на входе в sendTransaction для того же инструмента требует строку без разделителя.
Надо делать так, как надо. А как не надо - делать не надо.
Как получить ГО по фьючерсу?
 
Anna Lozenko,
Надо делать так, как надо. А как не надо - делать не надо.
Как получить ГО по фьючерсу?
 
Цитата
Старатель написал:
Биржа транслирует параметр "ГО продавца" для опционов?
Биржевой шлюз транслирует. В QUIK нет этого параметра.
Надо делать так, как надо. А как не надо - делать не надо.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
 
Цитата
Старатель написал:
Под импортом я подразумеваю загрузку настроек из wnd-файла вручную.
Цитата
Старатель написал:
Списки сбрасываются при загрузке настроек из *.wnd при установленном соединении с сервером.
К сожалению, я не знаю, как ещё объяснить.
Надо делать так, как надо. А как не надо - делать не надо.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
 
Именно в процессе работы. Списки сбрасываются при загрузке настроек из *.wnd при установленном соединении с сервером.
При перезапуске Квика соединение ещё не установлено.
Надо делать так, как надо. А как не надо - делать не надо.
Как получить ГО по фьючерсу?
 
Биржа транслирует параметр "ГО продавца" для опционов?
Надо делать так, как надо. А как не надо - делать не надо.
Показывать коды классов в настройках списков заказа данных, Заказ данных -> Поток котировок, Поток обезличенных сделок
 
Отображать код класса в указанных окнах
Надо делать так, как надо. А как не надо - делать не надо.
Удаление элемента из массива, который прошёл проверку
 
Цитата
Николай Камынин написал:
примерно так:
Это из серии вредных советов. Так делать не следует.
Надо делать так, как надо. А как не надо - делать не надо.
Удаление элемента из массива, который прошёл проверку
 
Вариант 1:
Код
    for i, bumaga in pairs(sec_code) do
      LowDnya = getParamEx (class_code, bumaga, "LOW").param_value
      Last = getParamEx (class_code, bumaga, "LAST").param_value
      Raznica = math.abs(LowDnya - Last)
      if Raznica > 1 then
        message(tostring(bumaga .. " " .. Raznica ))
        sec_code[i] = nil
      end
    end

Вариант 2:
Код
    for i = #sec_code, 1, -1 do
      local bumaga = sec_code[i]
      LowDnya = getParamEx (class_code, bumaga, "LOW").param_value
      Last = getParamEx (class_code, bumaga, "LAST").param_value
      Raznica = math.abs(LowDnya - Last)
      if Raznica > 1 then
        message(tostring(bumaga .. " " .. Raznica ))
        table.remove(sec_code, i)
      end
    end
Надо делать так, как надо. А как не надо - делать не надо.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
 
Под импортом я подразумеваю загрузку настроек из wnd-файла вручную.
Надо делать так, как надо. А как не надо - делать не надо.
Обновление данных в таблице обезличенных сделок
 
Не обратил внимания, что у вас на скринах первыми идут индексы.
Видимо, сервер подключился к шлюзу в 9:17 и первым делом получил индексы.
Надо делать так, как надо. А как не надо - делать не надо.
Обновление данных в таблице обезличенных сделок
 
Цитата
Anton написал:
Не должно так быть в идеальном мире, а в реальном так есть
Если вы игрались со списками инструментов для заказа тиков, то да, такое может быть и в идеальном мире
Надо делать так, как надо. А как не надо - делать не надо.
Обновление данных в таблице обезличенных сделок
 
Цитата
Anton написал:
Цитата
Данил написал:
Странно сначала 1.04 а после появились 31.03 так должно быть?
Да.
Вообще-то, так не должно быть.
Надо делать так, как надо. А как не надо - делать не надо.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
 
Похоже, при импорте настроек из *.wnd сбрасываются настройки заказа обезличенных сделок.
Надо делать так, как надо. А как не надо - делать не надо.
*AllTrade*, новые функции для qlua
 
Цитата
Anton написал:
при переподписке квик будет получать тот же самый мэппинг без выгрузки/загрузки всего и вся, т.е. вхолостую, это уменьшит накладные расходы

Тест проводился на виртуальном диске в ОЗУ.
Т.ч., не могу подтвердить или опровергнуть ваше предположение.
Надо делать так, как надо. А как не надо - делать не надо.
*AllTrade*, новые функции для qlua
 
Цитата
Sergey Gorokhov написал:
описанного поведения НЕ должно быть вообще.
Вы описываете проблему с которой надо разобраться.
И только если вдруг  после разбора  окажется что так и должно быть тогда да, будет пожелание.
Сейчас это больше выглядит как баг, а не отсутствие функционала.
Что в итоге? Так и должно быть или баг?
Надо делать так, как надо. А как не надо - делать не надо.
*AllTrade*, новые функции для qlua
 
Появилось немного времени, решил потестить.
При при пустом alltrade.dat заказ обезличенных сделок по классу EQOB (1393 бумаги) занимает 5 сек, при заполненном alltrade.dat (в конце торгов) 30 мин! Это на быстром диске, на HDD такое делать в середине-конце торгов не рекомендуется ))
Посмотрел, что делает в это время QUIK: при подписке на каждый инструмент идёт множественное обращение к файлу alltrade.dat, и чем больше записей есть в таблице, тем больше будет обращений к файлу.
Если заказывать обезличенные сделки не скриптом, а через меню, то обращения к alltrade.dat минимальны или отсутствуют.
Надо делать так, как надо. А как не надо - делать не надо.
У активной заявки заполнен UID снявшего заявку
 
При снятии заявки приходит два колбека: в одном - UID снявшего, в другом актуальное состояние заявки.

Цитата
GoldRat написал:
Как в таблице заявок у заявки с состоянием "Активна" поле "UID снявшего заявку" может быть не пустым?
Такое возможно, если терминал получает второй колбек с задержкой. Техподдержке надо смотреть в эту сторону.
Надо делать так, как надо. А как не надо - делать не надо.
Изменение алгоритма подачи заявки., Прошу изменить окно подачи заявки.
 
Должно помочь:
Система / Настройки / Основные настройки… раздел «Торговля» / «Заявки»
Установка операции заявки - Не указывать операцию
Надо делать так, как надо. А как не надо - делать не надо.
Насколько уникален order_num?
 
Цитата
s_mike@rambler.ru написал:
Цитата
_sk_ написал:
Если торгуете на Московской бирже, то class_code + order_num уникальная комбинация.
в течение одного торгового дня
Откуда такая информация?
Надо делать так, как надо. А как не надо - делать не надо.
Ошибка при получении стакана с помощью getQuoteLevel2
 
Subscribe_Level_II_Quotes
Надо делать так, как надо. А как не надо - делать не надо.
ОШИБКИ формирования потока всех сделок
 
Дополню: не изменять список инструментов в сторону уменьшения, пока пользователь не укажет это явно в настройках заказа данных.
Надо делать так, как надо. А как не надо - делать не надо.
ОШИБКИ формирования потока всех сделок
 
Цитата
Latrop написал:
На чем основано данное несогласие?
Захват входящих пакетов на роутере с сервера QUIK. В случае заказа сделок по всем классам без фильтров трафик значительно больше.
Если ошибся, прошу сотрудников Арки прокомментировать.

Цитата
Latrop написал:
Что по доработкам потока обезличенных сделок (тиков) скажете?
Ломать, тем более автоматику не нужно.
Нужно лишь научиться не изменять список инструментов в сторону уменьшения, как указал в первом сообщении этой темы.
Надо делать так, как надо. А как не надо - делать не надо.
ОШИБКИ формирования потока всех сделок
 
Цитата
Latrop написал:
Как удалось разобраться, если заказано получение тиков хоть одного инструмента, то на клиент льется вообще весь поток всех(!) тиков.
Фильтр по отдельным инструментам никакой экономии трафика не дает
Не соглашусь, при использовании фильтров трафик уменьшается.
Надо делать так, как надо. А как не надо - делать не надо.
[BUG] Функция getParamEx2 не возвращает имеющийся параметр, напр TRADE_DATE_CODE или SECTYPESTATIC
 
Цитата
Latrop написал:
Если заказать
ParamRequest(class1, sec1, par1)
и
ParamRequest(class1, sec2, par2)
Т.е. для разных инструментов одного и того же класса будут заказаны разные параметры.То фактически терминал что сделает?
Цитата
Latrop написал:
Будет неявно заказывать оба параметра для обоих инструментов
Да.
Где-то была тема на форуме. QUIK не умеет фильтровать заказанные параметры внутри класса и будет слать все заказанные явно или неявно параметры для одного класса.
Надо делать так, как надо. А как не надо - делать не надо.
CalcBuySell, Долгая работа функции
 
Среднее время выполнения функции CalcBuySell 6-7 мс. Как-то долго.
Может, можно что-то подкрутить в настройках?
Надо делать так, как надо. А как не надо - делать не надо.
Контекстное меню в Lua-таблицах
 
Или ещё проще: сделать в настройках терминала чекбокс "Показывать/не показывать контекстное меню в пользовательских таблицах"
Надо делать так, как надо. А как не надо - делать не надо.
Мышь окочурилась :)
 
Против нередактируемого контекстного меню (как для ячеек так и для заголовков). Оно мешает работе событий QTABLE_RBUTTON...
https://forum.quik.ru/messages/forum10/message42277/topic4921/#message42277
Надо делать так, как надо. А как не надо - делать не надо.
Контекстное меню в Lua-таблицах
 
Sergey Gorokhov,
У вас есть событие QTABLE_CONTEXTMENU, вот и обыграйте его.
Вижу два варианта:

1) По умолчанию контекстное меню не показывается. Чтобы показать, надо вызвать функцию в коде:
Код
  SetTableNotificationCallback(id, function(id, msg, row, col)
    if msg == QTABLE_CONTEXTMENU then
      ShowContextMenu()
    end
  end)

2) Второй вариант прямо противоположный. По умолчанию, при срабатывании события, отображается контекстное меню. Чтобы не отображать меню, надо принудительно запретить его в коде:
Код
  SetTableNotificationCallback(id, function(id, msg, row, col)
    if msg == QTABLE_CONTEXTMENU then
      return
    end
  end)
Надо делать так, как надо. А как не надо - делать не надо.
Мышь окочурилась :)
 
Цитата
Kolossi написал:
оставить только вывод меню сортировки в заголовке столбца
Категорически против!
В версиях 8.1 и ниже сортировка нормально работает при клике на заголовок столбца с зажатой клавишей Ctrl или Shift
Надо делать так, как надо. А как не надо - делать не надо.
table.ssort, зависает терминал при выполнении table.ssort в main
 
Нужно сделать операцию обновления ячеек атомарной, чтобы быть уверенным, что другой поток не изменит номер обновляемой строки.
Это будет возможно после исправления ошибки?
Надо делать так, как надо. А как не надо - делать не надо.
Перестают работать события SetTableNotificationCallback
 
Создаём QLua-окно, назначаем ему колбек на события QTABLE_CHAR и/или QTABLE_VKEY.
Если переключиться на контрол "Edit" или "ComboBox" на панели инструментов ("Поиск инструмента", "Окно сообщений" и пр.), а затем активировать окно кликом на его заголовок, то события, назначенные раннее не работают. Чтобы заработали, нужно активировать кликом внутри окна.
Надо делать так, как надо. А как не надо - делать не надо.
недокументированные события QTABLE при нажатии мышки
 
Нужны события MOUSE_WHEELSCROLL UP / DOWN
Есть возможность добавить?
Надо делать так, как надо. А как не надо - делать не надо.
Замена заявки на ФР при помощи Order Cancel/Replace Request (G)
 
Для срочного рынка есть "MOVE_ORDERS"
Надо делать так, как надо. А как не надо - делать не надо.
Как создать пользовательскую таблицу?
 
Если знакомы с программированием, то вашу задачу можно решить на QLua
Надо делать так, как надо. А как не надо - делать не надо.
Страницы: Пред. 1 ... 13 14 15 16 17 18 19 20 21 22 23 ... 46 След.
Наверх