Прошу прощения, действительно, допустил ошибку в ответе. Вызов OnParam происходит при изменении параметра(ов) и, в текущей реализации, функции действительно неизвестно, значение каких конкретно параметров было изменено.
Пожелание по добавлению параметра (массива) для OnParam зарегистрировали, постараемся его рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
В случае, если необходимо зарегистрировать какие-либо пожелания по прочим функциям обратного вызова, просим описать их явным образом.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
s_mike@rambler.ru написал: 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. Бесплатная для некоммерческого использования.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Игорь М написал: Да, 2-ой. И у меня 2-ой. Можно с префиксом "0x" поставить для наглядности: bit.band(trade.flags, 0x4). И bit.band в отличие от bit.test число возвращает. Почему bit.test лучше, чем bit.band - готов узнать.
Алексей написал: По моим ощущениям принцип создания Квика такой : "Зачем просто, когда можно сложно". Кому-то может и надо столько таблиц, но кто с форекса пришёл, и кто пользовался, например, терминалами от форекс клуба, (Либритек-менее удобен, Румус- по мне так идеальный вариант) не надо столько наворотов. Сделайте кнопку - "Упрощённый вариант", при нажатии на которую выдет что-то похожее на Румус, Либритек или Метатрейдер (на худой конец). И будет всем счастье. И не надо будет читать инструкцию в 1000 листов, чтоб найти две кнопки "Купит" и "Продать" во всей этой мешанине таблиц и стаканов. Стакан по завершении сделки на столе я лучше увижу :)
Зачем мне эти ПДД, педали, руль и всякая дрянь типа адаптивного круиз контроля? Для тех, кто привык на лошади и телеге - все это лишнее.
Владимир написал: Господа разработчики! Что за хрень? Я пытаюсь продать СВОИ акции, они у меня ЕСТЬ, они принесли мне прибыль, которую я собираюсь зафиксировать. Какой, в задницу, может быть "шорт"? Раз пять уже такое случалось, но. как правило, со второй или третьей попытки акции всё-таки удавалось продать. Но на этот раз Квик с упорством носорога зудит: "Данный инструмент запрещен для операции шорт". Это глюк в программе или неизвестный мне доселе способ воровства моих денег?
гении обычно болтливы и рассеянны. Они с упорством носорога считают виноватыми всех, кроме себя. А достаточно просто посмотреть чуть внимательнее и окажется, что акции заблокированы выставленными заявками
Вы хотите сказать, что это до сих пор не исправили и Size считает временные интервалы?
Size() совершенно необязательно возвращает номер последнего формирующегося бара инструмента. Это может быть в случае (например) если на диаграмму нанесены графики разных инструментов. И ещё в нескольких случаях.
«1» – отправлена с помощью файла импорта; «512» – отправлена с помощью QPILE; «32768» – отправлена с помощью Trans2Quik; «131072» – на продажу; «262144» – отправлена с помощью LUA; «524288» – отправлена с помощью API клиентского места; «1048576» – служебная; «2097152» – на ввод заявки
Делайте все ваши скрипты всегда запущенными, которые крутят холостой цикл. По внешнему сигналу от управляющего скрипта они от пустого цикла переходят к полезной работе, по второму сигналу - опять уходят в пустой цикл
Nikolay написал: Сдвинуть обе метки в скрипте. Индикатор видит новые координаты меток (опрашивает метку) и рисует по ним линию.
Как заставить индикатор отреагировать в нужный момент на какие-то внешние изменения, вот же в чем вопрос.
Цитата
Nikolay написал: Я обычно метки использую для обратной передачи, когда надо из индикатора передать информацию от пользователя в скрипт. Пользователь метку двигает - т.е. он интерактивно с графика задает какой-то уровень в скрипт.
Кстати да, на передвигании меток можно такой интерактив для управления скриптом замутить!! :) Клёвая идея
я пытался мутить, в общих чертах оно даже работает...
Глебов Александр написал: Прошу совета, как получить горизонтальные объемы сделок на определенном уровне в заданном ценовом диапазоне. Имею в виду, как сумму всех сделок, так и в отдельности, покупки и продажи.
Евгений написал: https://forum.quik.ru/forum10/topic6152/ вот в этой теме про метки Вы уже сделайте методы в Lua так же как метки. Хотя бы горизонтальные уровни в виде линий а не картинок. Где то у вас тут на форуме от вас было предложение рисовать уровни в виде линии в 1 пиксель толщиной, вот сделал, но 35 меток ложат квик полностью.
35 меток укладывать квик полностью не могут. Вот вам картинка, где меток пара сотен. И ничего, едет телега...
в момент вызова диалога выбора индикатора происходит очень условный запуск индикатора. Там откастрировано все что только можно. Фактически этот запуск мало отличается от проверки синтаксиса и служит для грубой отбраковки неподходящих файлов в папке luaindicators. Не надо ждать от него ничего.
Старатель написал: Второй файл как раз служит для писателей индикатором, что первый файл занят, и запись не возможна. Как только приёмник прочитает данные, он удаляет 2-й файл, что сигнализирует о возможности записи. Т.е. организуются синхронные запись/чтение.
Кстати, ни разу не видел, блокировок файлов, одновременно открытых несколькими Lua-скриптами. Если файл открыт другим приложением, то, да, было.
Блокировки видел, хоть lua и очень быстр в части работы с файлами. Если пара одна, то это приведет к тому, что все будут ждать пока он освободится. А если несколько, то приемник сможет переключаться между парами, чтобы не ждать.
Конечно, все это для обмена большими объемами и несколькими источниками-потребителями. Если данных мало и они редки, то все это излишне.
lua открывает файлы в разделяемом режиме. Поэтому блокировок не бывает. Файл нужно просто читать и проверять целостность данных.
Kolossi написал: Проверил. Нумерация окон меняется конкретно для каждого скрипта-увеличивается с каждым перезапуском начиная с запуска Квика. Запустив два одинаковых скрипта при помощи перезапусков легко получил окна с одинаковыми идентификаторами. Облом.
Владимир написал: И автор будет дурак, если деньги вернёт. :: Он, насколько я понимаю, писал скрипт на ЯЗЫКЕ Lua, который вряд ли претерпел значительные изменения (по крайней мере, в описании языка). А если скрипт вдруг ПЕРЕСТАЛ работать в новой версии, причём он РАБОТАЛ в той версии, которая была рабочей в момент разработки скрипта, то автор-то здесь при чём? Сам факт, что текущая версия имеет номер 8.8.4.3 говорит о том, что все они есть полное дерьмо. ВСЕ ДО ЕДИНОЙ!
P.S. Моему скрипту НАСРАТЬ, какая версия Квика используется (у одного брокера это 8.7.1.3, у другого 8.10.3.1, причём, насколько я помню, я раз 5 эти версии обновлял, даже не глядя, что там за изменения произошли) - именно поэтому писал свой скрипт (и неоднократно предлагал делать то же самое другим разработчикам) на чистейшем Lua, который ОБЯЗАНЫ поддерживать ВСЕ библиотеки! А если вдруг И ЭТО не так, то гнать надо взашей всех разработчиков!
Если бы у вас было немного больше базовых знаний, связанных с написанием скриптов на lua, вы бы обратили внимание, что скрипт, о котором задают вопрос, скомпилирован. Результаты компиляции в разных версиях луа (не терминала) различны, а инструменты декомпиляции ничего не гарантируют .
И да, у вас через слово упоминаются экскременты. Это неслучайно?
Максим написал: Купил робот-сканера, сделал все как рассказывает автор на инструкции, но при запуске скрипта выдаёт ошибку: 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 файл.
По хорошему нужно получить возможность рисования из лука примитивов прямо в окне (без привязки к свечам и так далее) по пиксельных координатам, как это сделано во всех нормальных терминалах. Рисование отрезка, окружности, квадрата и остального.
но что то мне подсказывает, что нереально, квик особенный.
Сергей написал: Получается, что для того, чтобы мне получить последнюю свечу, мне нужно заново CreateDataSource, который заново создаёт таблицу. Ладно мне, для примера, допустим и раз в час достаточно , но если захочется обновлять данные каждую минуту, то это нормальное решение, создавать таблицу заново каждую минуту? Или после CreateDataSource уже не нужно его повторно запускать, а можно просто к индексу свечи добавлять единичку, чтобы получить данные по новой свече?
на газету "пионерская правда" подписываешься однажды. А попадает в почтовый ящик она сама собой, регулярно, волшебным образом.