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

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

Страницы: 1
Когда лучше getParamEx, а когда getParamEx2 ?, Что предпочесть ?
 
Цитата
nikolz написал:
Динамические данные надо брать через  getParamEx., а getParamEx вызывать при срабатывании onParam.При этом, чтобы не читать ненужное, надо в onParam поставить фильтр на торгуемые инструменты.
При срабатывании onParam вызывать именно getParamEx или всетаки getParamEx2 ?
Когда лучше getParamEx, а когда getParamEx2 ?, Что предпочесть ?
 
Цитата
Владимир написал:
А никогда! Лично я использую только OnTrade, getParamEx, sendTransaction... кажется, всё.
А OnParam как же не использовать ?
Когда лучше getParamEx, а когда getParamEx2 ?, Что предпочесть ?
 
Цитата
Владимир написал:
Даже если не открыта ТТТ, ParamRequest однозначно не нужен, как и getParamEx2.
А когда и тогда использовать ParamRequest или уже "устарела" команда ?
Когда лучше getParamEx, а когда getParamEx2 ?, Что предпочесть ?
 
Цитата
Anton Belonogov написал:
Функции возвращают аналогичные наборы данных, но getParamEx2 предназначена для использования совместно с функциями заказа/отказа от получения параметров Таблицы текущих торгов - ParamRequest и CancelParamRequest (см. более подробную
А если открыта ТТТ, значит ли это что ParamRequest однозначно не нужен и все равно- что getParamEx2 или getParamEx ?
Когда лучше getParamEx, а когда getParamEx2 ?, Что предпочесть ?
 
Цитата
nikolz написал:
Функция getParamEx берет параметры из архива терминала. Это сравнительно медленно.У инструментов много неизменяемых  параметров. Их лучше выбрать один раз и сохранить в таблице. Потом брать из этой таблице не используя getParamEx.
Т.е. "более" актуальные данные нужно брать через getParamEx2 во всех случаях, когда открыта ТТТ ? Или могут быть другие ситуации ?
Когда лучше getParamEx, а когда getParamEx2 ?, Что предпочесть ?
 
Приветствую, всезнающий All !

1. У меня открыта таблица тек.торгов с нужными инструментами. Как правильно получать данные из нее getParamEx или getParamEx2 ?
2. Сработал колбэк OnParam. Также- как правильно - getParamEx или getParamEx2 ?
getParamEx2 выдаёт неактуальные значения
 
Цитата
Serge123 написал:
Нашёл решение моей проблемы от Старателя на этом форуме...
А ссылку можно на решение проблемы ?
Quik 9.7.0 или младше, Где скачать ?
 
Цитата
k4rkpin написал:
в Гугле есть http://www.sberbank.ru/ru/person/investments/broker_service/quik  http://www.sberbank.ru/common/img/uploaded/broker/quik_x64_8.3.zip
Спасибо, огромное ! То что надо, стыдно, что сам я не нашел...
Quik 9.7.0 или младше, Где скачать ?
 
Цитата
k4rkpin написал:
установите старую версию с сайта Сбера  
Спасибо! Установил- это 32 бита, 64 есть где ? Или придется две версии dll делать...
Quik 9.7.0 или младше, Где скачать ?
 
Цитата
k4rkpin написал:
https://arqatech.com/ru/support/files/quik-workstation/
Так там только QUIK Junior можно скачать, а норм. версия ?
Quik 9.7.0 или младше, Где скачать ?
 
Приветствую, всезнающий All !

В связи с защитой от отладки (разрабатываемой своей dll) в новых версиях Quik ищу, где можно скачать старую 64 бит версию 9.7.0 или младше ?
Связывание глобальной callback функции
 
Цитата
Quikos написал:
Хмммм, в моем случае - начинает работать когда я объявляю callback-функцию в самом скрипте, без этого в dll - не вызывается.
надо с самой dll разбираться...
Связывание глобальной callback функции
 
Цитата
Quikos написал:
Оказывается в самом Lua-Скрипте нужно еще прописать вызов OnQuote.
Не нужно. В скрипте только подключение dll.
Связывание глобальной callback функции
 
Вот пример рабочей "регистрации" для Quik 9.7.1.10 и lua 5.4.2 - год назад+ написано до сих пор работатет...
Код
static int OnParam_from_lua(lua_State* L) {
    lua_settop(L, 0);
}

//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern "C" LUALIB_API int luaopen_for_quik_lua542(lua_State * L) {
    lua_newtable(L);
    luaL_setfuncs(L, ls_lib, 0);
    lua_pushvalue(L, -1);             // не понятно нужна или нет это строка - работает без нее
    lua_setglobal(L, "dll");
    lua_register(L, "main", main_from_lua);
    lua_register(L, "OnStop", OnStop_from_lua);
    lua_register(L, "OnClose", OnClose_from_lua);
    lua_register(L, "OnConnected", OnConnected_from_lua);
    lua_register(L, "OnDisconnected", OnDisconnected_from_lua);
    lua_register(L, "OnParam", OnParam_from_lua);
    return 0;
};



getParamEx2 и многопоточность ?
 
Цитата
nikolz написал:
Первая - это синхронизация потоков.
С синхронизацией все как раз ясно, но она не "бесплатна" с точки зрения времени - а вот без нее, как я понял, смысла нет с Квиком дружить...
getParamEx2 и многопоточность ?
 
Цитата
nikolz написал:
А если Вы это не сделаете то и доступ к этой функции не получите из разных потоков.
Т.е. если два потока ОДНОвременно (без локов) вызовут getParamEx2 в Квике, то он нормально это обработает как два вызова, т.е. по очереди ? Или один проигнорируется ?
getParamEx2 и многопоточность ?
 
Приветствую, всезнающий All !

Подскажите, можно ли из своей dll одновременно из нескольких потоков вызывать getParamEx2 ? Не обидится ли Квик ? Как обрабатывать будет ?
Консоль в dll подключенной к Quik ?, Больше не работает ?
 
Цитата
swerg написал:
А когда работало? Не понятно
Ну где то с год назад работало, когда включал. А сейчас есть варианты что то вывести на экран из dll ?
Консоль в dll подключенной к Quik ?, Больше не работает ?
 
Доброго времени суток, всем !

Win 10-64bit, Quik 9.7.1.10, моя dll откомпилирована под lua 5.4.2 - все работает. Но раньше мог, при необходимости, вывести консоль такой функцией на с++:
Код
void open_Console() {
    FILE* pFile = nullptr;
    AllocConsole();
    freopen_s(&pFile, "CONOUT$", "w", stdout);
    std::cout << "Quik DLL- started..." << std::endl;
}

А сейчас не открывается. Это Quik не разрешает ? Или что не так ?

Описание базовых активов Si, SiZ2 ?
 
Цитата
Nikolay написал:
Уже спрашивали
Не то.

"Si - фьючерсный контракт на курс доллара США/ российского рубля, обращающийся на бирже РТС FORTS." Вот это описание (или подобное) можно получить из Quik ?
Описание базовых активов Si, SiZ2 ?
 
Приветствую всех !

Вопрос такой - можно ли какой функцией из Quik получить текстовое описание "что такое" базовый актив Si для фьючерса и, соответственно, для самого SiZ2 ?
Отладка своей dll подключенной к Quik ?, Quik вылетает !
 
Цитата
nikolz написал:
Я отлаживаю DLL для QUIK так же как и для любой другой VMLua
Что конкретно ставить нужно для отладки, если уж нельзя подключиться к процессу Quik ?
Отладка своей dll подключенной к Quik ?, Quik вылетает !
 
Жесть ! Т.е. dll свою уже не отладить - придется в Quik message отправлять с каждой переменной - полная жесть !
Отладка своей dll подключенной к Quik ?, Quik вылетает !
 
Приветствую, All !

Есть своя dll к Quik, написанная год назад, Quik 9.7.1.10 и VS 2019. Помнится, в том году, для отладки подключался к процессу info.exe из VS 2019 спокойно и все видел. Сейчас пробую - не важно запущен ли с скрипт с подключением dll или нет, Quik выходит с кодом 0 (без ошибок) вообще без слов. Что то сломалось не пойму куда копать то ?
getSecurityInfo из dll, Периодически подвешивает Quik
 
Спасибо. Ясно.Хорошо бы в отдельную тему вывести описание сборки !
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
это был весь луа в виде статической библиотеки
Все верно ! А есть где прочитать, как тогда с 5.4.x правильно собираться, по пунктам ? А то про dumpbin вообще не понял...
getSecurityInfo из dll, Периодически подвешивает Quik
 
Пересобрал свою dll на 5.4.2 - и все заработало как часы! Дело оказалось только в версии -поверить не могу !

Кстати, в новой версии появилась помимо lua54.lib еще и lua54.dll. А смысл ?
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
Собственно, можете собрать, там внешних зависимостей нет
Буду разбираться ! А еще у меня обычный lua_call, а в примере lua_callk. Есть какие-то преимущества ?
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
Вот глядите, примерно нечто в том же роде накропал
Этот пример и под 5.3.5 работает без сбоев ? Одна надежда, что дело в версии...

И еще эта строчка "extern "C" int __declspec(dllexport) load(lua_State * s)" это что ? Там же должен быть luaopen_...
getSecurityInfo из dll, Периодически подвешивает Quik
 
Перенес все в main, передаю стэйт как параметр для вызова функции quik и все равно если перехват OnParam подключен в dll,то подвешивает quik в непредсказуемые моменты. В режиме отладки отловил тут акцесс виолэйшн в lua53.dll. Если OnParam не перехватывать, то все идеально. Что же еще может быть тогда ?
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
Мне вот мысль пришла, а какой транспорт используется?
На стороне приложения просто SetEvent (именной, ранее созданный), на стороне quik - сервер с бесконечным WaitForMultipleObject, сработал, выполнил функцию quik, данные в общую память и ответил приложению, там соответственно WaitForSingleObject принял ответ, данные забрал и по новой. Сбой только при включении OnParam...
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
Вот в таком виде перестанет виснуть?
Нет, повисает также. Похоже, что разные стэйты не такие уж и независимые. Буду переделывать на выполнение команд из main.
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
Если вдруг она уже захвачена и мейн из своего потока еще раз пытается захватить, будет рекурсивный захват, что ок, а если мейн держит секцию и ее пытается захватить другой поток, будет дедлок. Возможно, отсюда ноги растут.
Ну так пока не включен обработчик OnParam со своим стейтом, то все ок и за 1 сек. lua_call с этим global_lua_state успешно отрабатывает более 26 тыс.раз. Только включаю обработчика, то может зависнуть на 10 вызове, а может на 1000-м... Хотя стайты точно разные в main и в обработчике. Если в main стэйт уже пришел, то адрес его уже не меняется. Сейчас из main я его не трогаю он используется только из одного потока, типа моего эвент-сервера и все хорошо до подключения обработчика...Дедлока, по идее, не может быть !
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
Все остальные колбеки в текущей реализации получают другой стейт
Тогда у меня что-то не сходится:

"//это main
static int main_from_lua(lua_State* L) {       global_lua_state = L;
...

//это OnParam
static int OnParam_from_lua(lua_State* L) {        lua_settop(L, 0);    
   data_receive_time = GetTickCount64();    
   return 1;
}
"

Т.е. все команды шлются через global_lua_state полученный из main в момент запуска скрипта. И если убрать обработчика OnParam, то все работает, подключаю OnParam - начинает вешать quik, хотя там свой state должен быть...
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
WaitForMultipleObjects вполне может быть в мейне
Не ожидал. Я как раз отдельный поток выделил - типа сервер где обрабатывается WaitForMultipleObjects. А если все в main, думал что quik зависнет в ожидании... Но в обычном порядке state в main попадает только один раз при запуске скрипта, как я понимаю ? А в callback-ах не тот де самый state приходит ?
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
Если заводится свой поток в длл, который будет дергать луа, нужно, да, создать для него стейт через lua_newthread
А что, есть возможность без нового потока "дергать" lua_State ? Просто у меня общая dll и для связи с quik и для связи с моей прогой. И из своей проги просто отправлял команду в dll, где по WaitForMultipleObjects как раз через ранее сохраненный глобальный lua_State, dll отправляла команду в quik.
getSecurityInfo из dll, Периодически подвешивает Quik
 
Цитата
Anton написал:
Именно. Не надо  сохранять стейт в глобальную переменную, в каждом колбеке (включая мейн)  надо использовать тот стейт, что в эту функцию передан.
А как тогда правильно самому функции quik вызывать ? lua_newthread ?
getSecurityInfo из dll, Периодически подвешивает Quik
 
Разобрался, подвисало все иногда из-за включенной в dll обработке OnParam. Очевидно, в некоторые моменты происходит одновременные манипуляции со стэком в
lua_State из-за чего и сбой. Тогда получается, что нужно в разных потоках обрабатывать свои команды и quik события ? Или еще какие варианты ?
getSecurityInfo из dll, Периодически подвешивает Quik
 
С НГ, форумчане !

Из своей dll вызываю в цикле запрос getSecurityInfo
"
lua_getglobal(global_lua_state, "getSecurityInfo");
lua_pushstring(global_lua_state, class_code);
lua_pushstring(global_lua_state, sec_code);lua_call(global_lua_state, 2, 1);
"

собственно, по всем тикерам в одном цикле. И сейчас вдруг, иногда, в непредсказуемые моменты подвисает lua_call и, соответственно, подвешивает и сам Quik. Версия 5.3.5. Этом у меня тут что-то напутано или что еще может быть - куда копать ?
Загрузка своей dll с QT и без QT, Не загружается dll если в ней QT классы, а без них все ок.
 
Заработало ! Просто PYTHON39.DLL в корень Quik бросил и заработало. Вобщем протупил я. Прошу прощения ! Спасибо всем.
Загрузка своей dll с QT и без QT, Не загружается dll если в ней QT классы, а без них все ок.
 
PYTHON39.DLL тоже в корень Quik ? Ну он в системном path сидит ?
Загрузка своей dll с QT и без QT, Не загружается dll если в ней QT классы, а без них все ок.
 
Про PYTHON39.DLL - даже не подумал, что выкладывать смысл имеет.
Загрузка своей dll с QT и без QT, Не загружается dll если в ней QT классы, а без них все ок.
 
Да нет конечно и все используемые функции зеленые. Все вопросики только внутри "веток" KERNEL32.DLL и USER32.DLL ну так они и в рабочей версии присутствуют. А внутри PYTHON39.DLL и QT6QMLD.DLL вопросики тоже только с виндовыми dll.
Загрузка своей dll с QT и без QT, Не загружается dll если в ней QT классы, а без них все ок.
 
А что это за ucrtbase.dll и ms-api-xxx.dll - они к qt не относятся ? Разве не должны они из системной path браться сами ? Если dependancy walker-ом пройти по РАБОЧЕЙ версии dll (без qt), то он тоже выдает там кучу вопросиков по разным API-MS-*.DLL, но работает.
Загрузка своей dll с QT и без QT, Не загружается dll если в ней QT классы, а без них все ок.
 
Вот ссылка: https://disk.yandex.ru/d/9E7rXY8kEXz6Mg
В архиве в т.ч.:

1_dll.lua - для Quik - нужно поставить правильный путь в единственной строке - выдает ошибку при загрузке.
2_py_demo.py - для Python - нужно поставить правильный путь в третьей строке - все работает

Сама dll загружается и работает в Quik если собрать ее закоментировав одну строку "QQmlPropertyMap tmp;". Ну, соответственно, там и вес меньше и файл только один
Загрузка своей dll с QT и без QT, Не загружается dll если в ней QT классы, а без них все ок.
 
Не помогает. Quik не опознает такую dll, но достаточно убрать одну строчку в с++ коде с классом из QT и все ок.
Загрузка своей dll с QT и без QT, Не загружается dll если в ней QT классы, а без них все ок.
 
Доброго всем времени суток !

Есть своя dll все работает, только добавляю туда классы из QT - перестает грузится в Quik. Эта dll, когда собираешь ее с QT, сама требует доп. dll-ок и там аж 3 каталога ей нужно. Это все создается в папке с dll спец.утилитой от qt. И такая dll нормально грузится из других программ. В чем проблема у lua с ее package.loadlib? Не знает, как доп.файлы подтянуть или же вообще на это не способна и придется отдельную библиотеку только с qt писать а в lua грузить "чистую" dll без внешних зависимостей?
Страницы: 1
Наверх