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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 38 След.
Получать объемы сделок
 
Цитата
Anton написал:
если этот кусок таки окажется атомарным, то от зависания мы не ушли, получается?
О каком "зависании" речь?
Функция Claster у меня получается атомарной, но это не точно.

Скрытый текст

Цитата
Anton написал:
получается, функцию Claster надо намеренно сделать неатомарной? Или я перемудрил уже?
Перемудрил. Зависнуть нам не даст getItem.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Получать объемы сделок
 
Тогда это тоже атомарная операция:
Код
Volume[alltrade.price] = (Volume[alltrade.price] or 0) + alltrade.qty

И можно не заморачиваться и остановиться варианте #21
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Получать объемы сделок
 
Цитата
Anton написал:
Вот так, ежли ничего не упустил опять
Код
if N >= 0 then N = N + 1
Это атомарная операция?
Не может получиться такой порядок?
Код
-- N = 0
[OnAllTrade] if N >= 0 then
[main] N = N - 1        --> N = -1
[main] while N >= 0 do  --> Выход из цикла
[OnAllTrade] N = N + 1  --> N = 0
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Получать объемы сделок
 
Цитата
Anton написал:
Цитата
Старатель написал:
считать объёмы внутри table.ssort
А оно ведь тоже подвесит на первом же колбеке?
Смотря что подразумевать под "подвесит". Сложить два числа и положить в табличку под локом - это одно. А посчитать все накопленные на текущий момент сделки в OnInit - это совсем другое.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Получать объемы сделок
 
Цитата
Anton написал:
мейн по событию просыпается и вытаскивает все, чего еще не видел.
Так это понятно, в одном потоке: OnInit + OnAllTrade или main only
А так, чтобы от OnAllTrade не отказываться и не подвешивать терминал, если скрипт запущен не в начале дня? В голову приходит только считать объёмы внутри table.ssort  :smile:
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Получать объемы сделок
 
Цитата
Старатель написал:
И первичный поиск можно и main делать, чтобы не подвешивать терминал.
Код
local run = true
function OnStop()
  run = nil
end

local Volume = {}
local function Claster(alltrade)
  if alltrade.sec_code == sec and alltrade.class_code == class then
    Volume[alltrade.price] = (Volume[alltrade.price] or 0) + alltrade.qty
  end
end

local N
function OnInit()
  N = getNumberOf("all_trades")
end

function OnAllTrade(alltrade)
  Claster(alltrade)
end

function main()
  for i = 0, N-1 do
    Claster(getItem("all_trades", i))
  end
  while run do sleep(500) end
end

Сразу возник вопрос. Существует ненулевая вероятность неверного расчёта объёмов, если в OnAllTrade и main одновременно будут рассчитываться объёмы по одной цене.
Сходу не придумал, как это исключить. Есть идеи?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Получать объемы сделок
 
И первичный поиск можно и main делать, чтобы не подвешивать терминал.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Получать объемы сделок
 
Цитата
s_mike@rambler.ru написал:
индикатор будет подвешивать терминал
Насколько я понял, ТС интересует простой скрипт, не индикатор.

Цитата
s_mike@rambler.ru написал:
в случае запуска на ликвидном инструменте
На скорость поиска влияет не ликвидность инструмента, а количество записей в таблице.

А про SearchItems я написал, как замену цикла
Код
for i = 0, getNumberOf("all_trades")-1 do
при первичном запуске.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Получать объемы сделок
 
Проще самому написать.

Цитата
Глебов Александр написал:
суммарные  обновляемые объемы сделок для каждого ценового уровня внутри дня
Как-то так:
Код
local Volume = {}
local function Claster(alltrade)
  if alltrade.sec_code == sec and alltrade.class_code == class then
    Volume[alltrade.price] = (Volume[alltrade.price] or 0) + alltrade.qty
  end
end

function OnInit()
  for i = 0, getNumberOf("all_trades")-1 do
    Claster(getItem("all_trades", i))
  end
end

function OnAllTrade(alltrade)
  Claster(alltrade)
end

Можно SearchItems задействовать для боле быстрого поиска.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Кривые шибки в QLua
 
QUIK v.8.13.0.106, Lua 5.4

Очередная ошибка
Цитата
attempt to call a nil value (method 'pop')
Скрипт:
Скрытый текст
Queue работает годами в разных скриптах. И (условно) раз в год (или реже) скрипты ругаются на nil. Было в 7-й или 6-й версии квика. Какое тогда было сообщение об ошибке не помню.

Скрытый текст
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Ноли в значении тренда в индикаторе
 
А мужики-то не знали:
https://forum.quik.ru/messages/forum13/message35242/topic4129/

Цитата
Евгений написал:
Возможно что ошибка только в этом индикаторе
Косяк на большинстве индикаторов. Просто на индикаторах, значения которых сопоставимы с ценой, этого не видно.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Вертикальное масштабирование графика
 
Цитата
Евгений написал:
Как его отключить это авто масштабирование?


Цитата
Евгений написал:
Если на графике есть индикаторы
Цитата
Евгений написал:
Сделайте возможность отключения автомасштабирования


Оно?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
[8.13] регрессия - CreateDataSource возвращает ошибку при запуске после подключения
 
Цитата
Старатель написал:
даже если CreateDataSource, вызванный в момент подключения до OnConnected(), не вернул ошибку, то Size так и останется нулевым.
Цитата
Старатель написал:
в предыдущих версиях, просто вместо ошибки возвращалась пустая DataSource.

Вместо тысячи слов:
Скрытый текст

Никто не говорит, что это нормально. Просто факт: отсутствие ошибки ещё не гарантирует удачный заказ графика.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 
Цитата
Roman Azarov написал:
Имелась в виду именно разница в показателях свечи.
Касательно свечи до начала торгов, проблема изучается.
Именно этот тик до начала торгов рисует Open дневной (и часовых) свечи и влияет на её вид.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
[8.13] регрессия - CreateDataSource возвращает ошибку при запуске после подключения
 
Цитата
Артем написал:
раньше работало.
Вы заблуждаетесь. У вас стоит 10-секундное ожидание после подключения, поэтому часть DataSource может быть запрошена уже после OnConnected.
Ещё если графики были открыты до запуска скрипта, то DataSource по ним сразу будут иметь ненулевой размер (при наличии свечей, естественно).
Вот специально написал демонстрационный скрипт:
Скрытый текст

Запускаем при установленном соединении - работает нормально.

Если запустить при неустановленном соединении а затем подключиться, то скрипт так и будет висеть в ожидании.
Кроме того, если после этого открыть диаграмму с графиком из списка list (если не был открыт до запуска скрипта), то график будет пустой. Свечи появятся только после разрыва соединения.

Проверялось в 8.13 и 8.1
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
[8.13] регрессия - CreateDataSource возвращает ошибку при запуске после подключения
 
Просто наблюдение: сначала isConnected() меняется на 1, затем через некоторое время вызывается OnConnected.
Если в это время вызвать CreateDataSource, то он завершится неудачей.
Есть подозрение, что так было и в предыдущих версиях, просто вместо ошибки возвращалась пустая DataSource. Можете проверить их Size().

Кстати, обнаружилась ещё одна неприятность:
В 8.13 даже если CreateDataSource, вызванный в момент подключения до OnConnected(), не вернул ошибку, то Size так и останется нулевым.
Suport, обратите внимание.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Использование данных по фьючерсам, вышедшим из обращения
 
Цитата
Andrey Bezrukov написал:
Данное пожелание было реализовано как функционал склейки графиков
Это совсем не то. Это какое-то другое пожелание.

Долго пытался разобраться, как склейку реализовали.
В итоге оказалось, что склеить можно только те инструменты, которые остались в открытой ТТТ или других окнах.
Если инструмент из таблиц был удалён, то даже при наличии сохранённой истории в dat-архиве склеить невозможно.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Использование данных по фьючерсам, вышедшим из обращения
 
Цитата
Andrei2016 написал:
Станислав, зарегистрируйте.

Если я правильно понимаю, как работает терминал, то главная проблема именно в исключении необращающихся фьючерсов из списка доступных инструментов. Технически данные графика содержатся в папке архива. Но даже при их нахождении там, в файле, содержащем перечень доступных инструментов после подключении к актуальной сессии идентификаторы и внутренние ссылки исчезают.
Было бы очень хорошо, если бы появился такой функционал:
в панель выбора инструмента добавить еще один раздел "Архив", в котором и появлялись бы те инструменты, срок обращения которых истек, но данные по которым для терминала доступны.

Цитата
Zoya Skvorcova написал:
Ваше пожелание было реализовано в версии 7.18.1 терминала QUIK.

Где же это всё?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 
Цитата
Roman Azarov написал:
Выполните, пожалуйста, перезаказ архива данных для построения графиков.
Результат тот же: на графиках индексов присутствует левый тик в 5ч, значение которого равно закрытию предыдущего дня.

Цитата
Roman Azarov написал:
У себя дневную свечку по IMOEX за 15.03.21 видим вот так:
А на М4?
Это где у себя? Я не вижу индексов на вашем Junior
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Неверная дата и время, Стандартные функции Lua возвращают неверное время сервера
 
Цитата
sysdate

Функция возвращает системные дату и время с точностью до микросекунд.


Цитата
Roman Azarov написал:
Данное поведение обусловлено, дополнительным вызовом функции конвертации, в которой происходит округление миллисекунд, в os.sysdate().
Это как? Что во что конвертируется и по каким правилам округляется?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
[BUG] Пропадает текст в таблицах
 
Цитата
Владимир написал:
близок к идеальному
Если не считать злоупотребление метками вкупе с пробелами по темам типов и области видимости переменных.
Но дискутировать на эту тему у меня нет ни малейшего желания. Мне по барабану будете ли вы искать ошибку.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
[BUG] Пропадает текст в таблицах
 
Владимир, учитывая ваш стиль программирования, это наиболее вероятная причина.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
[BUG] Пропадает текст в таблицах
 
Или так, чтобы не пропустить ошибку:
Код
local SetColor_ = SetColor
function SetColor(t_id, row, col, b_color, f_color, sel_b_color, sel_f_color)
  if row == -1 and col == -1 and (b_color == -1 or f_color == -1 or sel_b_color == -1 or sel_f_color == -1) then
    message(debug.traceback(), 3)
  end
  return SetColor_(t_id, row, col, b_color, f_color, sel_b_color, sel_f_color)
end
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
[BUG] Пропадает текст в таблицах
 
Владимир, возможно вы где-то вызываете
Код
SetColor(id, -1, -1, b_color, f_color, -1, -1)
При этом b_color и f_color могут быть любыми.

Можете сделать проверку передаваемых параметров в SetColor, например, так:
Код
local SetColor_ = SetColor
function SetColor(t_id, row, col, b_color, f_color, sel_b_color, sel_f_color)
  if row == -1 and col == -1 and (b_color == -1 or f_color == -1 or sel_b_color == -1 or sel_f_color == -1) then
    message(debug.traceback(), 3)
    return nil
  else
    return SetColor_(t_id, row, col, b_color, f_color, sel_b_color, sel_f_color)
  end
end
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Несчастное окно
 
Цитата
Roman Azarov написал:
Правильно понимаем, что под пустым полем Вы имеете в виду самую правую колонку таблички "Загруженные скрипты"?
Правильно.

Цитата
Roman Azarov написал:
при каких условиях (в какой версии терминала) окно открывается с пустым полем?
8.13. При открытии окна или запуске QUIK, если оно было открыто раннее.
Скрытый текст
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 
Для сравнения как выглядит дневной график в QUIK

и на официальном сайте биржи:


Многие другие индексы также кривые в квике.
Скрытый текст

Это не считая объёмов, которые в QUIK показывают не пойми что.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Не работают горячие клавиши
 
Anna Lozenko, в 8.13.0 по-прежнему
Цитата
Старатель написал:
При активном окне "Доступные скрипты" не работают никакие горячие клавиши.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Несчастное окно
 
Цитата
Старатель написал:
сделать, чтобы окно сохраняло  ширину колонок в списке скриптов
Или хотя бы убрать это пустое поле при открытии окна. Уже будет "прогресс"
Как на скрине в руководстве QLua:
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Несчастное окно
 
Такое ощущение, что дизайн этого окна отдали на аутсорс школьникам.

Что надо сделать, чтобы окно сохраняло свои координаты (при закрытии и повторном открытии) и ширину колонок в списке скриптов?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 
Любой брокер. Любая версия до текущей (8.13)
Только время первой свечи будет отличаться у разных брокеров. Походу, это время запуска шлюзов.
Теперь понятно, почему на дневках Open всегда равен Close предыдущего дня.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 

Откуда на графике индекса свеча в пять утра?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Таблица состояние счета, закрытие позиции., Ошибка 167.
 
swerg,

Цитата
Изменения в Рабочем месте QUIK 8.13.0

16. При закрытии позиции из таблицы «Состояние счета» цена заявки не округлялась в соответствии с шагом цены инструмента.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Какой формат записи ячеек с типом QTABLE_DATETIME_TYPE, чтобы работали сортировка и фильтры?
 
Цитата
Артем написал:
14-значные целые числа вписываются в double float так что и в 5.1 можно было это реализовывать.
Ну да, до 2^53 можно было без проблем вписать. Но что-то не срослось...


Цитата
Владимир написал:
Меня дата-время вообще не интересует
Так я вам и не предлагал.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Какой формат записи ячеек с типом QTABLE_DATETIME_TYPE, чтобы работали сортировка и фильтры?
 
В Lua 5.4 уже возможно реализовать поддержку формата YYYYmmddHHMMSS
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Цитата
Артем написал:
те или иные фичи НИНУЖНЫ
Даже наоборот, считаю, что сабж был бы полезным.
Просто мало иметь инструмент, нужно уметь правильно его применить.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Цитата
Артем написал:
те или иные фичи НИНУЖНЫ
Кто сказал? Возможно, и пригодилось бы для какой-то задачи...
Просто показал вам, что "актуальность значения параметра" понятие относительное, особенно на неликвиде.
И хотел уточнить, каким образом
Цитата
Артем написал:
Наличие такого поля позволит оценить актуальность значения параметра
?

Цитата
Артем написал:
Я ничего не собираюсь - обдумывать
Ну нет, так нет...
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Артем, ещё есть мнение, что вы также не понимаете, как будете использовать параметр время, о котором просите.
Допустим, GetParamEx() для параметра P у бумаги ABC вернет "время последнего обновления" 14:50, а у бумаги XYZ для того же параметра - 12:34.
Как вы собираетесь применять эту информацию?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
QUIK не отправляет заявку, в которой цена представлена переменной
 
Цитата
Старатель написал:
1) Если работаем только с целыми, перед арифметикой преобразуем все операнды в int
Забыл добавить: это относится именно к целочисленным операциям, таким как сложение, вычитание, умножение. И после вычислений - просто tostring.

Цитата
Артем написал:
tostring ( ) это стандартная функция Lua
tostring как раз лишних нулей не дописывает, можете смело пользоваться. Если у вас int, то и tostring вернёт строку без точки.

Цитата
Артем написал:
Цитата
Старатель написал:
Тут не надо ничё предполагать. Операции сложении и умножения над целыми числами, как в данном конкретном примере, не влекут потерю точности.
Шаг цены бывает например 0.1 и тут будут проблемы.
Речь про целые числа.
Для дробных шагов - округление с точностью шага цены и
Цитата
Старатель написал:
2) На вход в sendTransaction подаём отформатированную строку, с учётом количества знаков.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
QUIK не отправляет заявку, в которой цена представлена переменной
 
Цитата
swerg написал:
неужели до сих пор нельзя сделать так, чтобы параметр Transaction["PRICE"] можно было задавать числом, а не строкой?
Давно можно было, если кто не знал. Но QUIK всё одно преобразует аргумент в строку по своему усмотрению. А считает он, что надо 6 знаков после запятой, не меньше. И плевать он хотел на точность шага.

Цитата
Артем написал:
Смею предположить
Тут не надо ничё предполагать. Операции сложении и умножения над целыми числами, как в данном конкретном примере, не влекут потерю точности.
А поскольку getParamEx отдаёт всегда сырые данные во float, а sendTransaction принимает строго с точность шага цены, то варианта тут два:
1) Если работаем только с целыми, перед арифметикой преобразуем все операнды в int
либо
2) На вход в sendTransaction подаём отформатированную строку, с учётом количества знаков.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Какой формат записи ячеек с типом QTABLE_DATETIME_TYPE, чтобы работали сортировка и фильтры?
 
Сабж
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
[BUG] Пропадает текст в таблицах
 
При задании цвета для всей таблицы, если один из цветов указан QTABLE_DEFAULT_COLOR, текст во всех ячейках пропадает.
Примеры:
Код
SetColor(id, QTABLE_NO_INDEX, QTABLE_NO_INDEX, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
SetColor(id, QTABLE_NO_INDEX, QTABLE_NO_INDEX, QTABLE_DEFAULT_COLOR, 0, 0, 0)
SetColor(id, QTABLE_NO_INDEX, QTABLE_NO_INDEX, 0xFFFFFF, 0, 0xFFFFFF, QTABLE_DEFAULT_COLOR)
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Как бороться с nil?
 
Цитата
Сергей написал:
Возможно такое сравнение и допустимо
В оригинальном Lua да.

Цитата
Сергей написал:
Луа машина в Квике выдает ошибку при сравнении переменных, если одна из них nil...
Хотел было написать, что вы заблуждаетесь, но вспомнил про странные ошибки, с которыми сам сталкивался в QUIK. Поэтому настаивать не буду.

Передаю эстафету техподдержке.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Как бороться с nil?
 
Код
if CheckPos ~= nil and POS ~= CheckPos.totalnet then

Такое сравнение вполне допустимо, даже если POS или totalnet есть nil
Ошибка в другом месте, смотрите номер строки с ошибкой.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
недокументированные события QTABLE при нажатии мышки
 
Какой формат записи ячеек с типом QTABLE_DATETIME_TYPE, чтобы работали сортировка и фильтры?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Цитата
Артем написал:
вы предлагаете поллить "новой" функцией внутри "старого" колбека
Вы сами-то поняли, что написали? Цитату со ссылкой приведите.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Артем, я не предлагал ничего "поллить".
Либо вы неверно поняли статью из вики, либо неважно читаете код.
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Артем, я спросил не где вы в интернете прочитали про поллинг, а где вы увидели
Цитата
Артем написал:
поллинг в контексте колбеков
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Артем, где вы "поллинг" увидели? Или что в вашем понимании "поллинг"?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 
Anna Lozenko,
https://forum.quik.ru/messages/forum13/message4387/topic503/#message4387
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Цитата
Артем написал:
Параметры работающие в реальном времени (такие как статус торговли) стали бы "обновляться" в момент вызова функции а не в момент фактического изменения.
Что бы это могло значить?

Артем, чем не устраивает предложенный мной вариант?
Я не могу быть заинтересован в устранении ошибок в чужом ПО больше, чем его разработчик.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 38 След.
Наверх