Отнюдь. Это в самом деле стандартное поведение контрола Windows "Вкладки". Просто в QUIK в здравом уме никто не делает столько вкладок, чтобы они в одну строку не помещались. Потому ваша проблема "уникальна". А значит быстро чинить её никто не будет. Даже если "рассмотрят и признают целесообразным". Сократите наименование на вкладках - и будет вам счастье. Более того, вы ведь этак придете и скажете, что QUIK есть слишком много ресурсов при 5 открытых графиках. А на самом деле у вас 100 вкладок по 5 графиков, а это уж совсем другое, согласитесь.
1) Непосредственно к таблице "Состояние счета" доступа через Lua API нет.
2) То, что вы выделили - это не совсем "свободные средства", это остаток на денежном счете. Впрочем, это вопрос терминологии. Вы можете увидеть ту же цифру (на сколько я понимаю) через таблицу "Таблица лимитов по денежным средствам". Откройте её. (просто для того, чтобы понятнее было и нагляднее что там и как; для того, чтобы получить информацию в Lua открывать указанную таблицу конечно не обязательно). Далее см. в QLUA.chm раздел "Таблицы, используемые в функциях «getItem», «getNumberOf» и «SearchItems»", там вам нужна "Позиции участника по деньгам"
Let_it_go написал: Вы не в курсе дела. Или я не в курсе дела, что что-то изменилось. Каждое утро main перезапускается при смене сессии.
Let_it_go, держитесь, не показывайте код этим провокаторам! Начнут сейчас выманивать хитрыми сказками, знаю я таких! Держитесь, код не сдавайте! Я на вашей стороне. ¡No pasarán!
Nikolay написал: Ни у кого не было проблем с подключением dll, собранных под 5.4? Я собрал одну библиотеку, в чистом lua она работает корректно. При подключении к Квик получаю ACCESS VIOLATION.
Nikolay написал: Вроде как моя ошибка, но хотелось бы наверно, чтобы это не приводило к аварийному падению.
Это невозможно. Надо самому "следить за руками", увы. Ну т.е. это тоже самое, что я сделаю dll с кривым кодом, которая уронет терминал. Терминал тут ничем помочь не сможет, терминал не знает что за DLL вы подключаете.
Причем проценты относительно какой-то величины? так я понял вашу шкалу слева? Тогда для какой величины считать 0%? а что брать за 100%? По картинке не понял.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
TGB написал: Назначение данного продукта не в том чтобы заменить Lua. Это в каком-то смысле «станок» с готовой инфраструктурой, которая в том или ином виде требуется для разработки сложных программных систем.
Попробуйте все тоже самое, что в первом посте, изложить в виде рекламного текста в формате "применив это комбайн для решения такой вот задачи получаем вот такие плюсы относительно просто Луа". Важно чтобы задача просто и кратко формулировалась при этом.
PS Посмотрите иностранные рекламные ролики сельхоз. техники. Это крайне залипательно! И, главное, там много что можно почерпнуть в плане формата подачи рекламного материала.
Roman Azarov написал: При отключении ранее озвученных настроек не будет появляться отдельное окно с сообщением. Само же сообщение можно будет всегда просмотреть в окне сообщений на панели инструментов и в таблице "Таблица сообщений".
Мне любопытно, вы сами понимаете что вы пишете? Я хочу видеть нужные сообщения. В отдельном окне.
Но одно и тоже сообщение каждый раз в том же самом - оно зачем?? И зачем вы предлагаете убрать вообще все сообщения когда мешает одно конкретное? Я фигею с вас, как с компании.
Вопрос как отключить одно конкретное сообщение.
Если невозможно - зарегистрируйте пожелание на отключение.
PS Для недалёких подсказка: надо просто 2 типа сообщения сделать в системе: сообщения о торговле, которые всегда и были, и сообщения, которые прописывает брокер фактически в качестве информационной рекламы. Это разные по значимости сообщения епты! и включение / отключение у них должно быть разным.
PPS И да, я всё еще под впечатлением от "нового" диалога выбора границы цены. Диалог "новый", кривые руки - всё те же. Просто поразительно. НУ как так-то??
Установка и запуск QUIK на другом ноуте (виндовс 10)., Доброе утро! Подскажите, пожалуйста, могу я установить QUIK и использовать старый счет и пароль с логином?
MrKoP написал: если я скопирую папку и войду на другом ПК, будет ли это считаться вторым терминалом?
Нет, не будет. Можете хоть на 5 компьютеров раскопировать и с каждого поочереди подключаться. "Второй терминал" - подразумевается одновременное подключение 2-х терминалов (с одного или с разных компьютеров) для одного счета с разными логинами.
Для индикаторов можно выбирать в какой версии выполнять скрипты. Для скриптов - тоже. Вроде это решает вашу проблему, достаточно выбрать какую-то одну версию для всех индикаторов и её же для всех скриптов.
_____________________________________ Если вы используете внешние dll в Lua - то важно делать так, чтобы одна и та же dll не использовалась одновременно в разных версиях Lua. ну либо dll умела понимать для какой версии Lua её вызвали, но штатного механизма для этого нет, да и делать такие dll заморочено. Но в любом случае точно нельзя, чтобы неадаптированная одновременной работе с разными версиями Lua dll использовалась
Если же ну очень хочется (или требуется) запускать скрипты в разных версиях Lua - то проще иметь сборки для разных версий Lua и подгружать нужную в тот или иной скрипт. Вот здесь я подробно описываю как я виду этот вариант.
TGB написал: выкладывать библиотеки импорта (.lib) функций Lua53.dll (Lua54.dll и т.д.), например, в папке хранения файла info.exe. Понятно, что такие библиотеки можно создать на основе файлов dll, но, наверное, не все пользователи знают, как это сделать. Эти библиотеки нужны при перетрансляции C-пакетов QLua при переходе на новые версии Lua
Я вот не помню как делать библиотеки импорта на память, но каждый раз просто-напросто загугливаю за 1 минуту пошаговый мануал, коих сотни; вот и всё. Кто с помощью гугла не может сделать lib-файл из DLL - он, уж извините, и пакеты не перетранслирует. Даже при наличии lib-файла
Логарифмическая шкала любых величин позволяет "уравнивать" относительные колебания на каждом участке какого-либо параметра, когда само значение параметра на разных участках меняется в очень больших пределах.
Александр Волфовиц написал: время используется не только в OnQuote. В OnQuote просто всплыл вышеупомянутый ворнинг.
Значит сделайте функцию, которая будет возвращать вам нужные 3 значения - и вызывайте ее везде, где требуется. Иначе добра не будет. На один прикол вы уже напоролись, еще один вам описал Игорь М.
Евгений написал: Если до этого дойдет, что маловероятно, то посчитаем тех кому это надо и разделим на это кол-во, если пойдет торг, то будем искать спонсоров которые готовы добавить.
Вопрос-то вам был, а не кого-то там посчитать. Открою, кстати, секрет: считать будет некого. Хотите верьте, хотите нет, но я точно знаю. Потому на вас вся надежда.
Nikolay написал: Сдвинуть обе метки в скрипте. Индикатор видит новые координаты меток (опрашивает метку) и рисует по ним линию.
Как заставить индикатор отреагировать в нужный момент на какие-то внешние изменения, вот же в чем вопрос.
Цитата
Nikolay написал: Я обычно метки использую для обратной передачи, когда надо из индикатора передать информацию от пользователя в скрипт. Пользователь метку двигает - т.е. он интерактивно с графика задает какой-то уровень в скрипт.
Кстати да, на передвигании меток можно такой интерактив для управления скриптом замутить!! :) Клёвая идея
s_mike@rambler.ru написал: Если понадобилось сдвинуть всю линию - как дать сигнал заново пересчитать такой индикатор? Может вы знаете? никак не могу придумать
Никак. Только сделать какой-то внешний сигнал и дождаться когда будет вызвана oncalculate на очередной тик или кнопку ок в параметрах индикатора[/QUOTE]
Т.е. в принципе предыдущие значения из индикатора можно перерисовывать?
Евгений написал: Вы выполняете многомилионные контракты банков и прочее. .... Предлагаю скинуться трейдерам кому нужны эти методы и заплатить за эти доработки программистам ООО "Арка Текнолоджиз" иначе мы никогда не дождемся этого
Старатель написал: или нет? О каких разных конфигурациях вы пишите, когда эта проблема общего характера. И рассматривать её надо не в частном порядке.
Часто пользователю мерещится, что возникшая у него ошибка - ошибка самого общего характера. проявляющаяся у всех, ведь он жмет на единственную красную кнопку на пульте. Казалось бы, все жму на эту кнопку, а значит проблема имеет общий характер, кнопка не работает, очевидно же! Однако в таких ситуациях не редко оказывается так, что ошибка эта вовсе не носит общего характера, даже при наличии единственной кнопки на пульте, а проявляется лишь в редких экзотических условиях.
Это я вам как коллега коллеге подсказываю.
Я к тому, что, как это модно говорить, "просьба отнестись с пониманием" к запросам о помощи Миру мир и всё такое.
Я подозревал, что это "не новое", видимо везло не сталкивался
Из той ветки:
Цитата
Старатель написал: 3. Если очень хочется, то вместо getScriptPath() можно использовать
Код
getWorkingFolder () .. "\\LuaIndicators"
Уточнение: это не эквивалентно, учитывая, что сканируются все вложенные папки, что позволяет индикаторы (если это удобно) складывать не непосредственно в LuaIndicators, а во вложенные в неё папки (удобно, если индикатор состоит из многих файлов или это некое семейство индикаторов по какой-то теме). Именно поэтому я и начал использовать getScriptPath, а с ним такое вот приключение...
в принципе да, вы мне подсказали вашим сообщением вариант как это объехать. Спасибо. Однако я не понимаю что мешает простую (по функционалу) функцию getScriptPath() сделать корректно работающей в этот момент.
Код тестового индикатора ниже. Кладем в папку LuaIndicators, вызываем диалог добавления графика (индикатора). В окне сообщений выводится: {}
Т.е. наш скрипт вызвался, но getScriptPath() вернула пустое значение. Это явно ошибка.
Добавим этот индикатор. В окне сообщений выводится: {} {D:\Quik-Junior\LuaIndicators} <D:\Quik-Junior\LuaIndicators>
Т.е. индикатор сначала выполняется, но getScriptPath() вернула пустое значение. Потом индикатор еще раз выполняется, но тогда уже getScriptPath() вернула правильное значение.
Проблема в том, что первоначальное выполнение, когда только открывали диалог - getScriptPath() вернула пустое значение, а значит индикатор не смог корректно отработать, если в нем используется getScriptPath(), и не добавился в диалог выбора индикатора.
Надо исправить эту ошибку.
Код
Settings = {}
Settings.line = {}
Settings.Name = "*swerg_test"
Settings.line[1] = {}
Settings.line[1].Name = "swerg_test"
message("{".. getScriptPath() .. "}")
function Init()
message("<".. getScriptPath() .. ">")
return 1
end
function OnCalculate(idx)
return 5
end
Причем тут даже не понятно что требовать от QUIK-то. В самом деле, предположим реализована схема "подписался на данные - передал call-back". Но когда это call-back должен вызваться? а) когда данные по подписке проехали - а толку? это ж не актуальные данные; не говоря уж о том, что данных объективно этих может не быть (неликвид) б) когда данные по подписке все доехали - так этого момента никто и не знает.
И как быть? в самом деле, реализацию какого функционала требовать от QUIK? у меня нет идей, увы
Старатель написал: Но в скриптах почему-то неактуальность цифры становится принципиальной. Но почему?
Разное время реакции. Пока трейдер примет решение, котировка поменяется. А скрипт: получил котировку - выполнил действие.[/QUOTE]
Ну т.е. грубо говоря нужен функционал: 1) подписались на новые данные 2) взвели признак (таймер) "позови функцию2" через 1 сек (условный интервал типичной актуализации данных) 3) вышли из функции 4) через секунду считаем, что данные приехали - на этом основании получаем данные и принимаем решение.
Здесь мне видится принципиальным пункт 3), дабы не подвешивать QUIK на sleep() и точно дать ему обработать полученные данные.
Я про то, что QUIK (да и не только) в принципе ведь не позволяет вам узнать актуальные сейчас вы видите данные в терминале или нет. Просто считается что если человек что-то видит - то он принимает на этом основании решение - и это как бы никого не парит (хотя данные могут быть вовсе не актуальными). А вот при автоматизации почему-то непременно начинает всех волновать актуальность данных.
Так может вопрос лишь в подходе к написанию скрипта? Я прекрасно понимаю, что хочется писать скрипт максимально просто и прозрачно, я и сам так делаю: - подписался на данные - прочитал данные - вычислил формулы - принял решение
А область видимости вы как определяете? Или плюс-минус эмпирически подобрали по используемый вами масштаб? Хотя, если двигать график влево-вправо... То как?!