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

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

Страницы: Пред. 1 ... 14 15 16 17 18 19 20 21 22 23 24 ... 28 След.
Порядок полей таблицы Даты-Времени у обезличенной сделки. Квик 8.5 Луа53.
 
Цитата
Latrop написал:
никакого сравнения строк (парсинга, вычисления хэшей и т.п.) по содержимому строки в lua тут не происходит.
Справедливости ради, вычисление хэша и поиск строки происходит, если речь о длл и сначала на стек пихается строка с ключом, а потом по ней индексируется таблица. Но это не проблема луа, а проблема дллписателя скорее, строк можно и заранее напихать. А вообще господин Иерусалимский говорит следующее
 
Порядок полей таблицы Даты-Времени у обезличенной сделки. Квик 8.5 Луа53.
 
Цитата
Aleks написал:
обращаться по индексу - самый эффективный способ
Точно ли есть разница, заметная невооруженным глазом, вот в чем вопрос. Я б в сторону for k,v in pairs(t) посмотрел. Раз дело в длл, завсегда можно напихать в локальную сишную структурку сначала, а потом одним разом ее в файл записать, на этом сэкономите времени на пару порядков больше.
Порядок полей таблицы Даты-Времени у обезличенной сделки. Квик 8.5 Луа53.
 
Это же нормальное явление для луа, полагаться на какой-то порядок полей было изначально ошибкой.
quik 8.5 ошибка
 
Добавлю еще один пунктик в пользу эксепшенов. Они - zero-cost, в отличие от лонгджампов. На первый взгляд, много ли их там... но вспоминаем lua_pcall и как часто ее используют.
quik 8.5 ошибка
 
Цитата
rst9 написал:
именно по-этому это и сделано так.
Сомневаюсь. Тогда бы из QLuaCheckVersion сделали лонгджамп, а не throw ) Думаю, упустили из виду впопыхах. Старый-то собирали плюсами и не думали о таких высоких материях. Тем более сям по барабану на эксепшены, а вот плюсам на лонгджампы нет, очевидно же, какой вариант стоит выбрать.

Цитата
rst9 написал:
несовместимый с кодом lua-state
...не должен в принципе возникнуть, если не внезапно вылетевший (из сишной, как все думали, функции) эксепшен.
quik 8.5 ошибка
 
Цитата
rst9 написал:
при завершении скрипта квик извещает программу, ждет 5 секунд
Не совсем так, ждет сколько скажут в OnStop. А в целом такой подход "сгорел сарай гори и хата" неправильный, тогда можно вообще не морочиться, натыкать абортов повсюду и все. Все ж я исхожу из того, что хотели как лучше, назвался хостом - давай уже обеспечь, что хост не крэшится и не течет из-за косяков в загружаемом коде.
quik 8.5 ошибка
 
Цитата
rst9 написал:
это, само по себе, не является проблемой.
Увы и ах, является. Функция вызывается из других функций луа (которые собраны как сишные) и кидает исключение, кроме того, какие-то функции квика по-любому должны вызываться внутри qlua, а они внезапно плюсовые и тоже могут кидать исключения. Луа ждет лонгджампа, исключение пролетит мимо него и будет поймано уже квиком над луа, то есть вся обработка ошибок луа тупо отключается. Не думаю, что так хотели, просто просмотрели. Старый-то луа с эксепшенами был собран и все было хорошо. Вот прям сейчас добавить /TP всем луа-файлам и все соберется без проблем, дело буквально на десять минут, и тогда уже можно дальше смотреть, что еще не так, потому что сейчас дальше смотреть незачем, сейчас любая ошибка повышается до полного краха луа-машины.
quik 8.5 ошибка
 
Цитата
rst9 написал:
получаем странное "multiple Lua VMs detected. Expected 5.3 instead of 0.0" ... изобретение арка текнолоджис.
Назвал этого франкенштейна QLuaCheckVersion. Вызовы его натыканы в самых неожиданных местах, в luaL_newmetatable например. И в том числе во всех luaopen_*. Видимо, как-то связано с присутствием lua5.1.dll и попыткой обеспечить совместимость. Но самое смешное вот в чем: весь луа таки собран с лонгджампами, теперь это стопроцентно известно, но вот этот довесок кидает исключение, единственное во всей длл.
quik 8.5 ошибка
 
Цитата
quio написал:
Раньше свою длл нужно было с qlua.dll линковать
Вообще-то с lua5.1.dll от квика, насчет qlua.dll кто-то дезу пустил и так и пошло. Впрочем, работало тоже.

Цитата
quio написал:
Создаю новое состояние через lua_newthread(L), передаю его с свой поток, созданный через _beginthreadex, из этого потока вызываю функцию через lua_call. И ничего не проиходит
Проверил - аналогично.
quik 8.5 ошибка
 
Цитата
Latrop написал:
Critical error ACCESS_VIOLATION in script
Это теперь так ошибки обрабатываются ) Надеюсь, поправят скоро.

А по существу - должна по идее какая-то ошибка случаться, но воспроизвести не удалось, перезаказал твс, догрузилась до текущего момента и ничего не упало. Вот таким вот образом пробовал
Код
static int qOnAllTrade(lua_State * s)
{
   lua_getglobal(s, "getInfoParam");
   lua_pushliteral(s, "VERSION");
   lua_call(s, 1, 1);
   lua_pop(s, 1);
   return 0;
}
quik 8.5 ошибка
 
Окончательно установил, что lua_error из 8.5 генерирует лонгджамп вместо эксепшена. Вот это работает (отлавливает ошибку)
Код
static int qmain(lua_State * s)
{
   lua_longjmp jbuf;
   jbuf.status = 0;
   jbuf.previous = s->errorJmp;
   s->errorJmp = &jbuf;
   if(setjmp(jbuf.b) == 0)
   {
      luaL_error(s, "err");
   }
   s->errorJmp = jbuf.previous;
   return 0;
}
Это залет, товарищи.
quik 8.5 ошибка
 
В общем, luaL_openlibs со стейтом из мейна работает, с новым стейтом выбрасывает исключение, через SEH оно отлавливается, там код какой-то длинный (плюсовое?). Если дать ему улететь, квиком вылавливается уже не оно, а 0x05 (ACCESS VIOLATION). Я продолжаю считать, что по крайней мере внешние проявления вызваны смешиванием лонгджампов с эксепшенами, а уж что там изначально за ошибка, надо рыть. Без символов голый асм ковырять как-то тоскливо очень, оставим арке арково.
quik 8.5 ошибка
 


 
quik 8.5 ошибка
 
Цитата
rst9 написал:
в mylib в функции luaopen_mylib() вызываем lua_version(L), с переданным в luaopen_mylib L, из lua53.dll. ее результат равен 0.0. не 5.3 и не 5.1.
Упорный вы какой. Это УКАЗАТЕЛЬ. Функция lua_version() ВОЗВРАЩАЕТ УКАЗАТЕЛЬ. Не 5.3, не 5.1, а УКАЗАТЕЛЬ.
quik 8.5 ошибка
 
Цитата
rst9 написал:
мы вообще не знаем, что там за код
Но можем предполагать, что половина сорцев собрана как си, а половина как плюсы, поэтому где-то вылетают лонгджампы, а где-то ожидаются эксепшены. Конкретно в lua53.dll я увидел одни джампы. В то же время в qlua.dll код явно плюсовый. Очевидно, поскольку это плюсы, LUAI_THROW и LUAI_TRY определены как плюсовые, через эксепшены. А lua53.dll делает джампы. Вот ничего и не ловится. Арке стоит убедиться, что все сорцы луа компилируются как плюсы, а не как си (/TP для компилятора).
quik 8.5 ошибка
 
Цитата
rst9 написал:
Все это говорит о том, что ваша теория про "разные модули" не совсем верна.
Я уже выше написал, что она неверна в данном случае. Если все работает как надо, она - единственный вариант, но в данном случае стейт не инициализирован, в version NULL, и если не хачили lua_newstate, то это может быть только путем игнора ошибки при инициализации.
quik 8.5 ошибка
 
Цитата
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?
Таким, что она возвращает УКАЗАТЕЛЬ. Видите там такую звездочку?

Цитата
rst9 написал:
Учим lua с Оленем Бобом
Именно что.
quik 8.5 + lua 5.3 = ошибка
 
Цитата
ISR написал:
как лечить
Довольно легко лечится
quik 8.5 ошибка
 
Впрочем, есть еще один вариант - это когда один из указателей равен NULL. Статический не может быть NULL, значит, NULL в стейте. Смотрим внутрь lua_newstate, она сразу же ставит version в NULL и устанавливает ее только после того, как вся инициализация стейта прошла без ошибок. Это происходит в функции f_luaopen и там тупо нет варианта не установить версию, либо одна из вызванных функций выкинула ошибку, lua_nestate ее поймала и тут же прибила стейт и вернула NULL, либо все прошло хорошо и версия установлена перед выходом из f_luaopen. Отсюда вывод - одна из функций инициализации ошибку таки выкинула, но lua_newstate ее не поймала. Упс, это ровно то, о чем я писал не далее как вчера. То есть природа косяка та же самая, видимо.
quik 8.5 ошибка
 
_VERSION это как раз глобальная константа, она зашита в длл намертво и всегда такая, какой была при компиляции, чего на нее смотреть. Вот lua_version куда интереснее.

Конкретно ошибка "multiple Lua VMs detected" вылезает в результате того, что УКАЗАТЕЛЬ на версию в стейте не равен УКАЗАТЕЛЮ на глобальную версию. На самом деле она не такая и глобальная, статическая переменная внутри самой lua_version(). В каком случае указатель на статическую переменную внутри функции может быть не равен указателю на ту же статическую переменную внутри той же функции? Когда это ДВЕ РАЗНЫХ ФУНКЦИИ. Из разных модулей, например. См. сорцы luaL_checkversion_ и lua_version.

В то же время все не так просто, как я выше написал, то есть от самой идеи я не отказываюсь, но обойти косяк, не линкуя lua5.3.dll, а подгрузив ее динамически, я не смог, результат тот же. Откуда следует, что в квике и без нас УЖЕ два экземпляра каким-то образом.
quik 8.5 ошибка
 
Цитата
rst9 написал:
проблемы будут, если вы создадите стейт при помощи одних функций (скажем, из lua5.1.dll), а будете пытаться манипулировать им при помощи других (например, из lua53.dll).
Об этом и речь, только еще шире, одни функции из 53 и другие функции из 53, одинаковые до байта, но в разных модулях.
quik 8.5 ошибка
 
Цитата
rst9 написал:
если даже ничего в luaopen_ не делать, а вызвать lua_version() из подгруженной lua53.dll, то все равно, результат ее работы никак не должен быть 0.0.
Дык, насколько понимаю, дело в том, что вы вызываете lua_version() из прилинкованной к вашей длл lua53.dll. Квик до запуска скрипта уже загрузил qlua.dll и запустил машину оттуда, и весь стейт там, а функции из lua53.dll будут работать постольку, поскольку не трогают глобальных переменных луа. Как раз lua_newstate() их трогает, и трогает не те.
quik 8.5 ошибка
 
Хехе, чудеса. Ошибочка происходит, когда в программе оказываются два луа из разных длл или из экзешника и длл. Сравниваем, как было в 8.3. Весь луа экспортировала qlua.dll, а lua5.1.dll была просто проксей (28 кб размер, кода там нет очевидно). В 8.5 qlua.dll ничего не экспортирует, кроме двух функций плагина, а экспортирует все как раз lua53.dll и, судя по размеру, весь код в ней тоже сидит. Вот так мы и получаем два экземпляра луа в одном процессе.
Неторговые поручения
 
Это дополнительный модуль за отдельную плату, сбер купил, а втб не купил, вот и вся разница.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Latrop написал:
Что касается совместимости с 5.1 (видимо для этого там lua5.1.dll), то она несовместимая пока получается.
Подтверждаю, вышеописанная длл из одной функции тоже падает, если собрать под 5.1 и запустить в 8.5. Причем если ошибка не генерируется, падает только скрипт и квик пишет access violation, если генерируется - падает весь квик без дампа. Если убрать lua5.1.dll, разрушения меньше, скрипт просто не может загрузить длл. Так что присутствие ее остается загадкой.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Так, первые вопросы уже созрели. Пишем длл
Код
struct test
{
   test() { ::MessageBoxA(NULL, "ctor", NULL, 0); }
   ~test() { ::MessageBoxA(NULL, "dtor", NULL, 0); }
};

static void generr(lua_State * s, const char * txt)
{
   lua_pushstring(s, txt);
   lua_error(s);
}

static int qmain(lua_State * s)
{
   try
   {
      test tst;
      ::generr(s, "error msg");
   }
   catch(...)
   {
      ::MessageBoxA(NULL, "Exception caught", NULL, 0);
      throw;
   }
   return 0;
}
Собираем с 5.1, запускаем в 8.3, получаем три сообщения: ctor, dtor, Exception caught. Все правильно, lua_error генерирует эксепшены и это прекрасно. Теперь собираем с 5.3, запускаем в 8.5, получаем ДВА сообщения: ctor, dtor. Эксепшен не пойман. Допустив, что мой рантайм не обязательно совпадает с арковским, повторил упражнение на чистом SEH. То же самое, нет там эксепшена. Вариант "собирали gcc + dwarf" отметаю как малореальный. Остается вариант...

...луа с лонгджампами собрали? Это же жесть. Может, пока (почти) никто не видел, пересобрать по-тихому? )
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Александр М написал:
В Документации тоже ни слова, что кстати странно, как минимум должны были именно в Документации озвучить, что версия lua меняется и ссылку дать на различия в версиях.
Справедливости ради, при первом запуске 8.5 выкинул диалог с как раз этим предупреждением о смене версии и ссылкой куда-то, как бы не сюда.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Александр М написал:
увидел, что там 2 dll и версии lua 5.1 и версии 5.3 Какая основная
Можно предположить, что 5.1 оставили для какой-то там совместимости, 5.3 экспортирует все то же самое (с поправкой на версию луа). Пока не обнаружил, чтобы что-нибудь крэшнулось без 5.1 (просто убрал ее).
Проблемы с QUIK под эмулятором на Mac
 
Цитата
новичок написал:
но не понятна идея и перспектива
А она как-то во всей виндовой экосистеме непонятна. Приплыли тксть.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 
А нет, из квика-то первый скрин, там как раз так и есть. В общем, мы видим, что в квике свеча считается от вчерашнего закрытия, а почему? Локальное время стоит в квике? Влияет ли оно на графики - не знаю.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 
На скрине опен никак не может быть 2515.05, свеча красная и тень вниз, а с таким открытием она была бы зеленой без нижней тени. Чет где-то нестыковки какие-то.
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 
2515.05 это закрытие 16-го. Может график перезаказать просто?
IMOEX - сильные различия формы свечей в quik и tradingview, почему так?
 
Вот официальные данные с биржи, сравнивайте, кто врет. На глаз по скринам врет сайт.
Код
DATE, CLOSE, OPEN, HIGH, LOW, VALUE
2020-04-01, 2473.61, 2465.56, 2491.66, 2449.01, 80256140704.1
2020-04-02, 2545.95, 2528.72, 2562.54, 2470.85, 134240120328
2020-04-03, 2572.23, 2547.15, 2609.16, 2533.06, 117108960828
2020-04-06, 2622.59, 2597.28, 2639.56, 2576.28, 89823141209.1
2020-04-07, 2634.74, 2648.74, 2688.67, 2612.96, 120867694592
2020-04-08, 2670.12, 2617.66, 2670.12, 2603.99, 83665607709.9
2020-04-09, 2701.77, 2693.58, 2713.5, 2643.98, 117023415634
2020-04-10, 2677.86, 2678.3, 2680.89, 2656.45, 36513692244.2
2020-04-13, 2628.85, 2675.73, 2677.9, 2610.61, 47643715824.8
2020-04-14, 2631.83, 2649.34, 2667.58, 2619.91, 82460437951.6
2020-04-15, 2498.94, 2617.19, 2617.19, 2489.99, 99986258141.1
2020-04-16, 2515.05, 2511.55, 2550.84, 2468.65, 106189551975
2020-04-17, 2534.97, 2550.95, 2556.42, 2516.87, 70173608170.4
Уведомление о необходимости обновления торговых терминалов в связи с изменениями на срочном рынке Московской биржи, Список проблем при работе устаревших версий QUIK после обновления торговой системы срочного рынка МБ
 
Цитата
_sk_ написал:
можно начинать
Спасибо большое, успел настроить-подкачать, пока пятница не кончилась, в выходные будет чем заняться.
Проблемы с QUIK под эмулятором на Mac
 
Цитата
новичок написал:
беда...а прям с вендузятиной :)
Не то слово ) Даже ярлычки создать может быть делом занятным. если мы хотим на всех версиях работать. Потом, если хотим анинсталл зарегистрировать, таки придется в реестр лезть, ну и далее везде. Так-то, если только распаковать, sfx вполне себе справится, но в этом случае лично я бы предпочел зип простой, что сейчас есть и слава богу.
Проблемы с QUIK под эмулятором на Mac
 
Цитата
новичок написал:
где логика?
Я б у мозиллы тоже спросил. Думается, если не учитывать msi, ни один движок в x64 не умеет паковать. А msi - последнее, что хотелось бы видеть, этот по-простому распаковать и настроить не умеет, пол-винды перероет.
Проблемы с QUIK под эмулятором на Mac
 
Цитата
новичок написал:
мало на что сами способны без готовых костылей
Вот-вот, я и удивился, видел sfx всякие и подобное, а прям вот официально с логотипом и подписЯми чет не встречалось.
Цитата
такой сильный непрязнь
Лишный )
Проблемы с QUIK под эмулятором на Mac
 
Цитата
новичок написал:
с учетом 32-х битного инсталлера
А где-то дают квик с официальным инсталлером? У брокеров какие-то самопалы, на фтп в зипах, куда глянуть?
Проблемы экспорта в Wealth-Lab
 
У вас поставки по фьючерсам выбраны на первом скрине, чего вы ждете-то?
*AllTrade*, новые функции для qlua
 
Цитата
Egor Zaytsev написал:
ответ Вам был дан
Совершенно верно, вопрос от Старатель был что в итоге признали, я и ответил, что прошло как баг (из не-саппорта только у меня ж информация была).
*AllTrade*, новые функции для qlua
 
Цитата
Egor Zaytsev написал:
Запрошенную информацию Сергеем для разбора вы присылали?
День добрый. Я присылал, CQ02542047.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
 
Цитата
Старатель написал:
при установленном соединении
Прочитал "при установлении соединения", теперь понятно, извиняюсь за невнимательность.
Поток обезличенных сделок, Прекращается трансляция обезличенных сделок при стабильно работающем quik (выбранные инструменты вновь становятся неактивными)
 
Цитата
Старатель написал:
Списки сбрасываются при загрузке настроек из *.wnd при установленном соединении с сервером.
Посмотрел внутрь, фильтры по окну там присутствуют, вполне возможно, что квик будет общие фильтры приводить в соответствие в момент загрузки. Но всегда думал, что info.wnd грузится только при запуске квика, ну или  если вручную форсировать, неужто и при подключении тоже.
Объемы покупки / продажи на графике
 
Раздельные объемы придется считать по ТВС, иначе никак.
Два графика в одном, Помогите новичку график сделать
 
На скрине газпром привязан к левой оси, фьючерс к правой, вот и все чудеса. То есть открываете газпром, потом правый клик по графику, добавить индикатор, в диалоге - "новый", выбираете фьючерс, снимаете галку "поместить в новую область". И вот у вас в одном окне два графика. Потом правый клик - редактировать - выбираете привязку одного к левой оси, другого к правой.
Передача данных из скрипта в индикатор
 
Цитата
Nikolay написал:
В этом плане очень бы хотелось встроенной в Квик сущности, доступной из Lua, для подключения к внешним базам данных.
Не дай бог услышат. Сейчас у вас одна проблема, как к базе подключиться, а будет две: как обойти встроенную сущность и как к базе подключиться.
Удаление элемента из массива, который прошёл проверку
 
Цитата
Hired написал:
Понял лишь то, что после message ... нужно использовать "table.remove",
Концептуально да, практически удалять элементы из массива, по которому идет итерация, не стоит. Предлагаю другой вариант: перед циклом for создайте временный пустой массив, назовем его temp_sec_code, в цикле проверяете элемент и либо кладете его в новый массив, либо показываете сообщение. Таким образом, во временном массиве у вас бумаги, по которым сообщение еще не показано. По окончании цикла for просто sec_code = temp_sec_code.
Вывод по DDE из окна Состояние счета, Вывод по DDE в Excel из окна Состояние счета - ошибки
 
Цитата
Игорь написал:
Запускаю квик, загружается Excel
Да, квик его стартует каждый раз, когда галка установлена, причем запуск экселя захардкодили, попробуйте другое имя сервера ввести - галка станет неактивной, не умеет квик другие приложения запускать. Но это уже не столь критично, хотя я б по-другому сделал. Можете еще без автозапуска в мой сервер вручную запустить (без галки "при создании") - увидите, как должен был выглядеть первый скрин без ошибки, с заголовками столбцов и нормальным диапазоном. Ну и так, если интересно, можете галками поиграть и посмотреть, как это на поток данных влияет.
Вывод по DDE из окна Состояние счета, Вывод по DDE в Excel из окна Состояние счета - ошибки
 
Цитата
Игорь написал:
Ошибок не было совсем.
А их и не будет, сервер примет любую чепуху, в отличие от настоящего экселя, ему главное показать ее. Второй скрин - это как оно должно быть, это когда уже таблица создалась и заполнилась, едут ячейки со значениями. А вот первый - это как раз на чем настоящий эксель отказывается продолжать, вот этот диапазон R2C1-R2C0 "задом наперед". И должна была приехать первая строка с заголовками столбцов, а ее тоже нет. Очевидно, таблица еще не создана, а квик уже стартанул экспорт. Дело раскрыто, осталось арке поправить.
Вывод по DDE из окна Состояние счета, Вывод по DDE в Excel из окна Состояние счета - ошибки
 
Цитата
Anton написал:
3. Открыли настройку экспорта дде. Поставили сервер excel, книга test, лист test, запускать автоматически сняли, вывод после создания поставили.4. Вот в таком виде закрыли квик.
Между 3 и 4 закрыли окно настроек дде, а то ж не сохранится.
Страницы: Пред. 1 ... 14 15 16 17 18 19 20 21 22 23 24 ... 28 След.
Наверх