Прошу прощения, действительно, допустил ошибку в ответе. Вызов OnParam происходит при изменении параметра(ов) и, в текущей реализации, функции действительно неизвестно, значение каких конкретно параметров было изменено.
Пожелание по добавлению параметра (массива) для OnParam зарегистрировали, постараемся его рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
В случае, если необходимо зарегистрировать какие-либо пожелания по прочим функциям обратного вызова, просим описать их явным образом.
Пасхалочка для Алексея Иванникова:
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Длины разные, но "a" .. "a\0b" = "aa". Проверено в Lua 5.3.5 и 5.4.1. Непорядок. Разработчикам Lua это надо бы довести до сведенья.
Здесь вы опять ошибаетесь
print(#("x" .. "a\0\b")) 4
Пасхалочка для Алексея Иванникова:
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Пользователь
Сообщений: Регистрация: 30.01.2015
15.03.2021 01:54:39
Цитата
Цитата
написал: во втором случае результат явно неверен. "a" и "a\0b" - совершенно разные строки.
Так как символ \0 в Lua это признак завершения строки, то для Lua "a" и "a\0b" - эквивалентные строки.
вот даже так?
print(string.len("a")) print(string.len("a\0b"))
вообще то это самые базовые вещи.
Пасхалочка для Алексея Иванникова:
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
написал: dump_tbl ({[{"xx","yy"}]=5}, " ", 0)c dump_tbl ({math.huge}, " ", 0) тоже как то не очень.dump_tbl ({"a\0b"}, " ", 0)Торопитесь, TGB ..
Спасибо за нетривиальные примеры для тестирования.
local str = "" for k,v in next, dump_tbl ({ [ {"xx","yy"} ] =5}, " ", 0) do str = str .. v end РЕЗУЛЬТАТЫ теста (в квадратных скобках индексы таблиц) MessageDlg ( 1, 1, "Скрипт", " Результат: \n" .. str) Результат: [table: 0F4ED2F0] (number) = 5 ------- str = "" for k,v in next, dump_tbl ({"a\0b"}, " ", 0) do str = str .. v end MessageDlg ( 1, 1, "Скрипт", " Результат: \n" .. str) Результат: [1] (string) = a MessageDlg ( 1, 1, "Скрипт", " Результат: \n" .. "a\0b") Результат: a --- message ("a\0b") Результат: a ------- str = "" for k,v in next, dump_tbl ({math.huge}, " ", 0) do str = str .. v end MessageDlg ( 1, 1, "Скрипт", " Результат: \n" .. str) Результат: [1] (number) = 1.#INF message (tostring(math.huge)) Результат: 1.#INF ----------------------------------------------------------------------------------------- Я ошибок не нашел. Где они?
в первом примере не раскрыто содержимое таблицы, являющеся ключом. Сериализация это подразумевает. Таблица ключа может содержать вложенные таблицы, которые также должны быть раскрыты.
во втором случае результат явно неверен. "a" и "a\0b" - совершенно разные строки.
в третьем случае 1.#inf не является допустимым числом lua. Это всего лишь нерегламентированное внутреннее представление, которое не может попадать в результат.
Пасхалочка для Алексея Иванникова:
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Пользователь
Сообщений: Регистрация: 30.01.2015
14.03.2021 16:04:53
торОпитесь....
Пасхалочка для Алексея Иванникова:
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
написал: Да, 2-ой. И у меня 2-ой. Можно с префиксом "0x" поставить для наглядности: bit.band(trade.flags, 0x4). И bit.band в отличие от bit.test число возвращает. Почему bit.test лучше, чем bit.band - готов узнать.
Кроме быстродействия и наглядности никаких.
В луа 5.3 есть битовые операции.
bit.band(trade.flags, 0x4)
можно заменить на
trade.flags & 0x4
Пасхалочка для Алексея Иванникова:
Получить имя исполняемого скрипта., Возможно?
Пользователь
Сообщений: Регистрация: 30.01.2015
26.02.2021 20:24:08
В oninit передается путь к скрипту
Пасхалочка для Алексея Иванникова:
Сделайте упрощённый вариант
Пользователь
Сообщений: Регистрация: 30.01.2015
26.02.2021 12:49:54
Цитата
Алексей написал: По моим ощущениям принцип создания Квика такой : "Зачем просто, когда можно сложно". Кому-то может и надо столько таблиц, но кто с форекса пришёл, и кто пользовался, например, терминалами от форекс клуба, (Либритек-менее удобен, Румус- по мне так идеальный вариант) не надо столько наворотов. Сделайте кнопку - "Упрощённый вариант", при нажатии на которую выдет что-то похожее на Румус, Либритек или Метатрейдер (на худой конец). И будет всем счастье. И не надо будет читать инструкцию в 1000 листов, чтоб найти две кнопки "Купит" и "Продать" во всей этой мешанине таблиц и стаканов. Стакан по завершении сделки на столе я лучше увижу :)
Зачем мне эти ПДД, педали, руль и всякая дрянь типа адаптивного круиз контроля? Для тех, кто привык на лошади и телеге - все это лишнее.
Никто такой вариант делать не станет.
Пасхалочка для Алексея Иванникова:
Данный инструмент запрещен для операции шорт
Пользователь
Сообщений: Регистрация: 30.01.2015
23.02.2021 15:39:06
Цитата
Владимир написал: Господа разработчики! Что за хрень? Я пытаюсь продать СВОИ акции, они у меня ЕСТЬ, они принесли мне прибыль, которую я собираюсь зафиксировать. Какой, в задницу, может быть "шорт"? Раз пять уже такое случалось, но. как правило, со второй или третьей попытки акции всё-таки удавалось продать. Но на этот раз Квик с упорством носорога зудит: "Данный инструмент запрещен для операции шорт". Это глюк в программе или неизвестный мне доселе способ воровства моих денег?
гении обычно болтливы и рассеянны. Они с упорством носорога считают виноватыми всех, кроме себя. А достаточно просто посмотреть чуть внимательнее и окажется, что акции заблокированы выставленными заявками
Пасхалочка для Алексея Иванникова:
QUIK для ARM
Пользователь
Сообщений: Регистрация: 30.01.2015
19.02.2021 17:32:38
Да они с тем, что имеется не могут справиться, а вы им предлагаете ещё один продукт себе на шею повесить.
Вы хотите сказать, что это до сих пор не исправили и Size считает временные интервалы?
Size() совершенно необязательно возвращает номер последнего формирующегося бара инструмента. Это может быть в случае (например) если на диаграмму нанесены графики разных инструментов. И ещё в нескольких случаях.
Звуковой сигнал в интерпретаторе lua.exe, Как сделать сигнал beep при запуске программы с помощью lua.exe
Пользователь
Сообщений: Регистрация: 30.01.2015
15.02.2021 13:18:13
Возьмите в архиве библиотеку bot4sale64.dll
// PlaySound(sound_file) // Returns error code (0 if successful) and string error description
require "bot4sale64" err = bot4sale64.PlaySound("file.wav") -- mp3 и все остальное тоже
для луа 5.3
Пасхалочка для Алексея Иванникова:
Текстовые пояснения на графике, При смене инструмента текстовые пояснения не меняются.
Пользователь
Сообщений: Регистрация: 30.01.2015
12.02.2021 20:38:52
Вы хотите, чтобы дедушка бегал стометровку?
он не может. Он старенький.
Пасхалочка для Алексея Иванникова:
4.24 Транзакции. Флаги транзакции., Что это такое?
Пользователь
Сообщений: Регистрация: 30.01.2015
11.02.2021 13:55:33
«1» – отправлена с помощью файла импорта; «512» – отправлена с помощью QPILE; «32768» – отправлена с помощью Trans2Quik; «131072» – на продажу; «262144» – отправлена с помощью LUA; «524288» – отправлена с помощью API клиентского места; «1048576» – служебная; «2097152» – на ввод заявки
Пасхалочка для Алексея Иванникова:
В индикаторе можно создать безконечную горизонтальную линию?
Пользователь
Сообщений: Регистрация: 30.01.2015
09.02.2021 18:44:30
Легко.
function oncalculate() return 5 end
нарисует вам линию на уровне 5
Пасхалочка для Алексея Иванникова:
запуск из работающего скрипта другого скрипта или скриптов
Пользователь
Сообщений: Регистрация: 30.01.2015
07.02.2021 11:43:37
Делайте все ваши скрипты всегда запущенными, которые крутят холостой цикл. По внешнему сигналу от управляющего скрипта они от пустого цикла переходят к полезной работе, по второму сигналу - опять уходят в пустой цикл
Пасхалочка для Алексея Иванникова:
Добавить в CreateDataSource():SetUpdateCallback() аргумент, указывающий на DataSource
написал: Сдвинуть обе метки в скрипте. Индикатор видит новые координаты меток (опрашивает метку) и рисует по ним линию.
Как заставить индикатор отреагировать в нужный момент на какие-то внешние изменения, вот же в чем вопрос.
Цитата
написал: Я обычно метки использую для обратной передачи, когда надо из индикатора передать информацию от пользователя в скрипт. Пользователь метку двигает - т.е. он интерактивно с графика задает какой-то уровень в скрипт.
Кстати да, на передвигании меток можно такой интерактив для управления скриптом замутить!! :) Клёвая идея
я пытался мутить, в общих чертах оно даже работает...
написал: А также пишите индикатор, который читает положения парных меток на графике и строит по ним линию.
Если понадобилось сдвинуть всю линию - как дать сигнал заново пересчитать такой индикатор? Может вы знаете? никак не могу придумать
Никак. Только сделать какой-то внешний сигнал и дождаться когда будет вызвана oncalculate на очередной тик или кнопку ок в параметрах индикатора
Пасхалочка для Алексея Иванникова:
Добавление объектов на график, Скриптами Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
25.01.2021 07:06:46
Уже заводили. Году в 15. Михаил Булычев даже ссылки на список функций низкоуровневого рисования метатрейдера, амиброкера и чего то ещё просил дать.
Зарегистрировали, понятное дело.
Сотрудники поменялись, работу работают, заново зарегистрируют. А через пять лет ещё раз )
Пасхалочка для Алексея Иванникова:
Как получить горизонтальные объемы сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
22.01.2021 22:41:37
Цитата
Глебов Александр написал: Прошу совета, как получить горизонтальные объемы сделок на определенном уровне в заданном ценовом диапазоне. Имею в виду, как сумму всех сделок, так и в отдельности, покупки и продажи.
вот такое есть
Пасхалочка для Алексея Иванникова:
Лучшие технические требования к оборудованию, Лучшие технические требования к оборудования для работы Quik
Пользователь
Сообщений: Регистрация: 30.01.2015
22.01.2021 14:26:22
На картинке явно куча bmp размером 1*N не нужно заниматься критикой и пространными рассуждениями, лучше разобраться со своим скриптом. Проблема в нем.
Пасхалочка для Алексея Иванникова:
Лучшие технические требования к оборудованию, Лучшие технические требования к оборудования для работы Quik
Пользователь
Сообщений: Регистрация: 30.01.2015
22.01.2021 12:58:10
Цитата
Евгений написал: вот в этой теме про метки Вы уже сделайте методы в Lua так же как метки. Хотя бы горизонтальные уровни в виде линий а не картинок. Где то у вас тут на форуме от вас было предложение рисовать уровни в виде линии в 1 пиксель толщиной, вот сделал, но 35 меток ложат квик полностью.
35 меток укладывать квик полностью не могут. Вот вам картинка, где меток пара сотен. И ничего, едет телега...
Пасхалочка для Алексея Иванникова:
Сумма лучших
Пользователь
Сообщений: Регистрация: 30.01.2015
21.01.2021 22:26:27
Луа вам в руки
Пасхалочка для Алексея Иванникова:
Ошибка работы getScriptPath() из индикатора (версия 8.11.0.66), QUIK 8.11.0.66
Пользователь
Сообщений: Регистрация: 30.01.2015
21.01.2021 00:11:56
Swerg,
в момент вызова диалога выбора индикатора происходит очень условный запуск индикатора. Там откастрировано все что только можно. Фактически этот запуск мало отличается от проверки синтаксиса и служит для грубой отбраковки неподходящих файлов в папке luaindicators. Не надо ждать от него ничего.
написал: Второй файл как раз служит для писателей индикатором, что первый файл занят, и запись не возможна. Как только приёмник прочитает данные, он удаляет 2-й файл, что сигнализирует о возможности записи. Т.е. организуются синхронные запись/чтение.
Кстати, ни разу не видел, блокировок файлов, одновременно открытых несколькими Lua-скриптами. Если файл открыт другим приложением, то, да, было.
Блокировки видел, хоть lua и очень быстр в части работы с файлами. Если пара одна, то это приведет к тому, что все будут ждать пока он освободится. А если несколько, то приемник сможет переключаться между парами, чтобы не ждать.
Конечно, все это для обмена большими объемами и несколькими источниками-потребителями. Если данных мало и они редки, то все это излишне.
lua открывает файлы в разделяемом режиме. Поэтому блокировок не бывает. Файл нужно просто читать и проверять целостность данных.
Пасхалочка для Алексея Иванникова:
Подкиньте идею
Пользователь
Сообщений: Регистрация: 30.01.2015
16.01.2021 17:27:32
Цитата
Kolossi написал: Проверил. Нумерация окон меняется конкретно для каждого скрипта-увеличивается с каждым перезапуском начиная с запуска Квика. Запустив два одинаковых скрипта при помощи перезапусков легко получил окна с одинаковыми идентификаторами. Облом.
жаль. Не сработало.
Пасхалочка для Алексея Иванникова:
Подкиньте идею
Пользователь
Сообщений: Регистрация: 30.01.2015
16.01.2021 12:53:11
Передайте один раз через файл номер окна. Имея номер окна, можно писать в него из любых скриптов.
Пасхалочка для Алексея Иванникова:
Ошибка в работе lua скрипта в quik 8.8.4.3
Пользователь
Сообщений: Регистрация: 30.01.2015
12.01.2021 15:24:43
Если бы
Цитата
Владимир написал: И автор будет дурак, если деньги вернёт. :: Он, насколько я понимаю, писал скрипт на ЯЗЫКЕ Lua, который вряд ли претерпел значительные изменения (по крайней мере, в описании языка). А если скрипт вдруг ПЕРЕСТАЛ работать в новой версии, причём он РАБОТАЛ в той версии, которая была рабочей в момент разработки скрипта, то автор-то здесь при чём? Сам факт, что текущая версия имеет номер 8.8.4.3 говорит о том, что все они есть полное дерьмо. ВСЕ ДО ЕДИНОЙ!
P.S. Моему скрипту НАСРАТЬ, какая версия Квика используется (у одного брокера это 8.7.1.3, у другого 8.10.3.1, причём, насколько я помню, я раз 5 эти версии обновлял, даже не глядя, что там за изменения произошли) - именно поэтому писал свой скрипт (и неоднократно предлагал делать то же самое другим разработчикам) на чистейшем Lua, который ОБЯЗАНЫ поддерживать ВСЕ библиотеки! А если вдруг И ЭТО не так, то гнать надо взашей всех разработчиков!
Если бы у вас было немного больше базовых знаний, связанных с написанием скриптов на lua, вы бы обратили внимание, что скрипт, о котором задают вопрос, скомпилирован. Результаты компиляции в разных версиях луа (не терминала) различны, а инструменты декомпиляции ничего не гарантируют .
И да, у вас через слово упоминаются экскременты. Это неслучайно?
Пасхалочка для Алексея Иванникова:
Ошибка в работе lua скрипта в quik 8.8.4.3
Пользователь
Сообщений: Регистрация: 30.01.2015
12.01.2021 13:48:02
Цитата
Максим написал: Купил робот-сканера, сделал все как рассказывает автор на инструкции, но при запуске скрипта выдаёт ошибку: C:\ClassesC\class.luac: version mismatch in precompiled chunk. Автор на видео пользуется версией квика, начинающейся на цифру 7.. у меня уже 8.8.4.3.. скорее всего, скрипт написан тоже на старую версию квика. Что в подобной ситуации можно предпринять? Какие есть варианты решения проблемы? В языке Lua являюсь нубом).
необходимо попросить автора дать вам скрипт под актуальную версию терминала. Если он не может это сделать, наверное следует попросить вернуть вам деньги.
Владимир написал: Этот маразм с этой долбаной "динамической типизацией" вообще вряд ли кто может объяснить. Я вот тоже вынужден использовать код вида: iT=tonumber(GetCell(T,p1,0).image); поскольку "нормальная" конструкция работать напрочь отказывается. А param_image вроде как всегда строка. И вообще, за динамическую типизацию руки-ноги бы повыдёргивал всем козлам, которые этот кретинизм придумали, ибо они АБСОЛЮТНО нихрена не понимают в программировании.
Динамическая типизация тут вообще не при чем, и рядом не стоит. Просто нужно прочитать документацию на эту функцию. Рядовые программисты так и делают, а гениальные нет, отсюда проблемы и непонимание у последних.
Пасхалочка для Алексея Иванникова:
Где мне найти исполнителя для написания такого скрипта?, Необходим скрипт на Lua. Необходимо создать скрипт для онлайнового накопления информации по набору инструментов из QUIK (ВТБ) в CSV файл.
Пользователь
Сообщений: Регистрация: 30.01.2015
09.01.2021 13:50:43
По первому вопросу есть готовое. , возможно подойдёт.
Пасхалочка для Алексея Иванникова:
Как сделать пересылку сообщений от скриптов на смартфон?
написал: Неинтересный вариант. Его нельзя в bat файл засунуть
Сгодится для батничка?
опа.
замечательно.
Пасхалочка для Алексея Иванникова:
Отладка QUIK 8.11
Пользователь
Сообщений: Регистрация: 30.01.2015
22.12.2020 13:07:45
Неинтересный вариант. Его нельзя в bat файл засунуть
Пасхалочка для Алексея Иванникова:
Метки на графике с привязкой к окну, Возможность ставить метки с привязкой к окну графика где расположен график с идентификатором
Пользователь
Сообщений: Регистрация: 30.01.2015
21.12.2020 12:32:47
По хорошему нужно получить возможность рисования из лука примитивов прямо в окне (без привязки к свечам и так далее) по пиксельных координатам, как это сделано во всех нормальных терминалах. Рисование отрезка, окружности, квадрата и остального.
но что то мне подсказывает, что нереально, квик особенный.
Пасхалочка для Алексея Иванникова:
os.date() утечка памяти или нет?, при использовании os.date() память потребляемая скриптом растет
Пользователь
Сообщений: Регистрация: 30.01.2015
20.12.2020 18:02:42
Ну а что же удивляет?
Но время работы os.date резервируется буфер в памяти. Когда таких вызовов много, вы можете увидеть изменение занимаемой скриптом памяти даже глазами.
Сборщик мусора все эти огрызки памяти освобождает одним проходом.
Пасхалочка для Алексея Иванникова:
Заявка по минимуму последней свечи
Пользователь
Сообщений: Регистрация: 30.01.2015
14.12.2020 19:12:14
Цитата
Сергей написал: Получается, что для того, чтобы мне получить последнюю свечу, мне нужно заново CreateDataSource, который заново создаёт таблицу. Ладно мне, для примера, допустим и раз в час достаточно , но если захочется обновлять данные каждую минуту, то это нормальное решение, создавать таблицу заново каждую минуту? Или после CreateDataSource уже не нужно его повторно запускать, а можно просто к индексу свечи добавлять единичку, чтобы получить данные по новой свече?
на газету "пионерская правда" подписываешься однажды. А попадает в почтовый ящик она сама собой, регулярно, волшебным образом.
Пасхалочка для Алексея Иванникова:
Как определить последнюю свечу в индикаторе?, Как определить последнюю свечу в индикаторе?
Пользователь
Сообщений: Регистрация: 30.01.2015
07.12.2020 21:29:36
вот так она называется в руководстве
getDataSourceInfo
Функция предназначена для получения информации об источнике данных для индикатора.
TABLE info getDataSourceInfo()
Пасхалочка для Алексея Иванникова:
Как определить последнюю свечу в индикаторе?, Как определить последнюю свечу в индикаторе?
Пользователь
Сообщений: Регистрация: 30.01.2015
07.12.2020 14:42:05
А чем провинилась функция getdatadesecurityinfo?))
Пасхалочка для Алексея Иванникова:
Как определить последнюю свечу в индикаторе?, Как определить последнюю свечу в индикаторе?
Пользователь
Сообщений: Регистрация: 30.01.2015
07.12.2020 10:55:36
Параметры инструмента, по которому вы строите индикатор, можно получить функцией getsecurityinfo