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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 13 След.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Этот комментарий, сугубо, для поддержки QUIK.
---
 Как результат  *  в данной ветке, возникло дополнительное предложение:
 4) На форумах ARQA для комментирующих пользователей ввести месячный лимит трафика, после которого не будет возможность вводить комментарии.
     Значением этого лимита могло быть: <Годовой трафик nikolz> / 12 / 10. Но, конечно, насчет значения лимита, решать ARQA.
     Наличие такого лимита, обеспечило бы:
      - экономию дискового пространства баз форумов;
      - автоматическое модерирование форумов за счет принуждения думать о краткости и четкости текстов, пишущих комментаторами;
      - удобство для читающих комментарии, в которых будет меньше флуда.
Проверка на nil
 
Цитата
Евгений написал:
Еще ньанс: Данная ошибка выскочила всего 1 раз за год бесперебойной работы скрипта.
  Следующий раз, пожалуйста, начинайте с нюансов и указывайте версию QUIK, а также версию QLua. А то вы мозги форуму чуть не свихнули :smile: .
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Цитата
TGB написал:
Вам светит за три года приблизительно следующая сумма: 1000000 * 3,7 * 3,7 * 3,7 - 1000000 - 3*1000000*0,2 = 49000000 руб.
  В приблизительных вычислениях ошибка, но возражения не дождался.
Точно: 1000000 * 4,7 * 4,7 * 4,7 - 1000000 - 3*1000000*0,2 = 102223000 руб. до уплаты налога.
Проверка на nil
 
Цитата
Евгений написал:
Ругается на строчку if getFuturesLimit(FIRM, ACCOUNT, 0, "SUR").cbplplanned==nil then
  Если функция, в которой это происходит небольшая, то выложите ее текст. Трудно определять птицу по заднему оперению :smile:
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
1.
Цитата
nikolz написал:
Я на форуме не только предлагал, но и показывал как это работает у меня.
   Вы опять не поняли.  Я эту ветку создал не для того чтобы обсуждать свои или чужие решения. До сих пор я понимал и решал свои проблемы и при этом пользовался интернетом.
  Если вы читали мой первый комментарий, то в нем написано как можно улучшить QUIK.
2.
Цитата
nikolz написал:
И результаты тестов различных вариантов. https://forum.quik.ru/forum17/topic8426/
 Несмотря на написанное мною в первом пункте, посмотрел и впечатлился:
.
Цитата
nikolz написал:
Смотрим первую картинку.
Нижнее 3 окно в ней - это график прибыль/убыток за 2023 год.
линия зеленая на оси справа показывает положительные 220% -это профит лонг.
линия синяя на оси справа показывает положительные 150% - это профит short
линия белая на оси справа показывает положительные 370% - это профит long+short.
 Сдаюсь :smile: . Таких годовых процентов у меня не было.
Вам мой совет возьмите кредит, ну хотя бы 1000000 руб., ну хотя бы под 20% годовых на 3 года.
Вам светит за три года приблизительно следующая сумма: 1000000 * 3,7 * 3,7 * 3,7 - 1000000 - 3*1000000*0,2 = 49000000 руб.
А может вы уже и сейчас миллиордер :smile: ?
Повторное использование строки
 
Цитата
nikolz написал:
вас так колебет что я повторно написал то, что Вы написали выше?
  Переживаю за то, что много мусора на форуме и могут переполниться его база :smile:
Повторное использование строки
 
Цитата
nikolz написал:
А вы догадайтесь.
   Судя по тому, что вы всегда цитируете сообщения полностью (даже самые длинные), вы, наверное, спамер. Но нельзя исключать с учетом качества выдаваемого вами текста, что вы полуинтеллектуальный робот-спамер :smile: .
Повторное использование строки
 
Цитата
nikolz написал:
Если Вы это сообщение выводите в файл, то пишите сразу в файл. куски сообщения. Каждый новый кусок добавится в конец файлаВ итоге Вам не надо наращивать строки.
  nikolz писатель?  
  Зачем вы пишите, то что было уже написано два раза?:
1)
Цитата
TGB написал:
Почему бы не записывать строку сразу в файл (в системе это буферизуется). Вы проверяли, сколько записей выполняется в файл за 1 секунду, если писать напрямую? Если вы это сделаете, то, возможно, удивитесь.
2)
Цитата
Nikolay написал:
У меня такие потоки для каждой новой записи просто пишутся в файл черезf:write(str..'\n')
  Вы так спамите или не умеете читать :smile: ?
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
1.
Цитата
nikolz написал:
Это делается очень просто. ----------------------Применяю это с момента появления VMLua в КВИКЕ.---------------------Возьмите готовую библиотеку  https://quik2dde.ru/viewtopic.php?id=78 ------------------и используйте всего две функцииCreateEvent и  WaitForSingleObject-------------------Как реализовать очередь есть в документации QLUA  
  Опять вы не поняли. То о чем вы пишите, я у себя реализовал давно, как только начал разбираться с QUIK.
  Сутью 2-го пункта является;
Цитата
TGB написал:
в такой схеме решается тяжелая задача подключения новых версий Lua в QUIK, так как не будет требоваться конфигурирования Lua для многопоточного использования (из-за запуска функций коллбеков в потоке, отличном от потока main, но в контексте пользователя). Подключение новых версий Lua  в QUIK станет в описанной выше схеме рутинной задачей.

2.
Цитата
nikolz написал:
TGB ,
Sleep - это функция, которая останавливает поток и возвращает управление OC.
Что Вы будете модифицировать в ней?
Опять, та же фигня :smile: .  
Я пишу про sleep (это функция QLua):
Цитата
TGB написал:
Это вызов функций обработки коллбеков в видоизмененной sleep с параметрами в нужном формате, считанными из предлагаемых очередей (очереди).
а вы про системную Sleep. Вы, что, не понимаете разницы?

3.
Цитата
TGB написал:
Вы, похоже, очень наивны и полагаете, что разработчики работают за бесплатно? Можно, наверное как то сообразить, что часть комиссии, уплачиваемая брокерам пользователями, идет на зарплату разработчикам, а также в доход акционерам ARQA.
 Где возражения?
Повторное использование строки
 
1.
Цитата
Serge123 написал:
хочется копать вглубь и искать там золотые самородки. До сих пор ничего роботоподобного не сделал...
  Прежде чем копать, наверное, стоит выбрать место для копания. То есть, сначала поторговать вручную, чтобы понять что это такое, но без фанатизма, чтобы не слить весь ваш депозит. При этом надо понимать, что реально работающую стратегию, стабильно, без провалов, приносящую доход хотя бы в 20% (в текущий момент) на годовом периоде, вам никто не предложит. Подумайте, зачем банкам бегать за клиентами с предложениями кредитов под 15% если на фондовом рынке можно заработать 20%. Фондовый рынок, локально, это игра с "псевдо-нулевой" суммой (деньги на нем не создаются а перераспределяются) и если какая то стратегия оказывается выигрышной, а затем получает широкое распространение, то она перестает работать.
  После некоторого периода ручной торговли сделайте простого робота исключительно на QLua, который смог бы вас заменить, а также торговать на истории. И только после этого начните поиск своей стратегии и оптимизацию того, что имеет смысл оптимизировать.

2.
Цитата
Serge123 написал:
На этом форуме могут до кровохарканья обсуждать двойные и тройные очереди, показывать загадочные картинки, от которых рябит в глазах, но ничего действительно полезного не скажут.
 Не согласен (частично). Конечно, на форуме много флуда, но тот же Nikolay написал вам практически все об обработке обезличенных сделок.
Проверка на nil
 
Цитата
Евгений написал:
Подскажите выскочила ошибка: "attempt to index a nil value" на строчку: "if getFuturesLimit(FIRM, ACCOUNT, 0, "SUR").cbplplanned==nil then"Вроде как раз на nil проверяю.  
 У вас getFuturesLimit(FIRM, ACCOUNT, 0, "SUR") равно nil, а его индексировать нельзя.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Мне интересна реакции разработчика QUIK, в лице поддержки, на те пункты, которые мною предлагаются.
--------
 На всякий случай, по пункту 2:
Есть вариант его реализации таким образом. чтобы сохранить существующий интерфейс QLua c QUIK, с тем, чтобы пользователям не надо было изменять существующие скрипты. Это вызов функций обработки коллбеков в видоизмененной sleep с параметрами в нужном формате, считанными из предлагаемых очередей (очереди).
Повторное использование строки
 
Цитата
Serge123 написал:
Тогда посмотрите на кусочек от вывода моего Луа скрипта, который обрабатывал OnAllTrade от 4 января 2023 г.:
  Я согласен с тем, что написал Nikolay.
  Но если вы хотите разобраться с тем как вызываются коллбеки OnAllTrade реально, то в ваш вывод нужно добавить колонку времен вызова этого коллбека (используя функцию QLua os.sysdate() с детализацией до микросекунд).
Повторное использование строки
 
Цитата
Serge123 написал:
В OnAllTrade видел: время на сервере биржи с точностью 1 мкс не меняется, а в файл записалось больше 64 сделок...
    Этот коллбек я до сих пор не использовал. Поэтому пока мне сказать относительно него нечего.
Повторное использование строки
 
Цитата
Serge123 написал:
Тут дело не в том, что есть запись на диск, а в том, что за 1 мкс десятки раз может выполняться оператор
   Где вы обнаружили коллбеки QUIK, вызываемые десятки раз за 1 мкс?
   Не знаю, будет ли для вас это существенно, но одна из моих практических профессиональных специализаций: параллельное программирование и разработка систем реального времени. Возможно я ошибаюсь, но у меня возникло представление, что вы пытаетесь бороться с привидениями, многие из которых у вас не материализуются :smile:.
Повторное использование строки
 
1.
Цитата
Serge123 написал:
Есть строка mess (age), в которой коллбэки накапливают свой вывод, при превышении определённой длины строка записывается в файл.
 Почему бы не записывать строку сразу в файл (в системе это буферизуется). Вы проверяли, сколько записей выполняется в файл за 1 секунду, если писать напрямую? Если вы это сделаете, то, возможно, удивитесь.
  Вообще то, если для вас важна эффективность, то имеет смысл, прежде чем заниматься оптимизацией,  выяснять: а нужно ли это делать. Эффективнее всего выполняется то, что ничего не делает :smile:.

2.
Цитата
Serge123 написал:
Мне кажется, что ничего не случится, если извне (из длл) строка будет изменена, ведь, если строка не находится внутри таблицы, вычисление хеша от неё не нужно?
  Если нет желания заниматься длительной научно-исследовательской деятельностью, то для взаимодействия dll и Lua надо использовать только C API.
------
  И «перегруженный» анекдот про чукчу:
Чукча и геолог ловят рыбу зимой на льду. Геолог приехал на рыбалку на снегоходе, а чукча пришел на лыжах. Вдруг видят направляющегося к ним голодного белого медведя. Ружья нет.
Чукча хватает лыжи и начинает их надевать. Геолог:
- Бесполезно. Все равно ты не сможешь бежать быстрее медведя.
- А мне и не надо бежать быстрее медведя. Мне достаточно того, что медведь сюда добежит раньше, чем ты заведешь свой быстро бегающий снегоход.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Цитата
Constantin написал:
Как я понимаю человек предлагает вызывать колбеки в потоке Lua-скрипта.
  Один из возможных вариантов предлагаемой обработки событий Qlua:
  1)  вместо регистрации функций обратного вызова, регистрация соответствующих потокобезопасных очередей событий (возможно, с теми же именами);  я бы сделал эти очереди (можно, в принципе, обойтись и одной) циклическими, с указанием их длины при регистрации, но не более некоторого значения;
  2)  вместо sleep, служебная функция с тем же именем ожидания либо истечения интервала времени (как в sleep), либо появления данных в очередях событий (с выдачей списка непустых очередей);
  3)    добавление функции чтения очередей событий (их параметров).
  Эта схема реализует рекомендованную ARQA обработку параметров событий в main (смотрите "Использование Lua в Рабочем месте QUIK"), с тем, чтобы не было проблем синхронизации в скриптах.  Кроме того, в такой схеме решается тяжелая задача подключения новых версий Lua в QUIK, так как не будет требоваться конфигурирования Lua для многопоточного использования (из-за запуска функций коллбеков в потоке, отличном от потока main, но в контексте пользователя). Подключение новых версий Lua  в QUIK станет в описанной выше схеме рутинной задачей.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Пропустил:
Цитата
nikolz написал:
В каком основном потоке ?
  Есть такой документ разработчика QUIK: "Использование Lua в Рабочем месте QUIK". Найдите в интернете и почитайте.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
1.
Цитата
nikolz написал:
Вам не нравиться ,что  в основном потоке терминала выполняется:запуск всех Lua Скриптов пользователя.--------------И что в этом плохого?
  Это мелочь, но при условии, что пакеты в скриптах подключаются в потоке main. Иначе одновременный запуск нескольких скриптов выполняется долго (из-за того, что это это выполняется в одном потоке).

2.
Цитата
nikolz написал:
Мое мнение:Колбеки не запускаются, а вызываются.
 Пусть для вас вызывается, а для меня запускается  :smile: . Кому непонятно, что это одно и тоже?

3. По остальной части вашего комментария:
   Пользовательские индикаторы в графиках обрабатываются в основном (единственном) потоке. Это медицинский факт. Если вы не знаете как это проверить экспериментально, то я вам расскажу как это сделать. дополнительно, в основном (единственном) потоке запускаются коллбеки всех скриптов пользователя, а также вызываются коллбеки всех таблиц QUIK, созданных пользователем. Наверное, понятно и ежу, что в текущий момент в одном потоке все это будет выполняться последовательно. Это значит, что на архитектурном уровне QUIK в  текущий момент существует зависимость по выполнению для его различных функциональностей, что является некоторым дефектом. Кому это непонятно?

3.
Цитата
TGB написал:
Вы, похоже, очень наивны и полагаете, что разработчики работают за бесплатно? Можно, наверное как то сообразить, что часть комиссии, уплачиваемая брокерам пользователями, идет на зарплату разработчикам, а также в доход акционерам ARQA.
 Где возражения?
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Цитата
VPM написал:
получается что нужно отказаться от отдельного потока main и выполнение main разместить в основном потоке , при этом создав "активную очередь событий".
  Я этого не писал.
-------
  Вообще то, не хочу вас, обидеть, но в моем сообщении пункты 1) и 2) написаны не для либеза. Думаю, что разработчикам QUIK понятно о чем я пишу в этих пунктах.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
1.
 
Цитата
nikolz написал:
Потоков уже 8.
  Где вы у меня прочитали, что все запущенные пользовательские скрипты работают в одном потоке?
У меня написано:
Цитата
TGB написал:
В текущей версии в одном основном потоке обслуживаются:
- запуск всех Lua-скриптов пользователя;
- запуск коллбеков всех Lua-скриптов пользователя;
- обработка всех коллбеков таблиц QUIK (это не таблицы Lua);
- обработка всех индикаторов пользователя.
Вам до сих пор неизвестно, что в QUIK существует служебный, так называемый основной единственный поток, выполняющий то, что перечислено мною выше?
Когда же вы научитесь читать чужие сообщения?

2.
Цитата
nikolz написал:
Разработчики дали решение этой проблемы. Оно прекрасно работает. Так как QUIK - это бесплатное приложение, то дареному в... не заглядывают. сделать что-то еще - это их право, но не обязанность.
 Вы, похоже, очень наивны и полагаете, что разработчики работают за бесплатно? Можно, наверное как то сообразить, что часть комиссии, уплачиваемая брокерам пользователями, идет на зарплату разработчикам, а также в доход акционерам ARQA.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
В Новосибирске, когда то была хорошая школа IT-шников. И что-то, наверное, от нее осталось. Я надеюсь, что архитектором QUIK в текущий момент является один из выпускников этой школы.
   В QUIK все равно будут вноситься изменения (чтобы оставаться «наплаву»). И мне видится, что улучшить QUIK, помимо исправления существующих, неизбежных ошибок, можно внеся в него следующие изменения/дополнения:
1) В текущей версии в одном основном потоке обслуживаются:
- запуск всех Lua-скриптов пользователя;
- запуск коллбеков всех Lua-скриптов пользователя;
-- обработка всех коллбеков таблиц QUIK (это не таблицы Lua);
-- обработка всех индикаторов пользователя.
 Притом, что в текущий момент у подавляющего количества ПК много ядер ЦП, написанное выше явный перебор. Мне, представляется, что нет проблем перечисленное выше обрабатывать в отдельных потоках. Иначе, это ограничение пользователя в использовании возможностей его ПК.
2) Интерфейс  взаимодействия QUIK c Lua-скриптом пользователя, реализованный в виде коллбекков, предполагает многопоточный режим использования Lua,. порождающий неприятные проблемы параллельного программирования (для решения которых сами же разработчики предлагают использовать потокобезопасную очередь между коллбеками и потоком main). Мне представляется, что имеет смысл вместо коллбеков использовать активную очередь событий, При этом не требуется использовать Lua в многопоточном, редко используемом и не очень стабильном режиме. При этом не будет проблем с подключением новых версий Lua. Более того, скрипты пользователя будут выполняться несколько быстрее из-за отсутствия синхронизации, требуемой в многопоточном варианте использования  Lua.
3) В QUIK реализована функциональность просмотра графика котировок бумаг QUIK. Но отсутствует возможность просмотра котировок бумаг, сохраненных во внешних файлах. С учетом существующей функциональности QUIK, как мне представляется, реализация этой возможности не потребует больших усилий.
Вопросы к спецам по Lua и Lua C API
 
В моем предыдущем сообщении фразу "nikolz написал:" читать: "Serge123  написал:"
Вопросы к спецам по Lua и Lua C API
 
1.
Цитата
nikolz написал:
Мне даже показалось, что вы имеете отношение к этому сайту.
 Действительно на этом сайте я написал несколько заметок. И когда я начал в 2019 г. разбираться с QUIK, то обнаружил, что для меня это самый полезный сайт.
 Но я в своем сообщении сослался не на ту заметку, про которую вы пишите, а на "Краткую справку по Lua", в которой, кстати есть и описание C API Lua с примерами.
 На этом же сайте есть как минимум один функционально законченный пример использования C API Lua от Дмитрия.

2
Цитата
Serge123 написал:
А тут мощь dll, которая оттранслирована с оптимизацией и поддержкой наборов вплоть до AVX2, будет кстати.
 И вы знаете как использовать эту мощь для получения дохода на рынке с помощью QUIK, обеспечивающего как минимум секундную реакцию на события рынка?  Возможно я ошибаюсь, но мне представляется, что вы пытаетесь "запрягать лошадь с хвоста".
 Вообще то, существует известная и проверенная временем методология разработки программ. Суть этой методологии в том, чтобы быстро получить работающий, модульный прототип и в конкретном случае это проще сделать используя Lua (а при необходимости готовые пакеты dll). А дальше выяснять проблемы (в том числе и с производительностью) и вносить изменения. С учетом того что Lua тесно интегрирован с C/C++  проблем с переходом из Lua в C нет, но это может и не потребоваться.
Вопросы к спецам по Lua и Lua C API
 
Ошибка в ссылке на справку по Lua. Правильно: https://quikluacsharp.ru/
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Прямого ответа обычно не дают, а как-то ходят вокруг да около этого вопроса...
  На форуме много сообщений о том, что не надо писать сложно. Надо писать модульно, стараясь не создавать "зоопарк" программных средств , чтобы потом не было больших проблем с неизбежными изменениями.
  Практически любого робота для QUIK можно написать используя только Qlua (Lua). В сети есть много описаний (достаточно коротких) о том, что собой представляют таблицы Lua и как с ними можно работать (например, на сайте https://forum.quik.ru/ выложена краткая справка по Lua).  Зачем вы мучаетесь с C API Lua? Что вы не можете сделать в Qlua (Lua)?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Подскажите пожалуйста, как можно сворачивать окно а при необходимости развернуть, получилось слишком большое окно не очень удобно.
   В окне ввода сообщений есть значок SP для вставки скобок спойлера. Внутрь этих скобок вставляется сворачиваемое.
CalcBuySell. Что не так?
 
Цитата
Владимир написал:
А ограничивать это НУЖНО! Софт и так на ладан дышит
  Не заметил проблем с производительностью. Действительно, ни микросекунды, ни тысячи тикеров, ни параллельные потоки, если кто понимает, не нужны. Для индивидуалов вполне можно обойтись несколькими десятками тикеров и реакцией в секунды. Тем более, что QUIK не позиционируется для безумной высокочастотной торговли.
CalcBuySell. Что не так?
 
Цитата
Владимир написал:
КАКОМУ ДЕБИЛУ понадобился "расчёт количества лотов конкретного инструмента с учётом состояния портфеля"? При чём тут плечи и вообще брокеры? Какое моё собачье дело до ИХ "представлений о рисках предоставления плеч для разных инструментов и разных в разное время"? На кой мне "максимально возможное количество лотов в заявке"?
  Ну, не все же гениальные как вы  :smile: . И какой то дебил это хочет знать. Ну и пусть. Зачем кого то ограничивать при наличии своих неограниченных способностей  :smile:?
os.sysdate() . Что-то в ней не так..
 
Цитата
nikolz написал:
Что не так с вашей функцией os.sysdate() ?
   Чтобы не повторяться ссылка: https://forum.quik.ru/messages/forum10/message73949/topic8137/#message73949
пункт 4).
CalcBuySell. Что не так?
 
Цитата
Владимир написал:
Если чел не способен самостоятельно посчитать такую ерунду, его надо поганой метлой гнать из программирования.
 Мысль интересная  :smile: . Я не умею считать такую ерунду.
 Пожалуйста, напишите формулу расчета количества лотов конкретного инструмента с учетом состояния вашего текущего портфеля, с учетом допустимых плеч у брокеров, зависящих об их конкретных представлений о рисках предоставления плеч (возможно, разных для покупки и шорта, разных для разных инструментов и разных в разное время). Если бы я знал риски брокеров по инструментам, то такую формулу бы написал. Вы экстрасенс  :smile: ?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
не работает  #list.
  Читайте документацию. Там написано, что операция # применима только для строк и таблиц-массивов (это такие, в которых индексы строго от 1 до N без пропусков).
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
nikolz написал:
Херня это  все
У вас очередь - это массив. Если в массиве хранятся числа, то для них не отводится дополнительной памяти.
Но даже если Вы храните указатель, то сам элемент массива останется в памяти. Запись nil - это запись 0 в тип элемента массива.
Элементы массива никуда не денутся пока Вы не уничтожите весь массив путем записи nil в его имя.  а не в его элементы.
  Вы до сих пор не поняли что?:
Цитата
TGB написал:
  1. Под все данные, создаваемые непосредственно в Lua, память выделяется автоматически. Память, занимаемая неиспользуемыми (недостижимыми из скрипта: для сильно непонятливых это области данных недоступные из него) данными Lua, освобождается также автоматически (при сборке мусора).
  2. Где вы у меня прочитали, что я пишу про элементы массива? Вы до сих пор не научились читать :smile: ?
  3. Запись nil - это не запись 0 в тип элемента массива, а запись в скрипте nil в поле массива. При такой записи элемент массива становится не доступным.
      Если умеете читать, то почитайте документацию на Lua.
  4. Заодно ответ на ваш вопрос в ветке об os.sysdate().  
      Ваша формула: local tim=60.*(60. * T.hour + T.min) + T.sec + 0.001*(T.ms + 0.001*T.mcs)
неправильная. Правильно: local tim=60.*(60. * T.hour + T.min) + T.sec + 0.001*(0.001*T.mcs)
 Давно бы распечатали результат вызова os.sysdate().
  os.sysdate() выдает таблицу о текущей дате в следующем виде:
  -- [day] (number) = 28
  -- [hour] (number) = 19
  -- [mcs] (number) = 719755 -- мкс. --- #### Это поле не является дополнением к полю ms
  -- [min] (number) = 46
  -- [month] (number) = 11
  -- [ms] (number) = 719 -- млс. --- ####
  -- [sec] (number) = 6
  -- [week_day] (number) = 2
  -- [year] (number) = 2023
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Владимир написал:
TGB , Я не просто думаю - я в этом уверен!

Эксперимент в QLua (можете повторить):
tbl = {1, 2, 3}
message (tostring (tbl))  -- Результат: table: 0000024208D734F0 - это ссылка на таблицу --
tbl = {1, 2, 3}
message (tostring (tbl))  -- Результат: table: 0000024208D727F0 - это ссылка на другую таблицу --
----
Ваш стек это, наверняка, некоторая таблица, и вы туда пишите, наверное, не только числа, но возможно
строки и таблицы, которые вы где то создаете или получает. И строки и таблицы в Lua не перезаписываются.
Если есть сомнения, то можете в своем скрипте отключить мусорщик следующим образом: collectgarbage('stop')
чтобы под ногами не путался :smile: .
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Владимир написал:
При следующем всплеске активности скрипт просто перезабьёт новые данные в старые элементы - память под них уже выделена. А мусорщик сидит и молчит в тряпочку, а не путается под ногами. Сказка!
  Вы думаете, что если было выражение: tbl = {1, 2, 3} а вы потом вы написали еще раз tbl = {1, 2, 3}, то будет перезаписана область памяти из под первой таблицы?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Тогда хоть Вы поясните Очередь здесь применима как прием?
 Да.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Написано:
Цитата
TGB написал:
При перезаписи, если нет других ссылок на область памяти, то она будет удалена (почищена) мусорщиком.
Это значит, что память расти не будет.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
А что если просто перезаписывать, я про пример из 5 элементов?  nil будет вызывать сборщик, а перезапись ну поменял элемент объем остался прежним?
  При перезаписи, если нет других ссылок на область памяти, то она будет удалена (почищена) мусорщиком. Под все данные, создаваемые непосредственно в Lua, память выделяется автоматически. Память, занимаемая неиспользуемыми (недостижимыми из скрипта) данными Lua, освобождается также автоматически (при сборке мусора).
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
подход максимальной локализации переменных, и по блочному их использованию, для таких пользователей как я оптимальный. И можно забыть про такое _G
 Да.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
1.
Цитата
VPM написал:
"наделав кучу на голове у оппонента,  сидеть на ней, как на горе Эверест, со значимым видом"
 Довольно остроумное предложение по переименованию большей, но не лучшей части данной ветки  :smile:.

2.  
Цитата
VPM написал:
Здесь вопрос вот в чем, зачем здесь глобальная таблица со своим окружением
   Если внимательно читать автора, то в переводе на простой язык написано следующее.
  У скрипта существует внешняя служебная переменная с именем _ENV (доступная программисту).
  Все <переменные скрипта>, без спецификации local (называемые переменными окружения), семантически (по смыслу) эквивалентны: _ENV.<переменная скрипта>. То есть, предполагается, что значением _ENV может быть (вообще говоря, любая) таблица. По умолчанию при запуске скрипта, _ENV автоматически присваивается  глобальная служебная таблица _G (тип table), в которой первоначально хранятся стандартные функции Lua. Переменные окружения скрипта будут ключами этой таблицы.  Поэтому (если не присваивать _ENV таблицу отличную от  _G) запись в скрипте:  val = 1 эквивалентна следующей записи (_ENV.val =1) _G.val =1 или (_ENV['val'] =1) _G['val'] = 1.
 Если же не заморачиваться деталями реализации Lua, описанными выше, и не трогать _ENV , то достаточно понимать, что все переменные скрипта без спецификации local являются ключами некоторой служебной таблицы, и экзотическими способами обращения к таким переменным не пользоваться.
SetUpdateCallback и обнудение стека Lua
 
Цитата
Quikos_1 написал:
type:string:1     //Таблица глобальных функций
  Ну, если это таблица, то я сдаюсь и "умываю руки" :smile: .  Похоже, вы долго будете развлекаться отладкой. Потом, просьба к вам, сообщить конечный результат в этой ветке.
SetUpdateCallback и обнудение стека Lua
 
Цитата
Quikos_1 написал:
Это так не работает, если только Вы монолог сами с собой не ведете.
 Учел вашу критику :smile: .

1.
Цитата
Quikos_1 написал:
Ох, Вы явно путаете сборку мусора оперативной памяти и рабочую структура стека Lua. Они ни как не связаны.
         Сначала некоторое утверждение, а затем конкретный вопрос:  
   1) При уборке мусора просматриваются объекты скрипта  и ищутся такие, на которые нет ссылок из среды выполнения скрипта.
   2) Если в стеке скрипта, в момент работы мусорщика, находится ссылка на какую то таблицу и на нее нет других ссылок, то как мусорщик определит, что эта таблица «живая», не обрабатывая стек?

2. Мне стало интересно посмотреть такой  
Цитата
Quikos_1 написал:
просто С++ код
:
    1) Ошибка:
        Оператор  if (status_lua_pcall != 0) ловит только исключения.
        Функция . CreateDataSource обычно завершается, не выбрасывая исключение, даже если источник не создан.
        Надо анализировать результат выполнения CreateDataSource.
        Если источник не создан, то первое значение результата nil, а второй результат: строка описания ошибки создания источника.
        Похоже, вы запускаете свой скрипт в песочнице, а там класс для SBER не TQBR. У вас не создался источник свечей.

   Далее мне смотреть не интересно.
SetUpdateCallback и обнудение стека Lua
 
А что вы спрашиваете :smile: ?:
Цитата
Quikos_1 написал:
ВОПРОС: КТО И ЗАЧЕМ очитстил стек ?? КАК видно из кода, между вызовов SetUpdateCallback и вызовом самой колбек-функции нет ни одной строчки кода, которая бы редактировала стек. Так что происходит тогда ?
  Сами найти не можете?
SetUpdateCallback и обнудение стека Lua
 
Цитата
Quikos_1 написал:
Что бы хотели знать ?
   В каких местах исходников Lua (файл/строка), вызывается мусорщик?
SetUpdateCallback и обнудение стека Lua
 
Цитата
Quikos_1 написал:
Для индикаторов - однозначно Нет.
 Вопрос задан: как это вы делаете с помощью C-API?
SetUpdateCallback и обнудение стека Lua
 
Цитата
Quikos_1 написал:
Так эту глупость про сборщик мусора вообще Вам не нужно было писать - дичь конечно эпичная :)
   Поделитесь, пожалуйста, с форумом вашими, интересными знаниями о сборке мусора в QLua. Очень любопытно :smile:
SetUpdateCallback и обнудение стека Lua
 
Цитата
Quikos_1 написал:
Только не открываю,а "заказываю". Просто указывая класс инструмента, имя и интервал.
    И это нельзя сделать в тексте скрипта с помощью CreateDataSource :smile: ?
SetUpdateCallback и обнудение стека Lua
 
[
Цитата
Quikos_1 написал:
Ох, Вы явно путаете сборку мусора оперативной памяти и рабочую структура стека Lua. Они ни как не связаны.
  Это без комментария :smile:

Цитата
Quikos_1 написал:
Видимо Вы просто не разу не пытались заказывать данные по инстурменту, который у Вас не открыт в Квике
  Интересно,  как вы открываете с помощью C-API "данные по инстурменту, который у Вас не открыт в Квике"?
SetUpdateCallback и обнудение стека Lua
 
1.   Это ваш вопрос?:
Цитата
Quikos_1 написал:
ВОПРОС: КТО И ЗАЧЕМ очитстил стек ??
 Это мой ответ:
Цитата
TGB написал:
Мусорщик работает по всем таблицам и стекам lua_State и что-то там делает.

2. Для меня некоторое открытие  :smile: , что в QLua:
Цитата
Quikos_1 написал:
вы не можете вызвать SetUpdateCallback - ЕСЛИ у вас не открыт график.
SetUpdateCallback и обнудение стека Lua
 
Цитата
Quikos_1 написал:
ВОПРОС: КТО И ЗАЧЕМ очитстил стек ?? КАК видно из кода, между вызовов SetUpdateCallback и вызовом самой колбек-функции нет ни одной строчки кода, которая бы редактировала стек. Так что происходит тогда ?
  1. На форуме много раз отмечалось, что если нужен результат, а не развлечение отладкой, то писать скрипты надо просто. Что-то использовать кроме QLua, надо в крайнем случае (в том числе C-API), если, действительно, QLua и многочисленных пакетов Lua не хватает для реализации задуманного.
  2. Зачем вы используете C-AP?  Что вам не хватает в Qlua?
  3. В Qlua, как известно, автоматическая память и сборка мусора может быть запущена как внутри вызова C-API, так и при вызове коллбека, в основном отдельном параллельном потоке QUIK. Мусорщик работает по всем таблицам и стекам lua_State и что-то там делает.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 13 След.
Наверх