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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 15 След.
Изменения в работе с колбеками LUA в новой версии
 
Цитата
TGB написал:При останове любого скрипта порождается событие <OnStop>, которое
Об этом и мой вопрос: как скрипту себя остановить? как сказать "я устал, я ухожу, не дергайте больше мои колбеки" без наличия main() ?
Изменения в работе с колбеками LUA в новой версии
 
Вообще говоря морока с main() была в QUIK внедрена по глупости считаю.
В каком потоке обрабатывать колбеки - это отдельный разговор, непосредственно к main() не имеющий отношения.
Но с main() квиковцы внедрили такую логику: колбеки вызываются до тех пор, пока не произошел выход из main(). Как вышли (добровольно, замечу!) из main() - так вызов колбеков прекращается.

И вот на какой вопрос я при этом не нахожу ответа. Если бы не было main() - каким образом останавливать обработку колбеков, когда автор скрипта уже не хочет чтобы колбеки вызывались? ну вот в самом деле, нельзя же все время для всех скриптов вызывать колбеки. Или можно?
Как этот момент решается на других платформах, кто-будь может рассказать? я вот сколько на метатрейдер смотрел - так и не смог найти ответ на вопрос: когда же "колбеки" из скриптов в нём перестают вызываться?
Изменения в работе с колбеками LUA в новой версии
 
Свежие мечтатели к нам подключились, похоже :)) Которые еще не знают истории про "пожелание зарегистрировано".

Цитата
Александр написал:
lua5.1 + jit

Многопоточности в jit нет, в этом беда. А модель API для qlua сделали в QUIK многопоточной по самой идее, так что jit, похоже, нам с вами не светит никогда. Грусть.
Одновременная работа двух Торговых систем с одним инструментом, подкиньте идей
 
Цитата
Nikolay написал:
Владимир, это же написано в документации к расширению языка от разработчика

Как уже всем известно, документацию Владимир не читает? так что смысла давать на неё ссылки - нет, увы. Разве что только ушат помоев получите в ответ (уже получили, как видите).
Одновременная работа двух Торговых систем с одним инструментом, подкиньте идей
 
Цитата
Олег написал:
Цитата
Владимир написал:
Я не понимаю, что такое "торговая система"
Скрипт Lua

:shock: Неожиданно. Вольное применение терминологии - это здорово, конечно, но как же вас понять-то тогда??

Т.е. у вас 2 разных Lua-вкрипта торгуют одним и тем же инструментом на одном классе, так? ну и ведите в каждом из них свою позицию по куплям / продажам. При надобности пишите в два разных файла, в каждом скрипте в свой файл.
Но до добра это всё не доведёт, по-моему. Один скрипт покупает, другой тут же продаёт - в чем финансовый результат таких прикольных действий?
Изменения в работе с колбеками LUA в новой версии
 
Да не будет там изменений, что вы так переживаете. С чего вдруг?
Изменят техническую реализацию - вот и все. Сути никак не поменяет
Одновременная работа двух Торговых систем с одним инструментом, подкиньте идей
 
Не понятно в чем проблема-то у вас?
Брокер специально для вас сделал волшебство: как-будто вы продаете / покупаете один актив в разных системах. Готовый арбитраж.
(На самом деле юридически, конечно же, это разные активы, разных торговых площадок, и брокер на разных площадках депонирует для вас эти разные по сути активы, однако для удобства в терминале неттирует для вас позиции по разных площадкам, как-будто это один и тот же актив.)

Но что хотите вы - не понятно.
Хотите вести и видеть раздельные позиции по каждой торг. системе?
Уточните у брокера, вдруг он умеет отключать это волшебство неттирования.
Предложение к разработчикам
 
Цитата
_sk_ написал:
Да откуда же вы такие берётесь?  :unamused:  

Вот тоже самое хочется сказать.
Похоже, очередной выпуск на пенсию состоялся. Варились в собственном соку 40 лет да так, что протухли уже.
Предложение к разработчикам
 
Вот именно за использование в программах "чуть посложнее" и отрывать.
Предложение к разработчикам
 
Цитата
Владимир написал:
Только вот нюансик: goto и нужен именно для того, чтобы входить внутрь блоков if!

Руки оторвать по самые ноги таким программистам, кому пришла в голову  столь дурацкая затея.
Время ММВБ, Servertime не предлагать
 
Цитата
Mikhail
А статус сессии биржа транслирует?

Конечно. Все значения параметров, какие вы видите в QUIK - транслируют биржи. QUIK лишь транспорт.

Цитата
Mikhail
PS. При остановках торгов внутри дня для раздвижки планок статусы показывают, мол торговля ведется.

Надо на оба параметра смотреть.
Торги идут только при единственной комбинации этих параметров. При любой другой нормальные торги не идут.
Время ММВБ, Servertime не предлагать
 
Заявки не могут"улетать вникуда".
Они либо выставляются, либо нет.
Можно проанализоровать, если заявки не выставились - выставить снова.

А еще есть параметр "Статус сессии" или типа такого, если в хотите попасть ровно поближе к началу сессии. Поставьте на него колбек - и как откроется - пулите заявки.
Там может быть два параметра "статус сессии" и ,"период сессии" или что-то такое, посмотрите как они выставляются в нужный вам момент времени.
Вопросы Новичка
 
Можно из одного терминала подключаться к разным брокерам (не одновременно, конечно). Ну если это вдруг удобно будет.
https://iquik.info/2012/03/20/iquik-how-to-connect-to-different-brokers-account/
Информация для обычного терминала тоже полностью подходит.
Вопросы Новичка
 
https://arqatech.com/ru/support/demo/

Ну и у брокеров тоже есть, обратитесь к вашему брокеру
Предложение к разработчикам
 
Цитата
Nikolay написал:
А зачем "рекомендованное", если есть книга от автора языка.
Купите или "купите" уже книгу Роберту Иерузалимски "Программирование на языке lua", если уж на сайте языка никак не получается.

Объем знаний по собственно языку Lua - это лишь десятая часть того, что необходимо знать для написания сколь-нибудь качественных роботов в QUIK.
Так что книжка по Lua - это прикольно, но я подразумеваю, что она (или аналогичное по собственно языку) автором уже усвоено, и дальше наконец-то начинается самое интересное. Ну я надеюсь, что усвоено, хотя как показывает эта ветка...
Как определить используемую версию версию синтаксиса lua в терминале ?
 
Цитата
Андрей написал:
Dll это не исполняемый файл интерпретатора. Скорее всего ЛУА зашит в код.

Соберите exe-шник и будет вам "исполняемый файл", использующий для работы qlua.dll или Lua53.dll в зависимости от версии терминала.
https://github.com/swerg/qlua-exe
Предложение к разработчикам
 
Цитата
Владимир написал:
Это говорил не Александр, а я.

Да, приношу извинения Александру, неаккуратно выделил пользователя из вложенной цитаты.
Вопросы Новичка
 
Цитата
agrevbethh написал:
можно ли делать заявки когда не работает мос биржа?

На мос биржу - конечно нет.

Для тестов можно использовать т.н. "игровой сервер". Движение цен там нереальное, да еще и зацикленное, зато работает 24 часа в сутки, отработать механику собственно выставления заявок вполне можно.
Предложение к разработчикам
 
Цитата
Maksimus написал:
Скачать справочник по LUA с оф.сайта, там не справка,а просто пару строк о каждой функции написано,и что и как делать,вообще не понятно!!!

ftp://ftp.quik.ru/public/updates/
В архиве терминала с каждой версией разработчики выкладывают документацию по применению Lua в QUIK, в описанием, примерами. Для кого? Для чего? Чтоб не осталось в стороне...
Есть, конечно, разные претензии к этой документации, но она таки есть.

Ну или почитайте здесь:
https://quik2dde.ru/viewtopic.php?id=16

Цитата
Maksimus написал:
И самое главное,беру скрипт из справки,запускаю его,и он чудесным образом выдает ошибку!

Тут бы пример не помешал. Иначе пустозвонство получается.

Цитата
Maksimus написал:
Если б сбер использовал MT4,MT5, никогда бы не стал изучать этот язык!!!

А вот кстати, в самом деле: где Метатрейдер 5? где этот убийца Квика?? ну в самом деле, не понимаю.
Предложение к разработчикам
 
Цитата
Александр, Я умею и читать документацию

https://lua.org.ru/contents_ru.html
Официальная документация, даже на русском.
Пункт 3.3.4 – Управляющие конструкции, где написано про goto

Вывод, увы, прост и печален: документацию вы читать не умеете.
Не могу инстолировать LuaCOM под Lua 5.3.5 64-бит
 
Есть рабочая сборка luacom для x64/Lua5.3
Напишите swerg@swerg.ru если требуется
Работа main() при наличии 1 ядра
 
Цитата
Христиан написал:
как будет работать main() в отдельном потоке при наличии только 1 ядра? Все ли будет работать или нужно минимум 2. Поправьте если я чего-то не понимаю, спасибо

Да, все будет работать.
Как именно - зависит от вашего скрипта.
Если у вас main просыпается раз в 100 мс и просто проверяет не нажата ли кнопка "стоп", посл чего снова уходит в sleep(100) - то не проблема.
Если же у вас main постоянно работает не засыпая на sleep и загружает полностью одно ядро - то, увы, общая скорость работы терминала в такой схеме заметно просядет, т.к. терминал будет делить единственное ядро с постоянно загруженным потоком main.
Работа main() при наличии 1 ядра
 
Цитата
TGB написал:
Я думаю, что разработчики QUIK это, наверное, понимают и не подавляют параллелизм выполнения таких функций ( а они есть).
Разработчики QUIK, очевидно, не могут сделать что-то другое, кроме как использовать блокировки, встроенные в Lua. А блокировки там сделаны так, что никакого "умного" блокирования не производят. В самом деле: как интерпретатору Lua различать хранение локальных и не локальных переменных? в обычных компиляторах с локальными переменными в разных потоках все просто, ибо они размещаются на стеке - волшебно выделяемом / освобождаемом ресурсе, но Lua-переменные - штуки более сложные, плюс с управляемым временем жизни через сборщик мусора. Так что увы, волшебства никто делать не будет.
Работа main() при наличии 1 ядра
 
Цитата
TGB написал:
В нативном коде Lua лок пустая операция во всех функциях C-API.
И поэтому "нативный", как вы его назвали, код Lua не предназначен для многопоточного выполнения.Хотите многопоточности - необходимо прописать реализацию функции lua_lock, что в QLua, очевидно, и сделано.
Роботы всякие и прочие глупости
 
Цитата
swerg написал:
Собственно о том как понять актуальные данные или нет приходят в Lua-скрипт (и терминал) - и состоит вопрос этой ветки.

Если сформулировать чуть точнее, то, видимо, нужен признак: те данные, которые сейчас получил терминал (и Lua-скрипт) - это последние полученные (и отправленные) сервером на данный момент данные, или мы получаем "исторические данные", которые сервер по каким-то причинам решил заново послать на терминал.
Роботы всякие и прочие глупости
 
Цитата
Владимир написал:
НЕ МОЖЕТ быть такого способа! НЕ МОЖЕТ! В ПРИНЦИПЕ не может! А "рекомендованный лучшими собаководами" я тоже давал (в другой ветке). Цитирую: "Квик как-то получает данные, которые лично я намерен считать априори достоверными и не контролировать это дело вообще никак. Луа получает эти данные от Квика".

Торговый робот выставляет заявки, ориентируясь на получаемые данные.
Причем заявки выставляются на биржу в момент выставления их роботом, очевидно. В тот же самый момент для принятия решения робот опирается на те данные, которые он в это самый момент получает из терминала (а тот от сервера брокера, который тоже QUIK). И если данные окажутся не актуальными, то, очевидно, заявки на биржу будут выставлены совсем не те, которые ожидались разработчиком и алгоритмистом торгового робота.
Отсюда и возникает острая надобность отличать актуальные получаемые данные от неактуальных.

Собственно о том как понять актуальные данные или нет приходят в Lua-скрипт (и терминал) - и состоит вопрос этой ветки.
Очевидно, лишь разработчики могут подсказать ответ. Если ответа всё еще нет - то хотя бы донести до них в очередной раз простую штуку: такой признак очень требуется!!

Судя по написанному вами в этой ветке - вы таких роботов не разрабатывали и/или не эксплуатировали сколь-нибудь продолжительное время. О чем не я первый вам говорю, кстати. Именно поэтому - лелея последние остатки надежды на вашу адекватность - я так подробно вам написал всё это.
Дальше уже ваш выбор: продолжать ли вам общение в этой ветке и в каком тоне, господин "профессиональный алгоритмист".
Роботы всякие и прочие глупости
 
Цитата
Sergey Gorokhov написал:
Михаил, к чему это все? Мы же с Вами уже не один год общаемся и ровно этот вопрос совершенно точно уже обсуждали.ответ не поменялся, надежного способа нет, есть разные варианты которые могут дать более менее правдивую оценку актуальности данных.
Позволю себе ответить за Михаила на вопрос "к чему это все".
Всё это, очевидно, к тому, что, как вы верно написали, " уже не один год общаемся", но до сих пор "надежного способа нет". Хоть бы сколь-нибудь надёжного или, хотя бы, "рекомендованного лучшими собаководами" (с)
Отсюда и эмоции. И крайне странно не понимать такую простую взаимосвязь.
Не является приложением Win32
 
Цитата
Let_it_go написал:
смысл понятен - мне надо 32 битную, а тут 62. Но как с этим бороться, - не понимаю.

Скорее наоборот: вам нужна версия библиотеки x64 (причем для Lua 5.3), а у вас библиотека собрана под x32 платформу.
(я понимаю, что вы можете не согласиться с таким толкованием, читая сообщение об ошибке, однако такое сообщение следует отнести просто в разряд специфичного юмора программистов из одной не особо известной компании МикроСофт)

Что с этим делать?
Пути два:
1) Обратиться к автору библиотеки и попросить его собрать для вас вариант x64 для Lua 5.3
2а) Если вы знаете где взять исходники - обратиться к тому, кто понимает как сделать пункт 1)
2б) Самостоятельно проделать пункт 1)
Если исходников нет  - увы, ничего поделать нельзя.
При входе в сделку, цена отскакивает на 50 - 200 пунктов. Обман брокера?
 
Все графики биржевые (постфактум) - общедоступны.
Достаточно взять график из любого источника и убедится, что он именно так объективно менялся, как вы видели в терминале.
Если не так - тогда уже есть с чем предметно разбираться.

PS
Это стандартная история: пока я не поставил ставку - все менялось строго по моим прогнозам. Как я поставил ставку - все пошло не так! меня обманывают!!
Ну разумеется, именно так всё и было.
Пожелание по работе с окнами программы.
 
А еще в терминале есть такая клёвая супер-кнопочка с плюсом (на панельке "стандартная")

Её нажимаешь - открывается диалог со всеми доступными окнами, причем с окном фильтрации вверху. В фильтр вписываешь часть названия нужного окна - и вот оно, под руками оказывается.
Пожелание по работе с окнами программы.
 
Цитата
Gla написал:
Почему нет возможности вызвать это окно просто?
А зачем закрывать эту таблицу?
обычно настраиваешь терминал как удобно, с нужными таблицами - и пользуешься. И когда один раз настроил (да, изрядно помучившись со специфическим интерфейсом) - то уже более-менее забываешь про все эти странности и сложности с поиском окон, потому что они уже есть, настроенные как надо.
Индикация языка ввода
 
Цитата
Gla написал:
Некоторые пижоны делают еще и - символы не латиница - просто не вводятся в поле программно. Блокирована возможность.
По-моему это какие-то криворукие программисты, которые просто не могут не латинницу в пароле корректно переварить.
Так-то использование не латинницы в пароле вообще напрочь убивает возможность подбора пароля.
Индикация языка ввода
 
Windows же показывает раскладку в трее. Не? или хочется видеть поближе как в WebMoney?
Библиотека qvcl x64. Отрисовка интерфесов в восьмом квике
 
Есть qvcl для Win64
кому требуется срочно - пишите swerg@swerg.ru
запуск GUI на lua дистрибутиве отдельном от quik, qvcl gui на 32bit lua
 
Есть qvcl для Win64
кому требуется срочно - пишите swerg@swerg.ru
Как выполнить команду от имени серверной консоли через lua файл?, Как выполнить команду от имени серверной консоли через lua файл?
 
Не понятен вопрос.
Что такое "серверная консоль"? Вы хотите, чтобы программа запустилась на стороне сервера QUIK? или чего-то другого?

Если речь про запуск какой-то программы из Lua (на том же компьютере, где запущен терминал QUIK, разумеется) - то воспользуйтесь в Lua os.execute
Например:
os.execute("C:\\Windows\\System32\\calc.exe")

Не забывайте удваивать обратные слеши в строках
Ограничение 50 транзакций в секунду
 
Цитата
swerg написал:
Это можно объяснить как меньшее кол-во заявок в секунду по вашим замерам, так и одновременность их обработки.
Уточнение:
Этим можно объяснить.... и далее по тексту.
Ограничение 50 транзакций в секунду
 
Вполне может еще сетевой буфер влиять: несколько транзакций по факту накапливаются на вашей стороне в один сетевой пакет, после чего весь макет одновременно уезжает серверу, где они все сразу обрабатывает
Это можно объяснить как меньшее кол-во заявок в секунду по вашим замерам, так и одновременность их обработки.

Попробуйте связаться с брокером и уточнить у него по чем для вас встанет для вас увеличение допустимого количества транзакций в секунду. Вдруг это будет обозримая цифра.
Ну либо придётся менять алгоритм, избавляюсь от простой идеи одновременного снятия буквально всех заявок. Наверняка ведь вашу торговую идею можно реализовать иначе, красивее и без внезапного снятия буквально всех выставленных заявок.
Проблема с выводом в пользовательскую таблицу
 
Цитата
e2e4 написал:
Далее окно диалога управления подвисает на 5 секунд. Откуда это время понятно, ожидание завершения потока функции main по умолчанию.
А мне не понятно откуда в этом коде возникает этот timeout
Вроде всё должно завершиться сразу и корректно, т.к. в OnStop есть IsRun = false
Чисто для прикола отлогируйте значение IsRun из main() и других мест, ну мало-ли какая мистика.

Пока похоже на косяки обработки обращения к пользовательским таблицам из main(), вроде про это были жалобы на форуме.
Скрипт прекращает работу, а не должен, Скрипт прекращает работу по непонятной причине, как ее выявить?
 
Sergey Gorokhov, скажите: я верно понимаю, что скрипт останавливается только в 2-х случаях:
1) Либо произошел корректный выход из main() -> тогда в окне скриптов не будет ошибки (и других сообщений)
2) Либо произошла какая-то (любая) ошибка  -> тогда в окне скриптов гарантированно будет отображена ошибка

Верно? других вариантов нет? Точно нет?

Если так, то Иван Ру будет достаточно добавить логирование условия выхода из цикла main() и всё станет понятно.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
Цитата
Anton написал:
Константин Рейм , вернете первый найденный класс.
Так в этом и состоит вопрос: как найти ОДИН подходящий класс. А не список.
И подход в сообщении Константин Рейм совершенно и единственно правильный: задать свой порядок приоритета для поиска класса среди общего списка, и уже основываясь на этом списке искать первый класс, куда входит инструмент, чтобы исключить "неподходящие" классы.
Почему Quik 8.5.2.11 Открытия Брокер не работает под пользователем при установке в Program Files
 
Цитата
Anton написал:
Цитата
Подавляющее меньшинство. У меня жестко настроены SRP, со знанием дела это говорю. В основном самодельщина этим страдает, ну и ancient software, включая квик. Вот на этапе установки многие пытаются распаковаться в temp и стартануть оттуда, это да.
Google Chrome и прочие ему подобные браузеры, WatsApp, Скайп, Zoom. Это та "самодельщина", что с ходу пришла на ум.
Большинство это или меньшинство - я не знаю, однако ж это наиболее массово используемые сейчас программы, согласитесь. И все они по умолчанию без спроса ставятся в user\AppData и т.п. и практически молча обновляются там же, не понятно что неся в себе.
Почему Quik 8.5.2.11 Открытия Брокер не работает под пользователем при установке в Program Files
 
Цитата
aspen63 написал:
Цитата
Не стоит рассказывать мне, как семерка не работала из PF (x86). Она у меня и сейчас оттуда работает в другой виртуальной машине.
Проверьте включен ли у вас UAC и что там с правами на каталог с QUIK. Наверняка выяснится, что либо UAC отключен наглухо, либо на папку с QUIK выданы права на запись всем пользователям.
Ничего нового тут нет, QUIK так работал всегда.
Почему Quik 8.5.2.11 Открытия Брокер не работает под пользователем при установке в Program Files
 
Цитата
Старатель написал:
Цитата
Ещё не хватало, чтобы Арка заморачивалась с профилями, групповыми политиками и прочая
QUIK вполне себе работает на несколько пользователей на машине за счет того, что все настроечные файлы читает из "рабочего каталога", а не оттуда, где лежит info.exe И туда же и пишет, если не ошибаюсь.
Механизм не в стиле Microsoft, но рабочий. Да и докрутить его до поддержки доменных политик не сложно, достаточно рабочий каталог указывать в профиле пользователя через подстановки.
Вопрос про демо-счета Quik
 
Нету.
Почему Quik 8.5.2.11 Открытия Брокер не работает под пользователем при установке в Program Files
 
Прикольно, конечно, у винды получилось: с одной стороны хорошо и по делу защитили Program Files
С другой - теперь все проги ставятся в user/local, чтобы была возможность лёгкого и незаметного их апдейта
Выходит в мире не решили толком проблему удобства пользователя и защиты
Как обычно, удобство победило безопасность
Звук Lua в фоновом режиме
 
Цитата
Иван написал:
Единственный нюакнс который заметил - как полагаю на время запуска звука приостанавливает работу скрипта. Может ошибаюсь - но все же это доли секунд.
Проигрывать файлы - затратно. Даже если само проигрывание идет асинхронно, надо до возврата из функции загрузить указанный файл (чтобы знать случилось ли это успешно), проинициализировать звуковую карту и разные прочие накладные расходы. На это время, понятно, всё приостанавливается.

PS
Сборка w32.dll для QUIK 8.5 уже выложена
Уберите всплывание окна QUIK на передний план в момент загрузки
 
Цитата
Sergey Denegin написал:
он и без индикаторов грузится долго. ну как долго минуты 3,  иногда больше
Запускайте QUIK батником, куда первой строкой впишите del info.log
И проблема с долгим запуском отпадёт сама собой без каких-либо проблем.
изменение средней цены при продаже
 
Есть просто разные подходы к расчету "средней цены позиции", зависит от требуемого результата и деланий.
QUIK в "Таблице лимитов по бумагам"  рисует в самом деле "цену приобретения". Которая, как очень удачно и красноречиво показано выше на примере закупочной цены картошки, не изменяется при продаже.
Однако часто трейдер желает видеть другой параметр - цену "безубыточной продажи" для оставшихся ведер картошки. А вот эта цена уже зависит от того, по чем был продан предыдущие партии ранее закупленного картофеля.
таблица Доступные скрипты 8.5.2.11, таблица Доступные скрипты 8.5.2.11
 
Цитата
Egor Zaytsev написал:
Ваше пожелание зарегистрировано.
Этот колхоз имени 8 марта меня искренне поражает.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 15 След.
Наверх