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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 30 След.
Если терминал в течение дня получает новый класс, то вызывается функция OnConnected со значением flag=false
 
Предлагаю вместо неинформативного false в OnConnected передавать имя нового класса.
os.time Lua 5.3
 
Я так понимаю, вопрос возник, когда в os.time() был передан какой-нибудь квиковский datetime = {year=1601, month=1, day=1, hour=0}
Если в 5.1 тут возвращался nil, и с ним можно было работать, то теперь перед вызовом os.time надо проверить, как минимум год, чтобы не получить исключение
os.time Lua 5.3
 
Цитата
Anton написал:
зона имеет значение
Имелось ввиду результат в 5.1 и 5.3 одинаковый, на зависимо от таймзоны, за исключением случаев с отрицательным временем.
os.time Lua 5.3
 
Часовой пояс, как бы, ни при чём.
В 5.1 если дата была меньше 0, os.time возвращал nil, с которым в общем-то можно было работать.
В 5.3 в этом случае вы увидите "time result cannot be represented in this installation".
Проблема с выводом в пользовательскую таблицу
 
Тов. из QUIK software testing обещал разобраться с этим. И пропал. Видимо, разбирается.
Цитата
e2e4 написал:
сделал проверку, что если скрипт останавливается вручную, то вывода из main в таблицу не будет, а будет из OnStop и наоборот
Но, если есть обращения к таблице в main внутри цикла while isRun do, тут уже сложнее.
Чтобы QUIK не подвисал при остановке, и скрипт корректно завершался, первым делом в OnStop удаляю идентификатор таблицы.
Заявка на покупку акции после определённого отката вниз от определённой цены., Заявка на покупку акции после определённого отката вниз от определённой цены.
 
Цитата
Axer123 написал:
В заявке Тейк-профит есть "Отступ от мин" при котором происходит продажа таким образом "на размер отступа"
"Отступ от мин" есть в заявке на покупку. Это то, что вам нужно.
Почему Quik 8.5.2.11 Открытия Брокер не работает под пользователем при установке в Program Files
 
Цитата
Anton написал:
Цитата
Старатель написал:
ставьте квик в Users\%USERNAME%
И любой скрипт от этого юзернейма (даже не бинарник) может заменить info.exe на что угодно, делающее что угодно.
Тогда вот:
Цитата
swerg написал:
QUIK вполне себе работает на несколько пользователей на машине за счет того, что все настроечные файлы читает из "рабочего каталога", а не оттуда, где лежит info.exe И туда же и пишет

Сделать ярлык LNK с указанием Рабочей папки и работай хоть от сотни юзеров.
Только не забывайте, что если вы хотите, чтобы
Цитата
Anton написал:
в домене юзер сможет запускаться с любого компа организации и получать свой личный профиль
то на всех компах должна быть одинаковая версия QUIK.
Почему Quik 8.5.2.11 Открытия Брокер не работает под пользователем при установке в Program Files
 
Цитата
Anton написал:
Тогда можно запустить один квик от двух пользователей, у каждого будет своя копия данных и все будет работать независимо друг от друга.
От двух пользователей, на одном компе, одновременно. Интересно, зачем это может понадобиться?
Да пожалуйста, ставьте квик в Users\%USERNAME%
Цитата
Anton написал:
roaming это место для перемещаемых профилей, в домене юзер сможет запускаться с любого компа организации и получать свой личный профиль.
Ответ тот же.

Скрытый текст
Доступные скрипты, Значки для скриптов с ошибками
 
Сделать другие значки для скриптов:
1) остановившихся в результате ошибки;
2) в которых возникла ошибка, но скрипт продолжил работу (ошибка в колбеке)
OnTrade и стоп-заявка
 
Ну, например, если бумага не маржинальная или не шортовая. Вы купили несколько лотов и тут же выставляете их на продажу, а баланс ещё не успел измениться, вот и отклоняет сервер вашу заявку.
А вообще в ответе на транзакцию обычно указывается причина.
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Egor Zaytsev, я знаю, как работало и как стало работать в 8.5. А вы, похоже, не знаете.
Цитата
создайте две таблицы с  разными  инструментами. После чего откройте и покажите фильтры  каждой  из них.
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Egor Zaytsev, создайте две таблицы с разными инструментами. После чего откройте и покажите фильтры каждой из них.
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
 
Было бы неплохо, если бы наконец устранили древнюю проблему, когда цвета таблицы, установленные из скрипта в SetColor, сбрасываются при применении фильтра.
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Как в 8.5.2 увидеть фильтр для открытой таблицы обезличенных сделок (не общий фильтр, а именно для конкретной ТОС)?
Lua: изменить название колонки
 
Сделать функцию для изменения названий колонок в QLua-таблицах.
Как отключить выпадающее меню сортировки при правом клике мышкой на ячейку таблицы в новой версии LUA?
 
Цитата
Sergey Denegin написал:
раньше такое было только при клике на заголовке таблицы.
Не правда, не было.
Tradedate
 
Ответ в категориях "наверное", "по идее" и т.п. не устраивает. Мы с вами не баллистические ракеты проектируем  :smile:
Можете пригласить тов. Nikolay Pavlov, надеюсь он сможет что-то конкретное сказать.
Tradedate
 
getTradeDate() в OnCleanUp всегда даёт актуальную дату торговой сессии или это у меня так совпало?

Скрытый текст
Tradedate
 
getTradeDate() в OnCleanUp всегда даёт актуальную дату торгов или это у меня так совпало?
Появляется лишняя строка в таблице
 
Цитата
Evgeniy Karnaukhov написал:
Если SetCell сработает между этими вызовами, то, так как строка уже удалена и не найдена, она будет добавлена вновь.
Зачем?

Цитата
Evgeniy Karnaukhov написал:
возможна ситуация, при которой строка уже удалена, но новая не вставлена.
Пример без InsertRow:
Код
rows = 20
function OnParam()
  if not run then return end
  rows = rows - 1
  DeleteRow(id, 1)
  if rows == 10 then run = nil end
end

function main()
  id = AllocTable()
  AddColumn(id, 1, 'row', true, QTABLE_INT_TYPE, 15)
  CreateWindow(id)
  SetWindowPos(id, 0, 0, 110, 350)
  for i = 1, rows do InsertRow(id, -1) end

  run = true
  while run do
      SetCell(id, 5, 1, tostring(rows))
      sleep(1)
  end
  for row = 0, GetTableSize(id) do
    SetCell(id, row, 1, tostring(row))
  end
end

Результат:


Обсуждаемая проблема может возникнуть в любом скрипте, в котором в одном потоке пишутся данные в таблицу, а в другом удаляется строка из начала/середины таблицы.
Предложение Антона создать пользовательский колбек выглядит разумным. Да и в других ситуациях такой колбек не помешал бы.
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 написал:
при переподписке квик будет получать тот же самый мэппинг без выгрузки/загрузки всего и вся, т.е. вхолостую, это уменьшит накладные расходы

Тест проводился на виртуальном диске в ОЗУ.
Т.ч., не могу подтвердить или опровергнуть ваше предположение.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 30 След.
Наверх