Порядок полей таблицы Даты-Времени у обезличенной сделки. Квик 8.5 Луа53.
Пользователь
Сообщений: Регистрация: 21.08.2015
22.04.2020 18:06:22
Цитата
Latrop написал: никакого сравнения строк (парсинга, вычисления хэшей и т.п.) по содержимому строки в lua тут не происходит.
Справедливости ради, вычисление хэша и поиск строки происходит, если речь о длл и сначала на стек пихается строка с ключом, а потом по ней индексируется таблица. Но это не проблема луа, а проблема дллписателя скорее, строк можно и заранее напихать. А вообще господин Иерусалимский говорит следующее
Порядок полей таблицы Даты-Времени у обезличенной сделки. Квик 8.5 Луа53.
Пользователь
Сообщений: Регистрация: 21.08.2015
22.04.2020 17:02:44
Цитата
Aleks написал: обращаться по индексу - самый эффективный способ
Точно ли есть разница, заметная невооруженным глазом, вот в чем вопрос. Я б в сторону for k,v in pairs(t) посмотрел. Раз дело в длл, завсегда можно напихать в локальную сишную структурку сначала, а потом одним разом ее в файл записать, на этом сэкономите времени на пару порядков больше.
Порядок полей таблицы Даты-Времени у обезличенной сделки. Квик 8.5 Луа53.
Пользователь
Сообщений: Регистрация: 21.08.2015
22.04.2020 16:29:50
Это же нормальное явление для луа, полагаться на какой-то порядок полей было изначально ошибкой.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
21.04.2020 16:06:19
Добавлю еще один пунктик в пользу эксепшенов. Они - zero-cost, в отличие от лонгджампов. На первый взгляд, много ли их там... но вспоминаем lua_pcall и как часто ее используют.
Сомневаюсь. Тогда бы из QLuaCheckVersion сделали лонгджамп, а не throw ) Думаю, упустили из виду впопыхах. Старый-то собирали плюсами и не думали о таких высоких материях. Тем более сям по барабану на эксепшены, а вот плюсам на лонгджампы нет, очевидно же, какой вариант стоит выбрать.
Не совсем так, ждет сколько скажут в OnStop. А в целом такой подход "сгорел сарай гори и хата" неправильный, тогда можно вообще не морочиться, натыкать абортов повсюду и все. Все ж я исхожу из того, что хотели как лучше, назвался хостом - давай уже обеспечь, что хост не крэшится и не течет из-за косяков в загружаемом коде.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
21.04.2020 13:15:11
Цитата
rst9 написал: это, само по себе, не является проблемой.
Увы и ах, является. Функция вызывается из других функций луа (которые собраны как сишные) и кидает исключение, кроме того, какие-то функции квика по-любому должны вызываться внутри qlua, а они внезапно плюсовые и тоже могут кидать исключения. Луа ждет лонгджампа, исключение пролетит мимо него и будет поймано уже квиком над луа, то есть вся обработка ошибок луа тупо отключается. Не думаю, что так хотели, просто просмотрели. Старый-то луа с эксепшенами был собран и все было хорошо. Вот прям сейчас добавить /TP всем луа-файлам и все соберется без проблем, дело буквально на десять минут, и тогда уже можно дальше смотреть, что еще не так, потому что сейчас дальше смотреть незачем, сейчас любая ошибка повышается до полного краха луа-машины.
Назвал этого франкенштейна QLuaCheckVersion. Вызовы его натыканы в самых неожиданных местах, в luaL_newmetatable например. И в том числе во всех luaopen_*. Видимо, как-то связано с присутствием lua5.1.dll и попыткой обеспечить совместимость. Но самое смешное вот в чем: весь луа таки собран с лонгджампами, теперь это стопроцентно известно, но вот этот довесок кидает исключение, единственное во всей длл.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
20.04.2020 23:07:16
Цитата
quio написал: Раньше свою длл нужно было с qlua.dll линковать
Вообще-то с lua5.1.dll от квика, насчет qlua.dll кто-то дезу пустил и так и пошло. Впрочем, работало тоже.
Цитата
quio написал: Создаю новое состояние через lua_newthread(L), передаю его с свой поток, созданный через _beginthreadex, из этого потока вызываю функцию через lua_call. И ничего не проиходит
Проверил - аналогично.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
20.04.2020 18:47:15
Цитата
Latrop написал: Critical error ACCESS_VIOLATION in script
Это теперь так ошибки обрабатываются ) Надеюсь, поправят скоро.
А по существу - должна по идее какая-то ошибка случаться, но воспроизвести не удалось, перезаказал твс, догрузилась до текущего момента и ничего не упало. Вот таким вот образом пробовал
В общем, luaL_openlibs со стейтом из мейна работает, с новым стейтом выбрасывает исключение, через SEH оно отлавливается, там код какой-то длинный (плюсовое?). Если дать ему улететь, квиком вылавливается уже не оно, а 0x05 (ACCESS VIOLATION). Я продолжаю считать, что по крайней мере внешние проявления вызваны смешиванием лонгджампов с эксепшенами, а уж что там изначально за ошибка, надо рыть. Без символов голый асм ковырять как-то тоскливо очень, оставим арке арково.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
20.04.2020 12:08:01
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
20.04.2020 11:57:32
Цитата
rst9 написал: в mylib в функции luaopen_mylib() вызываем lua_version(L), с переданным в luaopen_mylib L, из lua53.dll. ее результат равен 0.0. не 5.3 и не 5.1.
Упорный вы какой. Это УКАЗАТЕЛЬ. Функция lua_version() ВОЗВРАЩАЕТ УКАЗАТЕЛЬ. Не 5.3, не 5.1, а УКАЗАТЕЛЬ.
Но можем предполагать, что половина сорцев собрана как си, а половина как плюсы, поэтому где-то вылетают лонгджампы, а где-то ожидаются эксепшены. Конкретно в lua53.dll я увидел одни джампы. В то же время в qlua.dll код явно плюсовый. Очевидно, поскольку это плюсы, LUAI_THROW и LUAI_TRY определены как плюсовые, через эксепшены. А lua53.dll делает джампы. Вот ничего и не ловится. Арке стоит убедиться, что все сорцы луа компилируются как плюсы, а не как си (/TP для компилятора).
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
20.04.2020 11:21:38
Цитата
rst9 написал: Все это говорит о том, что ваша теория про "разные модули" не совсем верна.
Я уже выше написал, что она неверна в данном случае. Если все работает как надо, она - единственный вариант, но в данном случае стейт не инициализирован, в version NULL, и если не хачили lua_newstate, то это может быть только путем игнора ошибки при инициализации.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
20.04.2020 11:17:45
Цитата
rst9 написал: 2. в luaL_checkversion_() видите там такие звездочки в операции сравнения?
Не вижу
Код
if (v != lua_version(NULL))
luaL_error(L, "multiple Lua VMs detected");
Цитата
rst9 написал: /* set global _VERSION */ lua_pushliteral(L, LUA_VERSION); lua_setfield(L, -2, "_VERSION");
А LUA_VERSION это что?
Цитата
rst9 написал: Так каким образом lua_version() вернет нам 0.0?
Таким, что она возвращает УКАЗАТЕЛЬ. Видите там такую звездочку?
Впрочем, есть еще один вариант - это когда один из указателей равен NULL. Статический не может быть NULL, значит, NULL в стейте. Смотрим внутрь , она сразу же ставит version в NULL и устанавливает ее только после того, как вся инициализация стейта прошла без ошибок. Это происходит в функции и там тупо нет варианта не установить версию, либо одна из вызванных функций выкинула ошибку, lua_nestate ее поймала и тут же прибила стейт и вернула NULL, либо все прошло хорошо и версия установлена перед выходом из f_luaopen. Отсюда вывод - одна из функций инициализации ошибку таки выкинула, но lua_newstate ее не поймала. Упс, это ровно то, о чем я писал . То есть природа косяка та же самая, видимо.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
20.04.2020 00:19:50
_VERSION это как раз глобальная константа, она зашита в длл намертво и всегда такая, какой была при компиляции, чего на нее смотреть. Вот lua_version куда интереснее.
Конкретно ошибка "multiple Lua VMs detected" вылезает в результате того, что УКАЗАТЕЛЬ на версию в стейте не равен УКАЗАТЕЛЮ на глобальную версию. На самом деле она не такая и глобальная, статическая переменная внутри самой lua_version(). В каком случае указатель на статическую переменную внутри функции может быть не равен указателю на ту же статическую переменную внутри той же функции? Когда это ДВЕ РАЗНЫХ ФУНКЦИИ. Из разных модулей, например. См. сорцы и .
В то же время все не так просто, как я выше написал, то есть от самой идеи я не отказываюсь, но обойти косяк, не линкуя lua5.3.dll, а подгрузив ее динамически, я не смог, результат тот же. Откуда следует, что в квике и без нас УЖЕ два экземпляра каким-то образом.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
19.04.2020 22:58:44
Цитата
rst9 написал: проблемы будут, если вы создадите стейт при помощи одних функций (скажем, из lua5.1.dll), а будете пытаться манипулировать им при помощи других (например, из lua53.dll).
Об этом и речь, только еще шире, одни функции из 53 и другие функции из 53, одинаковые до байта, но в разных модулях.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
19.04.2020 22:43:25
Цитата
rst9 написал: если даже ничего в luaopen_ не делать, а вызвать lua_version() из подгруженной lua53.dll, то все равно, результат ее работы никак не должен быть 0.0.
Дык, насколько понимаю, дело в том, что вы вызываете lua_version() из прилинкованной к вашей длл lua53.dll. Квик до запуска скрипта уже загрузил qlua.dll и запустил машину оттуда, и весь стейт там, а функции из lua53.dll будут работать постольку, поскольку не трогают глобальных переменных луа. Как раз lua_newstate() их трогает, и трогает не те.
quik 8.5 ошибка
Пользователь
Сообщений: Регистрация: 21.08.2015
19.04.2020 22:24:24
Хехе, чудеса. Ошибочка происходит, когда в программе оказываются два луа из разных длл или из экзешника и длл. Сравниваем, как было в 8.3. Весь луа экспортировала qlua.dll, а lua5.1.dll была просто проксей (28 кб размер, кода там нет очевидно). В 8.5 qlua.dll ничего не экспортирует, кроме двух функций плагина, а экспортирует все как раз lua53.dll и, судя по размеру, весь код в ней тоже сидит. Вот так мы и получаем два экземпляра луа в одном процессе.
Неторговые поручения
Пользователь
Сообщений: Регистрация: 21.08.2015
19.04.2020 09:33:25
Это дополнительный модуль за отдельную плату, сбер купил, а втб не купил, вот и вся разница.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
Пользователь
Сообщений: Регистрация: 21.08.2015
19.04.2020 09:14:03
Цитата
Latrop написал: Что касается совместимости с 5.1 (видимо для этого там lua5.1.dll), то она несовместимая пока получается.
Подтверждаю, вышеописанная длл из одной функции тоже падает, если собрать под 5.1 и запустить в 8.5. Причем если ошибка не генерируется, падает только скрипт и квик пишет access violation, если генерируется - падает весь квик без дампа. Если убрать lua5.1.dll, разрушения меньше, скрипт просто не может загрузить длл. Так что присутствие ее остается загадкой.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
Собираем с 5.1, запускаем в 8.3, получаем три сообщения: ctor, dtor, Exception caught. Все правильно, lua_error генерирует эксепшены и это прекрасно. Теперь собираем с 5.3, запускаем в 8.5, получаем ДВА сообщения: ctor, dtor. Эксепшен не пойман. Допустив, что мой рантайм не обязательно совпадает с арковским, повторил упражнение на чистом SEH. То же самое, нет там эксепшена. Вариант "собирали gcc + dwarf" отметаю как малореальный. Остается вариант...
...луа с лонгджампами собрали? Это же жесть. Может, пока (почти) никто не видел, пересобрать по-тихому? )
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
Пользователь
Сообщений: Регистрация: 21.08.2015
18.04.2020 16:11:15
Цитата
Александр М написал: В Документации тоже ни слова, что кстати странно, как минимум должны были именно в Документации озвучить, что версия lua меняется и ссылку дать на различия в версиях.
Справедливости ради, при первом запуске 8.5 выкинул диалог с как раз этим предупреждением о смене версии и ссылкой куда-то, как бы не сюда.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
Пользователь
Сообщений: Регистрация: 21.08.2015
18.04.2020 14:00:23
Цитата
Александр М написал: увидел, что там 2 dll и версии lua 5.1 и версии 5.3 Какая основная
Можно предположить, что 5.1 оставили для какой-то там совместимости, 5.3 экспортирует все то же самое (с поправкой на версию луа). Пока не обнаружил, чтобы что-нибудь крэшнулось без 5.1 (просто убрал ее).
А она как-то во всей виндовой экосистеме непонятна. Приплыли тксть.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
Пользователь
Сообщений: Регистрация: 21.08.2015
18.04.2020 13:09:36
А нет, из квика-то первый скрин, там как раз так и есть. В общем, мы видим, что в квике свеча считается от вчерашнего закрытия, а почему? Локальное время стоит в квике? Влияет ли оно на графики - не знаю.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
Пользователь
Сообщений: Регистрация: 21.08.2015
18.04.2020 12:55:46
На скрине опен никак не может быть 2515.05, свеча красная и тень вниз, а с таким открытием она была бы зеленой без нижней тени. Чет где-то нестыковки какие-то.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
Пользователь
Сообщений: Регистрация: 21.08.2015
18.04.2020 12:52:14
2515.05 это закрытие 16-го. Может график перезаказать просто?
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
Пользователь
Сообщений: Регистрация: 21.08.2015
18.04.2020 12:06:07
Вот официальные данные с биржи, сравнивайте, кто врет. На глаз по скринам врет сайт.
Уведомление о необходимости обновления торговых терминалов в связи с изменениями на срочном рынке Московской биржи, Список проблем при работе устаревших версий QUIK после обновления торговой системы срочного рынка МБ
Не то слово ) Даже ярлычки создать может быть делом занятным. если мы хотим на всех версиях работать. Потом, если хотим анинсталл зарегистрировать, таки придется в реестр лезть, ну и далее везде. Так-то, если только распаковать, sfx вполне себе справится, но в этом случае лично я бы предпочел зип простой, что сейчас есть и слава богу.
Я б у мозиллы тоже спросил. Думается, если не учитывать msi, ни один движок в x64 не умеет паковать. А msi - последнее, что хотелось бы видеть, этот по-простому распаковать и настроить не умеет, пол-винды перероет.
Проблемы с QUIK под эмулятором на Mac
Пользователь
Сообщений: Регистрация: 21.08.2015
16.04.2020 09:14:36
Цитата
новичок написал: мало на что сами способны без готовых костылей
Вот-вот, я и удивился, видел sfx всякие и подобное, а прям вот официально с логотипом и подписЯми чет не встречалось.
Прочитал "при установлении соединения", теперь понятно, извиняюсь за невнимательность.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
Пользователь
Сообщений: Регистрация: 21.08.2015
13.04.2020 18:41:51
Цитата
Старатель написал: Списки сбрасываются при загрузке настроек из *.wnd при установленном соединении с сервером.
Посмотрел внутрь, фильтры по окну там присутствуют, вполне возможно, что квик будет общие фильтры приводить в соответствие в момент загрузки. Но всегда думал, что info.wnd грузится только при запуске квика, ну или если вручную форсировать, неужто и при подключении тоже.
Объемы покупки / продажи на графике
Пользователь
Сообщений: Регистрация: 21.08.2015
13.04.2020 15:37:54
Раздельные объемы придется считать по ТВС, иначе никак.
Два графика в одном, Помогите новичку график сделать
Пользователь
Сообщений: Регистрация: 21.08.2015
13.04.2020 15:36:25
На скрине газпром привязан к левой оси, фьючерс к правой, вот и все чудеса. То есть открываете газпром, потом правый клик по графику, добавить индикатор, в диалоге - "новый", выбираете фьючерс, снимаете галку "поместить в новую область". И вот у вас в одном окне два графика. Потом правый клик - редактировать - выбираете привязку одного к левой оси, другого к правой.
Передача данных из скрипта в индикатор
Пользователь
Сообщений: Регистрация: 21.08.2015
12.04.2020 12:05:48
Цитата
Nikolay написал: В этом плане очень бы хотелось встроенной в Квик сущности, доступной из Lua, для подключения к внешним базам данных.
Не дай бог услышат. Сейчас у вас одна проблема, как к базе подключиться, а будет две: как обойти встроенную сущность и как к базе подключиться.
Удаление элемента из массива, который прошёл проверку
Пользователь
Сообщений: Регистрация: 21.08.2015
12.04.2020 03:31:10
Цитата
Hired написал: Понял лишь то, что после message ... нужно использовать "table.remove",
Концептуально да, практически удалять элементы из массива, по которому идет итерация, не стоит. Предлагаю другой вариант: перед циклом for создайте временный пустой массив, назовем его temp_sec_code, в цикле проверяете элемент и либо кладете его в новый массив, либо показываете сообщение. Таким образом, во временном массиве у вас бумаги, по которым сообщение еще не показано. По окончании цикла for просто sec_code = temp_sec_code.
Вывод по DDE из окна Состояние счета, Вывод по DDE в Excel из окна Состояние счета - ошибки
Да, квик его стартует каждый раз, когда галка установлена, причем запуск экселя захардкодили, попробуйте другое имя сервера ввести - галка станет неактивной, не умеет квик другие приложения запускать. Но это уже не столь критично, хотя я б по-другому сделал. Можете еще без автозапуска в мой сервер вручную запустить (без галки "при создании") - увидите, как должен был выглядеть первый скрин без ошибки, с заголовками столбцов и нормальным диапазоном. Ну и так, если интересно, можете галками поиграть и посмотреть, как это на поток данных влияет.
Вывод по DDE из окна Состояние счета, Вывод по DDE в Excel из окна Состояние счета - ошибки
А их и не будет, сервер примет любую чепуху, в отличие от настоящего экселя, ему главное показать ее. Второй скрин - это как оно должно быть, это когда уже таблица создалась и заполнилась, едут ячейки со значениями. А вот первый - это как раз на чем настоящий эксель отказывается продолжать, вот этот диапазон R2C1-R2C0 "задом наперед". И должна была приехать первая строка с заголовками столбцов, а ее тоже нет. Очевидно, таблица еще не создана, а квик уже стартанул экспорт. Дело раскрыто, осталось арке поправить.
Вывод по DDE из окна Состояние счета, Вывод по DDE в Excel из окна Состояние счета - ошибки
Пользователь
Сообщений: Регистрация: 21.08.2015
11.04.2020 15:14:24
Цитата
Anton написал: 3. Открыли настройку экспорта дде. Поставили сервер excel, книга test, лист test, запускать автоматически сняли, вывод после создания поставили.4. Вот в таком виде закрыли квик.
Между 3 и 4 закрыли окно настроек дде, а то ж не сохранится.