Вопрос[ы]: 1. Для чего в главном файле квика info.exe секция экспорта? 2. значит ли это, что это сделано для того, что часть кода/плагинов писалась независимыми разработчиками и, соответственно, компания просто не стала раскрывать все исходники, а ограничилась лишь интерфейсом взаимодействия лишь с самыми необходимыми функциями? 3. значит ли это, что так сказать, IPluginContext - не совершенен?
получается, если верить Вашим словам - то у Вас должно быть так: #define lua_register(L,n,f) (lua_pushcfunction(L, (getNumberOf)), lua_setglobal(L, ("getNumberOf" ;) ))
получается, если верить Вашим словам - то у Вас должно быть так: #define lua_register(L,n,f) (lua_pushcfunction(L, (getNumberOf)), lua_setglobal(L, ("getNumberOf")))
К Вам предложение, дополнить на общеизвестном форуме соответствующие темы, а также написать больше примеров того, как добавлять из C++ новые функции через closure.
тема многопоточности, а тем более многопоточности в QLUA - тянет на целую книгу. в одном топике - вам тут никто не ответит на весь список ваших вопросов. Для начала, почитайте вот этот форум: quik2dde.ru. После того, как ВЕСЬ! его прочитаете - прочитайте ещё раза 2.
Цитата
Дмитрий пишет: Перечитал старый форум, но внятного ответа так и не нашёл.
а потому что его и нет))) внятный ответ должны дать Вы сами, бо как изначально, LUA задумывалась, как однопоточная, потом к ней добавили корутины, дочерние состояния (child lua_State) и пр.
Цитата
Дмитрий пишет: Наверняка уже многие делали то же, что и я, и многие ещё будут делать.
увы, таких единицы, если считать, чтоб всё ещё СТАБИЛЬНО работало. Дело в том, что сама QLUA постоянно меняется и постоянно допиливается. поэтому, пока не будет нормальной/стабильной "базы" - все наши "устремления" - лишь жалкие поделки, особенно, принимая во внимание изначальную полную "сопливость" штатной дкументации по QLUA.
во всех алгоритмах идёт сравнение побайтно, в более современных - сравнение с хешем, есть реализации с C++ STL, правда в силу своей специфичности и того, что его "ляпают" все и везде где не попало - в большинстве своём, невсегда удачные.
даже если не использовать циклы в самом скрипте - это не значит, что они (циклы) не будут использованы в движке LUA. Так что тут гадать и выдумывать не стоит. Для начала, вот ссылка на работу со строками в LUA: http://lua-users.org/wiki/StringLibraryTutorial
Egor Zaytsev пишет: подпрограмму экспорта данных - процесс «winros.exe».
чтоб не плодить новую тему: разработчикам на заметку: при аварийном завершении/зависании работы квика (неважно с созданием дампа или без) - не выгружается из диспетчера процессов Windows - процесс winros. Если его вручную не "прибить" - то в следующий раз невозможно подключиться к серверу: пишет, что Вы, мол де, уже работаете в системе.
Sergey Gorokhov пишет: из материалов с других форумов - мы знаем, что "main" запускается (а вместе с ней и создаётся отдельный поток) после колбека "OnInit" - значит ли это , что, если в скрипте не будет прописан колбек OnInit - то и для функции "main" не будет создан отдельный поток???
------------------------- Нет не значит.
Правильный ответ: проверяем есть ли в скрипте OnInit - если есть и он завершился без ошибки то, можно смело запускать поток и вызывать в нём "де-факто"-колбек "main". Если же OnInit нет то, просто пытаемся создать поток и запустить в нём "main" ----------------------- А вообще-то, с проверок и надо было начинать: если нет "майна", то и не должно быть создания потока. Это одна из Ваших ошибок.
Для всех заинтересованных лиц: взято из "их" м-м, э... "документации":
Цитата
main
Функция, реализующая основной поток выполнения в скрипте. Для ее выполнения терминал QUIK создает отдельный поток. Скрипт считается работающим, пока работает функция main(). При завершении работы функции main() скрипт переходит в состояние «остановлен». Если скрипт находится в состоянии «остановлен», то не происходит вызовов функций обработки событий терминала QUIK, содержащихся в этом скрипте.
вместо того, чтоб выпускать "сырой" продукт на рынок и за столь долгое время так и не сумев не то, чтоб "допилить" его до товарного вида но, хотя бы даже самим изучить/быть в курсе, как это "чудо" работает, предлагаю отдать qlua в опенсорс. Один хрен, пользователи за вас делают Вашу работу. Так хоть не надо будет им более, что-то объяснять/оправдывать и постоянно допиливать/регистрировать не сбыточные пожелания.
sam063rus пишет: задам другой вопрос: значит ли, что: когда основное тело скрипта выполнится и при условии отсутствия каких-либо колбеков в скрипте (за исключением OnStop), а также при отсутствии в скрипте функции main - скрипт полностью закончит свою работу, а вместе с ним и его виртуальная машина полностью закончит работу/будет разрушена?
package.cpath=getScriptPath().."\\?.dll"
package.path=getScriptPath().."\\?.lua"
require("vcl")
main_window = VCL.Form("mainForm")
main_window._ = {Caption = "simple bot", Height = 150, Width = 150, On Close = "asd"}
main_window:Show()
function asd()
main_window:Free()
end
Не трудно заметить, что окно вполне себе нормально живёт и реагирует на внешние события, несмотря на то, что кнопка "Остановить", нам "каГбэ" намекает, что останавливать-то по сути и нечего - всё уже как бы и так стоит.
Если Вы на это мне скажете, что вот мол, у меня тут есть свой OnClose - я могу привести другую картинку без него - просто окно закрываться перестанет, а все свои стандартные функции, такие как: обновление, обработка других оконных сообщений - оно продолжает исправно выполнять.
и последний вопрос: из материалов с других форумов - мы знаем, что "main" запускается (а вместе с ней и создаётся отдельный поток) после колбека "OnInit" - значит ли это, что, если в скрипте не будет прописан колбек OnInit - то и для функции "main" не будет создан отдельный поток???
-------------------- этот, как и предыдущий вопрос относится не только к Михаилу, но и к другим разработчикам.
sam063rus пишет: О порядке фьючерсных расчётов вам надо не здесь у разработчиков спрашивать, а на сайте ммвб читать: Спецификацию на фьючерсный контракт на "такой-то актив" Методику расчёта вариационной маржи по фьючерсному контракту "такого-то" актива Правила клиринга на Срочном Рынке
дни до погашения (дни до экспирации) только у срочных контрактов и, если память не изменяет ещё у облигаций - только называется по-другому: до оферты. что-то вроде этого: Дюрация (к погашению/оферте) – это численность дней, оставшееся до ближайшего события погашения или оферты.
насчёт первого пункта: не надо впадать в крайность: если память не изменет то даже если объявят делистинг - у вас ещё будет минимум месяц, если не ошибаюсь, чтоб избавиться от своих бумаг. вы это можете и сами почитать, а не тут спрашивать. зайдите на ммвб и для начала почитайте: Правила листинга.
Андрей пишет: завтра и далее акция не будет торговаться на рынке.
самое правильное - смотреть ежедневно анонс новостей на сайте биржи - там постоянно пишут какие бумаги вводятся и выводятся из списка (листинг/делистинг).
такого нет и не предвидеться. т.к. будет ли торговаться бумага или НЕ будет - зависит не от квика, не от брокера и даже в меньшей степени не от биржи, а от ситуации на рынке/в стране, а также от воли эмитента. в квике можно лишь посмотреть по срочным контрактам срок экспирации и то, биржа имеет право его менять/продлять.
sam063rus значит ли это, что Вы в qlua переопределили стандартные макросы lua_lock/lua_unlock с пустышек на критические секции или, что/то в этом духе? и если да - то и нам можно теперь ими пользоваться?
Слава небесам! Неужто таки догадался?
я создал эту тему не "догадываться", а постараться получить чёткий ответ от разработчиков законными методами. поэтому многие многие вопросы для кого-то кажутся глупыми, о чём я заранее предупредил вначале топика:
Цитата
-------------- вопросы на самом деле - не глупые, но просто требуют окончательного уточнения
Николай, так объяснять - надо в первоклассникам, а лучше - не объяснять вовсе. Меня такие объяснения не устроят.
p.s. насчёт своего вопроса - разобрался. Описанный мной пример - оказался несовсем точным. В vclua - идёт неполная инициализация объекта Application. Так что, вопрос снимается.
получается, если рассуждать по вашей логике, то имеем:
Код
код состороны квика:
исполняем тело скрипта клиента
запускаем майн-тред
уходим в цикл ожидания событий по колбекам
если есть колбек - выполняем
если есть OnStop - прибиваем майн
майн сдох - прибиваем объект "скрипт"