Владимир написал: SetCell работает вполне прилично. Раз в две секунды я переписываю всю таблицу, всё происходит довольно быстро.
У меня есть таблицы, там тоже раз в секунду обновление. Но это просто информационные таблицы с кое-какими рассчётами для анализа и там всё работает как положено. Но кое где такие задержки просто не приемлемы. При возникновении события нужен немедленный выход из скрипта без всяких задержек, либо само событие произойдёт как раз во время задержки, что тоже не приемлемо, так как не выйти пока в задержке. Поэтому SetCell прилично работает в информационных таблицах, но совершенно не приемлемо в других случаях. Раз SetCell не даёт гарантии 100%-ного обновления таблицы после его вызова - лично для меня это абсолютно не приемлемая работа данной функции. Не знаю, как повлияет на работу SetCell перенос всего в main(), может и станет работать как надо, но у меня всё построено на вызовах функций и всё переносить внутрь main() для меня лично это не подходит, так как запутывает всё, никакой читабельности, всё в одной куче - не вариант для меня.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 18:56:19
А ведь ещё, что интересно? Что вызов главного рисовальщика WM_PAINT, который собственно и рисует в буфер окна и после которого апдейт содержимого из него автоматом после EndPaint не приводит к обновлению окна! А вот обработчик WM_SIZE обновляет. Значит он игнорирует изменение буфера окна не понятно по каким причинам. А такие события как изменение размера окна(вызов виндой WM_SIZE) это делают.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 18:36:38
Цитата
Nikolay написал: Вы говорите что нет проблем, у меня же тот же скрипт на чистом демо квике выдает обратное. Себе я верю больше.
Вот в том и дело, что nikolz думает, что раз у него работает, значит и у всех работать будет. Это не так. От чего там и когда идёт апдейт? Может даже зависит от количества других окон, от выводимой информации в окне и мало ещё от чего. Главное это то, что вызов SetCell абсолютно не гарантирует физический вывод в окно. Только куда-то там внутри окружения чего-то. Гарантировано апдейт всего окна делает обработчик WM_SIZE в оконной процедуре окна, что уже доказано.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 18:28:40
Вобщем я решение предложил: , а будут ли заниматься?
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 18:24:54
Вот с утра скрипты работают. Один не обновлял ячейку, когда в диапазоне, сейчас обновляет нормально. Количество выводимой информации в другие ячейки изменилось, сейчас её стало больше. Как это связано знают только разработчики.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 18:08:17
Но похоже заниматься этим не будут. Хотя интересно. Сам квик иногда просит обновиться. Значит работают. Чего-то там делают, меняют. Что тогда меняют и для чего? Казалось бы вот и надо с каждым новым обновлением исправлять то, что уже накопилось. Но нет. Что тогда обновляют?
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 18:03:51
Как SetCell работает это тайна. Но как можно было бы попробовать сделать. SetCell выводит данные сразу, без промежуточного хранения, в нужную часть буфера окна(DrawText, TextOut). Видимая часть окна разбивается на регионы. Если часть буфера окна под вывод данной ячейки в видимой части окна, то InvalidateRect в самом конце SetCell для региона окна для этой ячейки. Как-то так.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 17:42:56
Цитата
Владимир написал: Вы можете здесь плакаться в жилетку сколько угодно, но это Ваши, И ТОЛЬКО ВАШИ проблемы!
Получается проблемы мы решаем только общаясь здесь между собой. А как же тогда достучаться до поддержки? Они же сайт этот сделали для чего-то? Чтобы в нём не участвовать?
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 17:40:47
Цитата
nikolz написал: Посмотрите Выше мое сообщение от 29.12.2022 20:34:14 относительно Вашего теста.
Посмотрел. Я же писал, что пробовал варианты с последним параметром в SetCell и Highlight - ом экспериментировал. Толку нет. В некотрых скриптах помогает, в некоторых нет. Это первое, что я делал. Да что толку-то. Ну исправит на раз, на другой раз не поможет. Проблему надо решать на стороне квика. Как я понимаю в реализации SetCell разрабы не хотят после каждого её вызова делать апдейт всего окна, что в принципе логично. Могли бы обновлять регион окна, где ячейка, но видимо и по этому пути идти не хотят или не умеют. Как именно реализована работа SetCell у них я не знаю. Я вижу только одно, что если ты сделал вызов SetCell, то нет никакой гарантии, что вызов функции приведёт к реальному обновлению части окна, ответственного за эту ячейку, не говоря уже про всё окно. В этом случае со стороны разработчиков возможно было бы просто делать апдейт всего окна целиком по таймеру, но они и этого делать не хотят. Они тупо как-то накапливают изменения видимо не от одного SetCell - а, а от нескольких и по какому-то только им известному алгоритму в какой-то только им известный момент делают апдейт и видимо всего окна таблицы сразу. Если бы работа каждого SеCell - а приводила бы только к обновлению региона окна где ячейка, думаю всё работало бы без проблем, и не надо было бы обновлять всё окно. Но для этого нужен алгоритм, которого у них нет. Этот алгоритм у них работает по ихнему и явно не лучшим образом. Тут со стороны разработчиков требуется работать на уровне оконных API виндовс.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 14:31:31
Цитата
Nikolay написал: Тестовые скрипты уже были предоставлены, поддержка написала "Проблема изучается" и "Будет исправлена" .
Афигеть просто. С 2020 года проблема признана разработчиками и до сих пор не решена! Вот это да! Супер товарищи разработчики! Просто супер! Ну что тут можно ещё сказать? Спасение утопающих - дело рук самих утопающих. Вот крутятся все, как могут. Разработчики хоть бы ответили что-нибудь, а то молчат, как партизаны.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 14:21:32
Далее из-за того, что проблема до сих пор не решена разработчиками квика придётся(хотя не хотелось бы) писать полноценную программы с поиском нужного окна, начиная с окна самого квика, чтобы каждый раз не запускать spy++, искать хэндл, вставлять его в прогу и перекомпилировать прогу с новой константой.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 14:14:30
Цитата
Владимир написал: Alexander , Проблема В СКРИПТЕ! У всех данные прекрасно обновляются, а у Вас нет. Квик тот же, скрипты - разные. Точка.
Ещё раз! И причём для всех кто читает эту тему. Никакой проблемы в скрипте нет и быть не может! Сейчас я вам всем это покажу. Запустил скрипты. Один из скриптов перешёл в режим, когда ячейка не обновляется. Через spy++ я нашёл HWND окна таблицы. Я не поленился и только что написал программу на С++. Эта программа в цикле тупо отсылает сообщение WM_SIZE прямо в окно с найденным мной HWND c периодичностью 50 мс. И всё. Как только запускаешь программу, то таблица начинает обновляться сразу же и отображать ячейку с last синхронно с ТТТ !!!!!!!!!! Останавливаешь прогу и перестаёт обновляться! Запускаешь - начинает! Всё проблема найдена! Как я и писал выше всё дело в обновлении окна. Оно КРИВО реализовано в квике! Криво! Для обновления того, что должен делать квик мне пришлось это делать из вне. Ну не абсурд ли это? Я должен извращаться и обновлять таблицу за квик? Бред какой-то. Неужели нельзя решить этот элементарный вопрос? Вот код с программы:
При отсылке WM_PAINT не обновляется. Только WM_SIZE. Ну можно ещё от мыши воткнуть, будет наверняка работать. UpdateWindow(hWndPar) можно убрать, он WM_PAINT шлёт. Так что вот и всё. И после этого кто-то скажет, что проблема в скрипте? Надо как-то по особенному писать скрипт? Скрипт работатет как надо. Пусть разрабы решают и устраняют свой косяк.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 11:55:19
Цитата
nikolz написал: если хотите выложите скрипт я могу его запустить на демо сервере и сказать Вам конкретно.
Я не буду скрипт отсылать. В этом необходимости нет. Проблема ясна. И она в квике. Проблема в обновлении окна на стороне квика!
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 11:53:32
То, что проблема не в скрипте это же вообще элементарно понятно! Скрипт работает. Я в ТТТ вижу текущее значение last. В таблице в ячейке значение не равно last, там старое какое-то значение. Я бац - ткнул мышкой в табличку и значение поменялось!!! И стало равно значению в ТТТ. Скрипт работает!!! Далее в таблице это обновлённое значение так и висит. А last опять поменялся в ТТТ, а в таблице нет. Опять щёлк в таблицу и оооо, ура!!!, опять значение поменялось и стало равно как в ТТТ. О чёт это всё говорит? Что скрипт нормально себе работает, нормально всё считывает и отправляет в ячейку. Но сама таблица не обновляется. Скрипт за обновление таблицы отвечает только на уровне SetCell, а вот за реальное обновление уже отвечает сам квик. И делает он это криво! Еще раз. Как и при каких обстоятельствах происходит обновление таблицы на уровне оконной процедуры в квике, когда мы не тыкаем таблицу и она просто на экране? Как? Когда в буферах актуальные данные от SetCell? С какой периодичностью они в WM_PAINT реально выводятся в рабочее окно таблицы?
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 11:41:42
Я ранее уже как-то писал и отправлял сообщение прямо в окно. Но я не помню, что именно. Может я слал сразу WM_PAINT или UpdateWindow делал. Тогда это не помогло и забросил это всё. Сейчас я подумал по другому, что надо слать не это, а именно то, от чего срабатывает, т.е. WM_SIZE. Просто может быть, что когда WM_SIZE, то разрабы туда воткнули обновление буферов окна из того, куда сначала SetCell шлёт, а потом уже и InvalidateRect. А когда напрямую WM_PAINT, то обновление окна идёт, но в буферах не те данные ещё. Короче был бы у меня код, что у разрабов, я бы сделал так как надо!
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 11:27:49
Цитата
nikolz написал: Гадать нет смысла, а запустить у себя Ваш скрипт нет возможности.Но ,без обид,уверен, что ошибка Ваша, а не КВИКА.
Сто процентов не у меня! Какая нахрен ошибка? Один и тот же скрипт с утра и с вечера по разному заработал! В скрипте ничего не меняется. Один и тот же код, один и тот же цикл - то выводит, то не выводит. Я скажу так. В курсе вообще как и когда обновление окна происходит надеюсь. WM_PAINT это его дело! Так вот при при щелчке мышки в окне, WM_SIZE срабатывает, его разрабы написали, что он обрабатывает его, при этом все данные от SetCell попадают туда, куда надо - в буфер, а далее InvalidateRect или UpdateWindow, что вызывает WM_PAINT, где и перерисовывается таблица. Тож самое при щелчке мышкой WM_LBUTTONDOWN только срабатывает. Так вот а когда и как срабатывает WM_PAINT для окна, когда мы не щёлкаем, не меняем размер окна, когда окно просто на экране и ничего с ним не делаем? Вот это пусть разрабы и ответят. Об этом я их уже сколько прошу? Нет ответа никакого. Думаю вот если проблема не закроется - писать прогу, чтобы слала в окно сообщение WM_SIZE из вне с определённой переодичностью. Т.е. насильно извне заставить обработать WM_PAINT/ Может так и заработает, но при условии, что все данные от SetCell уже есть в нужном буфере. А если они не в буфере из которого идёт обновление таблицы, а "болтаются" неизвестно где, мало ли как у них там это реализовано?, промежуточные буфера, очереди и прочее, тогда ничего и так не получится!
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 11:06:45
Цитата
Nikolay написал: Пять аргументов передается если тип колонки таблицы число.Вы я приводил простейший пример, приводящий к замедлению обновления таблицы для светлой темы терминала. На темной теме тот же скрипт работает плавно.Уже давно добавил Highlite при выводе в светлой теме, т.к. ждать решения разработчиков долго. Ну и отказался от частых обновлений таблиц. Затратное это дело в терминале.
Вот тоо, что при разных темах квика таблицы по разному обновляются вам ни о чём не говорит? При чём здесь скрипт? В том и дело, что ни причём! А вот тема причём! Какого хрена смена темы влияет на результат работы вывода скрипта? Вот сюда надо копать, а не искать проблемы в скрипте! Я и Hightlite пробовал, иногда помогает, но всё тоже самое, добавишь код или изменишь код - перестаёт. В одном скрипте Highlite поставил удачно - помогло, это в тот где много выводит и считает. Сейчас помогает через раз. Бывает в sleep() секунды ставишь и ничего не обновляет, пока не ткнёшь в таблицу. Ну и причём здесь скрипт? А отказываться от частых обновлений почему должны? Таблицы квика обновляются все как положено и даже все стаканы как угорелые меняются.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 10:59:57
Цитата
Владимир написал: Весь этот ужас вроде:SetCell(tbl.t_id, LevNum + 1, FUT, tostring(price), 1)я даже смотреть не хочу. Навскидку: вот мои пара операторов для прорисовки таблицы:SetColor(T,a[0][9],-1,k,l,-1,-1);SetCell(T,a[0][9],0,d(i));То есть у меня в SetCell четыре аргумента, а здесь их пять.
В чём ужас? В 5-м параметре? Я могу его убрать. Это ничего не меняет! Скинул то, что было на данный момент. Я и ранее и сейчас как только не пробовал. И стринг в таблице и 4 параметра и доубл таблица и 5 параметров, и стринг таблица и 5 параметром, причём 5-й тоже число, что и 4-й, и не то, и наоборот доубл таблица и 4 параметра. Всё это ничего не меняет абсолютно. То обновляет, то нет. При замене может начать обновлять или наоборот если обновляло - перестать. Иной раз скрипт работает не обновляет. добвил коду или что-то чуть изменил, запускаешь, всё начало обновлять.
Я не могу убрать цикл. При попадании в диапазон цен я вывожу текущий last для информации и показываю его напротив текущего диапазона. При этом так же при измениении last считаются и финрезультаты по диапазонам и тоже выводятся в нужные ячейки. А при выходе за границы текущего, вот тут уже начинаются действия(buy/sell - пока в тесте). Короче без цикла никак. Да и вообще весь скрипт - это сплошной цикл. Если вне всех диапазонов, то цикл while в main() и тоже вывод в ячейки, при попадании в новый диапазон - опять вызов функции и крутимся там с выводом до тех пор, пока из него не выйдем.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 10:42:31
Цитата
nikolz написал: Проблема в Вашем скрипте . Возможно у Вас внутренний цикл блокирует обновление таблицы.
Проблема не в моём скрипте абсолютно! Ничего нигде не блокируется. Тупо чтение last, тупо вывод, какое блокирование. Скажу больше. Вечером накидал простейший скрипт. В нём вообще ничего нет, кроме чтения last и вывод в ячейку. Таблицы. Всё выводит просто идеально. Даже без всяких задержек sleep(). Я пытался сделать так, чтобы он перестал выводить, но что я только не делал, и ячейки добавлял и сетколоры и циклы вставлял дополнительные, короче много чего. Мне так и не удалось сделать так, чтобы скрипт перестал обновлять ячейку. Всё работала как часы. В SetColor использовал 4 параметра, не 5, так как в в таблице стринг поля. Потом я добавил в SetCell последний числовой 5-й парметр - перестало обновляться. Сделал всё так же в своих скриптах. И у меня после этого стало всё наоборот. Тот диапазон, который не обновлялся - стал обновляться, а тот который обновлялся - перестал обновляться. Делаешь наоборот - меняется. Но даже когда начинает обновляться допустим в одном диапазоне, добавляешь код в скрипт, и даже не в цикле, и всё ломается - перестаёт обновляться. Хоть как ты SetCell используй. Ещё раз - от скрипта не зависит, зависит от времени выполнения участков кода.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
29.08.2023 10:31:47
Цитата
nikolz написал: Выше я выкладывал скрипт, который тестировал. И все там обновляется.
С утра запущены 4 скрипта абсолютно одинаковые. Выставлены разные переменные просто. Все 4 скрипта сейчас идеально всё выводят в ячейку и показывают last синхронно с ТТТ. При этом код сейчас крутится в вышеприведённом цикле(так как last в определённом диапазоне). При выходе из этого диапазона идёт выход из цикла и из функции и попадаем в main() в цикл while(так как уже в другом диапазоне last). Там во while тоже идёт вывод в ячейку last, но только уже в другую и нихрена уже ничего не выводит! Щёлкнишь мышкой по строке - данные обновятся. Или размер окна дёрнешь - обновятся. Опять попадает last в нужный диапазон, опять вызов функции и в repeat цикл и опять всё обновляется. Вчера было всё НАОБОРОТ!!! while обновлял ячейку, repeat нет.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
28.08.2023 21:16:28
Цитата
nikolz написал: Если желаете решение то выкладывайте пример.
Да какой пример? Пример огромный, как я его сюда весь выложу? Я же говорю, всё элементарно. Цикл. В цикле читается ТТТ, поле last выводится в одну и ту же ячейку. Один и тот же скрипт может то вывожить, то не выводить, с одной задержкой к конце цикла выводить, с другой задержкой не выводить. Вот сейчас 4 ОДИНАКОВЫХ скрипта работают, разница только а начальных переменных. И всё. Один обновляет ячейку, 3 нет. Тот, что обновляет при выводе в другую ячейку перестаёт выводит. Меняя задержки можно добиться вывода, но стоит что-то добавить или убрать(код) из цикла и опять может либо выводить, либо не выводить. Вот ниже часть, которая сейчас не выводит: repeat price = tryInt(getParamEx(ClassCode, SecCode, "LAST").param_value) OfferPrice, BidPrice = getPrice() if not OfferPrice then is_run = false return end
if OfferPrice > Max or BidPrice < Min then break end
if price ~= oprice then --- ячейку для вывода текущего значения фьючерса в диапазоне устанавливаем значением фьючерса SetCell(tbl.t_id, LevNum + 1, FUT, tostring(price), 1) local finres = getLevelsSum() + LevelsFinRes(price) + getCloseSum() if finres ~= 0 then SetCell(tbl.t_id, LevelsCount + 3, FRA, tostring(finres), 1) --- +/- финансовый результат общий end end --- sleep(1000) oprice = price until is_run == false
Этот цикл внутри функции, которая внутри while, который в main() Когда внутри этого цикла крутится - ничего сейчас не обновляется. Бывает я даже в другую часть скрипта код добавлю или убавлю и тогда начинает когда внутри этого цикла выводить или наоборот перестаёт выводить если сначала выводило. Когда из этого цикла вывожу в основной while, то там тоже вывод в ячейку, сейчас он выводит там, а бывает наоборот всё меняется местами, во while перестаёт выводить Короче это от скрипта вообще не зависит, это зависит от кода, сколько его и за сколько времени какая часть кода выполняется. Если это время как-то согласовывается со временем обновления таблицы у квика, то обновляется, если не попадает в какой-то диапазон, то всё. У меня многие таблицы есть большие, обновляются без проблем, но там много выводов и в разные ячейки и всё это в перемешку с вызовами функций.
Обновление пользовательской таблицы/окна
Пользователь
Сообщений: Регистрация: 09.09.2022
28.08.2023 15:01:09
В очередной раз поднимаю тему. Прошу ответить разработчиков почему до сих пор ничего не сделано для решения данной проблемы. Ещё раз. Есть таблица. Производим обновление ячейки или ячеек в цикле. Данные берутся с ТТТ(в данном случае цена последней сделки) и выводятся в таблицу. В ТТТ данные меняются как положено. Никакого обновления ячейки в таблице на экране монитора НЕ ПРОИСХОДИТ!!! Бывает, когда добавишь или убавишь код в скрипт обновляться начинает. Или поставишь задержку в цикле, подобранную начиная с 10 миллисекунд и до тех пор пока не начнёт обновляться синхронно с ТТТ. Потом запускаешь скрипт повторно и уже опять ничего не обновляется. Меняешь задержки, бывает и до секунды ставишь и ничего не обновляется. А бывает вообще никаких задержек не ставишь и всё обновляется. Скрипт может быть любой, не важно какой. Везде так. Цикл. Вывод и всё. Для того, чтобы точно обновилась таблица надо либо изменить размер таблицы вручную, либо ткнуть на строку в таблице, но только на любую новую строку, а не на ту, что уже текущая. Вот и что делать предлагаете? Без конца сидеть и менять размер окна таблицы? Или без конца тыкать по строкам? Ну это же бред какой-то!!! Все таблицы квика нормально обновляются. Что там не так у вас работает? Или напишите хоть принцип как и когда при каких условиях у вас происходит обновление таблиц пользователя. Ну в конце-то концов проблему надо же как-то решать. Задолбало уже просто. Пишешь, пишешь и ничего не обновляется. То обновляется то нет. Проблема на стороне квика и её решить можно 100%.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
03.08.2023 15:51:41
Цитата
БорисД написал: Я уже писал что этот сайт при отсутствии разработчиков ( а их здесь нет от слова совсем ) нужного уровня необходимо перевести на другую площадку .... ну например на а они глупцы даже этого понять не могут. ............... Таких программистов нужно увольнять пачками и не принимать на работу от слова " не при каких условиях " ..................... к сожалению они работают здесь и на этом сайте и поэтому мы получаем от них ответы типа : ............................ ну вообщем ответы мы от них уже все читали и не буду их здесь вставлять.
Тут дело скорее всего не в разработчиках программы квик. Разработчики программу написали, она используется и брокерами и клиентами. Разработчики думаю своё дело знают. А вот организационные вопросы это уже не дело программистов, а дело других людей кто за эту организацию отвечает. И вот организационная работа оставляет желать лучшего. По хорошему руководству компании надо бы всерьёз задуматься над этим вопросом. Поувольнять тех кто за это ответственен и нанять толковых людей. Ну это же не дело совсем! Программа такого уровня и так обслуживается! Поразвели одних менеджеров за столько лет, а толку полный ноль.
Вон оно как оказывается))) Оказывается всё уже обсуждалось ранее!!! И я тут пытаюсь решить тоже самое что и тогда решали. И с тех пор техподдержка ничего не сделала? Вот если бы разрабы закрыли вопрос по этой теме: , то и не пришлось бы эту тему здесь поднимать заново!!! Одни и те же вопросы поднимаются через ГОДЫ!!! Это как вообще такое, а?
Лимиты
Пользователь
Сообщений: Регистрация: 09.09.2022
28.07.2023 23:13:23
Попробуем раскачать тему. Я вот как-то спрашивал брокера Открытие про всякие там ГО на разные вещи. Среди разных ответов брокера была такая фраза, что типа у опционов БГОНП будет больше чем БГОП. Ну вроде как логично. Раз непокрытая, продаём типа, значит и больше БГОНП. Но потом тогда заметил, что это не так. БГОП > БГОНП. Вот только что просмотрел ряд опционов, причём и на покупках и на продажах у них у всех БГОП > БГОНП. Тут встаёт вопрос, что считается за покрытую позицию, а что за непокрытую и когда какое ГО применяется в каких ситуациях? Толи непокрытая это чисто шорт-продажа опциона, но тогда почему у опциона, который покупаем есть поле БГОНП? Мы же не продаём, а покупаем, а поле БГОНП есть. Или покрытая это когда например продали колл и купили фьючерс? Но тогда БГОП опциона должно быть меньше БГОНП, а оно почему-то больше. Почему? Или это суммарное ГО на позицию опцион + фьючерс? И если так, то почему БГОП это поле относится к опциону раз это суммарная штука?
Я вроде бы изначально объяснил - возьмите таблицу с биржи и формируйте по ней код фьючерса Для тех, кто в танке, объясняю на пальцах: Код базисного актива (поле "C") Код базисного актива на срочном рынке Название базисного актива
GZ
GAZR
ПАО "Газпром" (о.а.)
SP
SBPR
ПАО Сбербанк (п.а.)
SR
SBRF
ПАО Сбербанк (о.а.)
Делайте , как говорю, и будет Вам счастье.
Ну ё-маё!!! Я уже сто раз написал же. Что я именно так и делаю, причём именно с самого начала. Все эти GZ, SP, SR ... и т.д. я и использую! Они у меня в качестве шаблона выступают, я же писал, вот код если сразу кто не понял о чём я: for k, v, z in string.gmatch(longStr, Str .. "(%u)(%d)") do Mass[ m ] = k .. v .. z m = m + 1 end где в Str это передаётся для формирования полного шаблона. И всё на ура ищется без всего лишнего. Str передаётся в функцию. Этот код внутри функции, которая вызывается и принимает все шаблоны поочерёдно. На выходе массив кодов фьючерсов, по ним из ТТТ вытаскивается всё остальное, что нужно.
Но меня это не устраивает, так как эти шаблоны приходится ЗАДАВАТЬ! Сегодня есть акция и на неё фьючерс есть, завтра взяли и фьючерс убрали. А после завтра вообще добавили новых, которых и в помине не было. Такое уже было. А я хотел бы написать скрипт один раз, чтобы он универсальный был и более в него не лазить, для этого и надо не привязываться к этим шаблонам, а сразу из списка выделять.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
27.07.2023 21:46:37
Цитата
nikolz написал: покажите, где для фьючерса сбербанка и газпрома код не совпадает.Код базового актива у сбербанка SR и SP, а у газпрома GZ.У какого фьючерса этих акций иначе?
Газпром Акции GAZP, фьючерсы идут GAZR-9.23 и т.д., код базового актива в ТТТ - GAZR!!! Вот тут уже просто жесть какая то!!! Базовый актив фьючерса не GAZP, а GAZR!!! Сбербанк Акции SBER, фьючерсы идут SBRF-9.23 и т.д., код базового актива в ТТТ - SBRF!!! Вот тут уже просто жесть какая то!!! Базовый актив фьючерса не SBER, а SBRF!!! А вот если берём например Норникель, то там всё ОК, Акции NLMK и базовый актив фьючерса тоже NLMK. Так вот по большинству из списка акций, на которые есть фьючерсы все ОК и б/а фьючерсов совпадают как по логике вещей оно и должно бы быть, но такие как Сбер, Газпром, МТС и ещё чего-то там портят всё картину и усложняют элементарный алгоритм отфильтровки. Спасибо гениям с Мосбиржи за такие сюрпризы.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
27.07.2023 21:31:10
Цитата
Вадим Никитин написал: Действительно, проверил, довольно много таких, у которых не совпадает.
Вот это и хреново. Писаки на Мосбирже только усложняют элементарные вещи.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
27.07.2023 21:28:52
Цитата
paluke написал: Ну почти... Посмотрите на сбербанк или газпром. Код базового актива для фьючерса может не совпадать с кодом акций.
Вот и я говорю, что такое было, что не совпадало, сейчас посмотрю, наверняка ничего не поменялось. Я помню, что давно когда писал в основном были совпадения, но какие-то коды не совпадали. Это косяк Мосбиржи, что они так криво всё делают.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
27.07.2023 21:25:13
Цитата
Владимир написал: А вот что "скриптов много" - это плохо. Сделать-то, мож, и быстрее, а вот СОПРОВОЖДАТЬ... Лично у меня только один скрипт, и увеличение этого числа не планируется. И насчёт "кодов немного" спорный вопрос: для человека уже пара десятков тикеров почти неподъёмная задача. А в реальности их десятки тысяч.
У каждого свои задачи. У меня есть ряд скриптов по анализу много чего на рынке. Торговля торговлей, а анализ анализом. В анализе и индексы и акции и фьючерсы и опционы. Каждый сам решает, что ему нужно.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
27.07.2023 21:17:15
Цитата
nikolz написал: Можно сделать так:1) получить этот список из списка открытых инструментов.
Вот этого как раз и пытаюсь избежать. Опять список. Выше описал что к чему. Я хочу уйти от заранее заданных списков.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
27.07.2023 21:14:32
Цитата
Nikolay написал: У нас так мало инструментов, что самое простое - это сделать файл с данными и просто прочитать его при старте. Лучше даже сделать его в формате таблицы, чтобы загружать одной командой loadfile.
Я не спорю, что это самое простое. Но меня это простое не устраивает. Задача не пользоваться заранее введёнными данными. Есть возможность получать списки фьючерсов? Есть. Всё. Далее из этой кучи нужно найти все фьючи на акции. Не сопоставляя ни с каким списком, который может взять да измениться. У меня уже так было. И список был. Прошло время, долго не пользовался скриптом. Решил использовать. Результат - часть пропала, добавились новые. Оно мне надо, каждый раз сверяться с биржей, что они там убрали, а что добавили,? Мне не надо. Должны быть чисто программные методы отфильтровывания. Этого и добиваюсь. Другое не обсуждается. Если получится - напишу.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
27.07.2023 21:07:28
Цитата
Вадим Никитин написал: 1) Получаете список всех фьючерсов из класса SPBFUT 2) Получаете список всех акций из класса TQBR 3) Проходитесь по всем нужным фьючерсам из пункта 1 (с требуемой датой исполнения и т.п.), доставая из их спецификации код базового актива. Можно например через getSecurityInfo или из ТТТ. 4) Проверяете есть ли такой код в списке кодов акций из пункта 2. 5) Если есть, значит этот фьючерс - фьючерс на акцию. 6) Profit...
Так, вот это уже интересней подход, но я как-то смотрел и коды базового актива нифига не совпадали, сейчас гляну, может и правда такой вариант прокатит.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
26.07.2023 21:22:30
Цитата
Владимир написал: А что, в отдельном файле этого сделать нельзя?
Можно. Где-то так и делаю. Где-то в файле всякие данные, где-то в коде. Скриптов много. Как быстрее, так и делаю. Многие скрипты просто для теста, для визуализации и анализа. Многие написаны и уже не использую. Как-то так. Для торговли я тоже меняю коды на новые после того как инструмент не торгуется. Таких кодов немного.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
26.07.2023 21:13:59
Цитата
Владимир написал: , На кой Вам getParamEx? Список бумаг, которыми ИМЕННО Я собираюсь торговать, не знает никто, кроме меня. ИМЕННО Я и определяю этот список, корректирую при необходимости. Мало ли что там мне подсунут любые утилиты! Может, мне просто не по карману торговать всем тем, что там будет получено в sec_list. Этот список меняется крайне редко, и проще всего, быстрее всего, надёжнее всего делать это "ручками", не прибегая к программированию вообще. А уж "для каждого варианта надо указать шаблон" - это вообще безумие какое-то, не говоря уже про "придётся менять код". А что, в отдельном файле этого сделать нельзя? Вот прям ща у меня там стоит AFU3, GZU3 и т.д. Придёт время - поменяю "U3" на... что там следующее идёт. Это делается за считанные секунды, и совершенно плевать, что там Мосбиржа по этому поводу думает.
Не, я не торговать ими. Будет просто таблица с данными. Просто мониториться текущее состояние по б/а и фьючерсам на них - всем какие есть. Отслеживается ситуация на предмет безубыточной стратегии: покупка базы - продажа фьючерса и наоборот, со всеми входящими - комиссии брокера, ГО, дней до экспирации и прочее. На выходе наблюдаю какой процент прибыли за сколько дней и пересчёт на процент годовых, суммы прибыли, нужное ГО суммарно и прочее. Если что нужно будет торгонуть из пары - для этого отдельный скрипт - ткнул когда увидел, что что-то устравиват и купил/продал.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
26.07.2023 21:06:57
Цитата
nikolz написал: У Вас есть список акций, которые Вас интересуют.
1. У меня нет списка акций. Я его хотел получить именно из списка фьючерсов на акции, которые есть на Мосбирже. Зная список акций я без проблем получаю нужный мне список фьючерсов на акции.
Цитата
nikolz написал: Из таблицы Кодирование базового актива находим код базового актива на срочном рынке
Из таблицы я как раз беру код для шаблона и по нему без проблем нахожу сразу все фьючерсы на данную акцию. Мне не надо их разделять, мне просто нужны все, я получаю массив фьючерсов с их кодами, полное имя если надо - без проблем по коду тоже получаю.
Цитата
nikolz написал: В итоге получите список фьючерсов для акций.
Я его и так получаю, только намного быстрее и полный список.
Цитата
nikolz написал: Если используете колбек onParam, то те коды фьючерсов на которые вы не подписаны никогда не получите.В результате у вас будут коды фьючерсов на акции, на которые вы подписались
Это я не использую, но возможно буду что-то выдёргивать из ТТТ по коду фьючерса, тут может и надо или чтобы в ТТТ фьючерс ужк был или придётся подписываться через ... не помню.. но есть какая-то там функция для подписки.
да точно также из общей кучи нахожу сразу все опционы по шаблону из 2-х букв в начале и шаблонов на цифры и буквы в конце.
Задача моя была найти все фьючерсы на акции их коды и коды соответствующие им базовых активов - т.е. коды акций для этих фьючерсов. Описал просто вначале только первую часть ,так как вторая получается из первой. Найти надо было из списка фьючерсов, никоим образом не ссылаясь на коды акций, на часть кода фьючерса по акции. Просто дано: список фьючерсов. Всё. Более ничего не дано. Надо найти все фьючерсы на акции. Без дополнительных параметров входных. Это так не решается. Об этом написал. Если бы были подкоды как писал выше, то из общей кучи выдёргтвалось бы всё на раз-два. А все эти переборы и сопоставления и так делаются, без этого никак, вот о чём написал.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
26.07.2023 19:04:45
Цитата
nikolz написал: Сейчас уже точно не помню, но вроде бы делал какой-то листинг и по нему формировал фьючерсы . При этом учитываешь какой квартал, так как для разных кварталов разные правила. Все делается автоматом.
У меня есть строка, полученная так: sec_list = getClassSecurities("SPBFUT") и впринципе её раскидать на фьючерсы разные проблем нет никаких, хоть по кварталам используя "Спецификации коротких кодов фьючерсных и опционных контрактов на срочном рынке" c Мосбиржи: Но в любом случае для отсева из всей этой общей кучи, чтобы отделить только фьючерсы на акции, придётся задавать что-то, связанное с акциями. Я для этого использую шаблон на каждую акцию и ищу через string.gmatch(longStr, Str .. "(%u)(%d)"), где longStr = sec_list, Str = шаблон((AF) например для Аэрофлота). Но вот сформировать тоже самое не задавая шаблон(не привязываясь к акции) никак не получится, нет такой возможности.
написал: Подскажите кто знает если. С помощью getParamEx есть ли параметры в ТТТ такие, чтобы отсортировать фьючерсы на акции от остальных фьючерсов. В квике по названию вроде ничего не подходит. Или как-то такое сделать по другому. Т.е. я получаю: sec_list = getClassSecurities("SPBFUT") и потом мне из всей этой кучи надо выделить только фьючерсы на акции. По класскоду у всех "SPBFUT", что у индексных, что у товарных, что у акционных. Пока вижу только вариант через string.gmatch и шаблон, но тогда для каждого варианта(смотрим на мосбирже все фьючи на акции) надо указать шаблон. Так пока делаю, но это длинно, для каждой акции свой шаблон. И спиок на бирже могут поменять и придётся менять код. Типа бы какого-нибудь не только класскоде, а ещё бы и подкласса иметь на фьючерсы на акции.
Когда-то давно делал так. На бирже находим правила формирования названия фьючерса. Далее по имени нужных нам акций формируем имена фьючерсов. При этом еще учитываем правило формирования даты фьючерса. Все вроде бы работало правильно.
Ну я типа так и делаю. Только даже проще. Мне так же приходиться как и у Вас написано "по имени нужных нам акций" определять шаблон и по нему мне из всей кучи находит СРАЗУ ВСЕ доступные на данный момент фьючерсы на эти акции, без всякого " правило формирования даты фьючерса". Думал может можно как-то упростить, так как на каждую акцию приходится задавать свой шаблон(Аэрофлот - AF, Газпром - GZ, и т.д).Но список может меняться и приходится постоянно следить и корректировать код, а этого хотелось бы избежать. Это можно было бы легко делать если бы например Мосбиржа помимо кода на фьючерсы "SBPFUT", например ввела бы подкоды. Для фьючерсов на акции свой подкод, для валюты свой, для товаров свой, для процентных свой и для индексных свой. Но такого видимо нет.
getParamEx
Пользователь
Сообщений: Регистрация: 09.09.2022
24.07.2023 15:25:47
Подскажите кто знает если. С помощью getParamEx есть ли параметры в ТТТ такие, чтобы отсортировать фьючерсы на акции от остальных фьючерсов. В квике по названию вроде ничего не подходит. Или как-то такое сделать по другому. Т.е. я получаю: sec_list = getClassSecurities("SPBFUT") и потом мне из всей этой кучи надо выделить только фьючерсы на акции. По класскоду у всех "SPBFUT", что у индексных, что у товарных, что у акционных. Пока вижу только вариант через string.gmatch и шаблон, но тогда для каждого варианта(смотрим на мосбирже все фьючи на акции) надо указать шаблон. Так пока делаю, но это длинно, для каждой акции свой шаблон. И спиок на бирже могут поменять и придётся менять код. Типа бы какого-нибудь не только класскоде, а ещё бы и подкласса иметь на фьючерсы на акции.
Как запустить скрипт qlua из командной строки?
Пользователь
Сообщений: Регистрация: 09.09.2022
15.07.2023 17:03:29
Цитата
Владимир написал: , FAR и как оболочка куда удобнее Total Commander, хотя идеология обоих передрана у дяди Нортона, но редактор FAR - это просто НЕЧТО! Макросы через Ctrl+"." настолько дико расширяют возможности, что ничего другого я и видеть не хочу, не то что искать. А что такое "приличный форматтер именно под Lua"? Я отлаженные блоки и функции просто схлопываю в одну строчку, чтобы не мельтещили перед глазами, с оставшимся работаю. Очень удобно, а полностью отлаженный скрипт состоит из одной строки.
О, да, как только вышел Нортон - это было нечто! Сразу жизнь веселей пошла. А, так то и в Totale много всего, использую только то, что надо. И идея конечно же Нортоновская у них.
Как запустить скрипт qlua из командной строки?
Пользователь
Сообщений: Регистрация: 09.09.2022
15.07.2023 17:00:16
Цитата
Владимир написал: А что такое "приличный форматтер именно под Lua"
Ну нормально форматирует Lua текст, ну там ровно else под if отображает. Некоторые после формата всего файла некорректно это делают, "промахаваются".
Как запустить скрипт qlua из командной строки?
Пользователь
Сообщений: Регистрация: 09.09.2022
15.07.2023 16:10:01
Цитата
swerg написал: Для связи между процессами есть библиотека lua_share
Это не плохо, может оно кому такое и нужно. Очереди, списки хорошо если нужно такое в реализации алгоритма, а так обмен данными между скриптами, и даже работающими в разных квиках от разных брокеров просто без очередей и списков организовать можно разными способами и это не сложно. Но на заметку взял, может пригодится.
Как запустить скрипт qlua из командной строки?
Пользователь
Сообщений: Регистрация: 09.09.2022
15.07.2023 16:02:58
Цитата
swerg написал: По пункту б) как пример для начала есть
Я вот бегло посмотрел это. Там пишете, что: "Мне всегда хотелось иметь под рукой консольный аналог lua.exe прямо в папке с QUIK, да еще такой, чтобы можно было выполнять непосредственно скрипты, предназначенные для QUIK, т.е. с возможностью вызова функций QLua." Но я что-то не понял, а откуда там такая функциональность? Я там увидел вроде как Lua интерпретатор Lua скрипта из файла. Вижу, что файл открывается, далее в цикле читаются аргументы переданные вместе с именем файла и пишутся в созданную в стеке таблицу и далее создаётся глобальная переменная и ей присваивается эта таблица(qlua_exe.cpp). В qlua_functions.cpp вы создаёте набор своих функций, наподобие квиковских(message, print, sleep, getWorkingFolder) и регистрируете их в RegisterQLuaFunctions(L).Так же там написали функцию const char *luaL_tolstring(lua_State *L, int idx, size_t *len), зачем? Она же уже есть в Lua. Вобщем я не понял, как Вы собираетесь вызывать функции QLua для работы с таблицами, например. Всё, что я понял, вы ввели свои функции (message, print, sleep, getWorkingFolder) и предлагаете их использовать в запускаемом скрипте, так? Но как таковой возможности вызвать сами функции Qlua нет.
Как запустить скрипт qlua из командной строки?
Пользователь
Сообщений: Регистрация: 09.09.2022
15.07.2023 15:44:32
, поскольку выяснилось, что перезагружать скрипт не надо в квике,это многое меняет дело. Пишу себе в VSC, сохраняю когда нужно, переключаюсь на квик и просто запускаю. Не так это сложно, хотя запуск скрипта из самой студии конечно было бы ещё проще и быстрее, ну да ладно. По поводу редактора FAR Manager ничего не скажу, FAR - ом как-то давно-давно пользовался совсем ещё с времён перехода с DOS на Windows, сейчас у меня Total Commander, а вот VSC, там нашёл приличный форматтер именно под Lua, от Tencent китайской, он форматирует хорошо и на лету и файл целиком, а мне это и надо было, чтобы можно было форматировать файлы целиком, ранее писанные в блокноте. Может и другие есть редакторы, которые хорошо формитируют именно Lua, но меня этот вполне себе устроил, и плагин этот настраивать можно при желании - настроек куча.
Как запустить скрипт qlua из командной строки?
Пользователь
Сообщений: Регистрация: 09.09.2022
15.07.2023 15:31:59
Цитата
Владимир написал: Кстати, вовсе не обязательно "руками постоянно сохранять скрипт, в квике удалять старый скрипт, загружать новый, опять его запускать"
и
Цитата
Игорь М написал: Зачем вы удаляете в Квике старый скрипт и загружаете новый?
Да, действительно не надо его постоянно удалять и заново загружать. А я вот так тупил всё это время. Я просто начинал с QPILE и там постоянно надо было скрипт загружать локально. Вот я привык к этому. Думал, что и Lua скрипты квик по аналогии требует заново загрузить после сохранения изменений. Думал, по аналогии, квик раз загрузил его первый раз когда я его выбрал из папки, то он его хранит открытым и для замены надо его удалить и заново загрузить новый, квик откроет файл и будет держать открытым. И вот даже не удосужился проверить на практике, а надо ли действительно загружать новую версию. После ваших удивлений проверил - действительно не надо, достаточно просто сохранить изменения и всё, ну и имя я естественно не меняю и файл у меня место хранения не меняет. Так что в этом плане спасибо, а то так и тупил бы с этим дальше.
Как запустить скрипт qlua из командной строки?
Пользователь
Сообщений: Регистрация: 09.09.2022
15.07.2023 13:02:43
Цитата
Владимир написал: , Вот скажите: зачем Вам всё это надо? Зачем связываться с библиотеками, что-то компилить, что-то собирать, разбираться с тем, как работает Квик, перелопачивать это всё с выходом очередной версии? КАКАЯ РАЗНИЦА, как работает Квик? Обилие глюков и обилие версий позволяет уверенно предположить, что работает всё это ПЛОХО. С другой стороны, это всё же РАБОТАЕТ, более-менее надёжно - система достаточно популярная, и искать что-либо иное просто не имеет смысла: как бы ни был убог Lua, он всё же обеспечивает возможность организации торговли на бирже, а больше от него ничего и не требуется. Юзеру от скрипта тоже почти ничего не нужно - запустил и забыл. И программисту тоже - написал и забыл. Я уже несколько месяцев вообще не прикасаюсь к коду, да и до этого полгода-год рихтовал лишь СВОИ алгоритмы торговли, "техника" уж тыщу лет работает безукоризненно: нужно было лишь сообразить, что не надо заниматься разной фигнёй с потоками, и всё, что можно, делать в потоке main - и всё, глюки закончились. И теперь мне плевать, что там за версия Квика, что за версия языка, что там за библиотеки водятся и на всё остальное. Зачем искать на свою задницу приключений?
Всё верно Вы пишите. Но у меня тоже всё просто. Всё, что я хотел, я описал уже выше. Повторю. Я хочу писать код Lua в нормальном редакторе(подсветка, форматирование). А именно в Visual Studio Code. Хочу из среды сразу запускать на выполнение скрипт и смотреть как он работает - вывод во встроенный терминал среды VSC. Всё. Более мне ничего и не надо. Чтобы такое сделать, VSC поддерживает плагины для запуска редактируемого кода, но это делается естественно через запуск внешней программы, которой в качестве параметра передаётся наш код. Поэтому мне нужен функционал от квика, чтобы он мог выполнить мой скрипт из командной строки. Не знаю может такое квик или нет, но сделать это возможным не представляется сложным для разработчиков квика. А так как сейчас, так мне надо мой код сохранить, потом загрузить его в самом квике и запустить, и результаты работы я вынужден смотреть в стороннем отладчике, который должен каждый раз запускать, да ещё и каждый раз настроить фильтр в нём, чтобы он не принимал чужие отладочные выводы. Я хочу более простого подхода. Зачем мне все эти лишние телодвижения? Я и так уже написал программу на C++, которая сам запускает квик, ждёт появление окна логина, вводит логин и пароль, запускает программу DebugView, получает ID процесса квика, настраивает фильтр в DebugView по этому ID, сама отвечает на вопрос диалогового окна не обновлять инструменты и нажимает в окне на OK. Всё это упрощает мои действия, которые мне приходилось бы делать руками. Вот и тут я не хочу руками постоянно сохранять скрипт, в квике удалять старый скрипт, загружать новый, опять его запускать, иногда можно запариться и не удалить старый и запустить, или внести изменения в скрипт и забыть по запарке сохранить и в квике загрузить тот же самый предыдущий скрипт. Конечно это уже делается на автомате и практически без таких ошибок, но иногда по запарке можно и накосячить на голом месте. А зачем всё это надо? Есть же нормальные простые решения для этого. Нужно только разработчикам обратить на это внимание и упростить жизнь программистам. А раз этого нет из коробки, вот и начинаем думать, а можно ли как то это в принципе обойти. И ещё. Я сейчас пишу даже не какой-то то там алгоритм для торговли. Я всего лишь получаю информацию с таблиц и передаю её в dll, а dll мне открывает потоки и окна, в которых онлайн рисуются позиции по выбранным опционам и базовым активам. И для этого мне по сути вообще и не нужен был бы никакой там их QLua если бы они мне расшарили свой API из qlua.dll и я бы вообще не запаривался бы с изучение этого Lua, а просто вызывал бы те же самы функции, что сейчас вызываю из скрипта на Lua, сразу из C++ программы.
написал: VMLua - это программа и она запускается вызовом lua_pcall, в которой вызываетсясобственно VMLua - эта функция Вот ее тест из sorce code Lua 5.4
Ну тут всё правильно написали про VMLua, что она именно ЗАПУСКАЕТСЯ, а ранее писали, что VMLua РАБОТАЕТ как самостоятельная единица.
Любая программа сначала запускается, а потом работает как самостоятельная единица. Поэтому я и написал - запускается и работает.
Отсюда все и недопонимания возникли. Программа конечно, чтобы начать работать должна быть сначала быть загружена в память, а потом ей должно быть передано управление(call, jmp, return с адресом в стеке, int, может и ещё что есть). Так вот в моём понимании VMLua сначала просто загружена в качестве библиотеки lua53dll и НЕ работает, а работать начинает только тогда, когда нужные функции из неё для компиляции, интерпретации начинают ВЫЗЫВАТЬСЯ, ну или начинает вызываться специальная функция, которая начинает интерпретировать весь скрипт тем же самым образом, но в любом случае библиотека есть и она НЕ работает пока её функции не начнут вызывать. Поэтому Вы всё объединили в кучу - загрузка и передача управления в функцию одной фразой - VMLua уже работает.
написал: VMLua - это программа и она запускается вызовом lua_pcall, в которой вызывается
Где в этой функции вызов lua_pcall?
Это ерунду написал я. Тут имелось в виду обратное.
Как запустить скрипт qlua из командной строки?
Пользователь
Сообщений: Регистрация: 09.09.2022
15.07.2023 11:13:16
Цитата
nikolz написал: Разработчики уже объясняли, что они не дадут SDK (software development kit на С) для разработки пользовательских dll для QUIK. Взамен этого они слепили QLua.dll и внедрили в терминал VMLua.
Ну я вот только от Вас сейчас это услышал. Сами то разработчики вообще самоустранились и не отвечают здесь от слова совсем.