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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 25 След.
Вопросы к спецам по Lua и Lua C API
 
Не понятен ваш вопрос.
Вы разобрались - но вроде как и не разобрались, судя по вопросу.
Запись открытого интереса в файл.
 
Пишите текстовый файл и не парьте себе мозги.
Текстовый файл проще отлаживать (можно глазами посмотреть), проще поддерживать.
На скорость в общей инфраструктуре работы терминала это не повлияет совершенно.
dll на C: удивительная ошибка...
 
Судя по картинкам - у вас слабенький комп и не хватает GDI ресурсов.
Тёмная тема в самом деле съедает больше ресурсов, т.к. квку приходится все это великолепие отрисовывать самостоятельно, Windows темные темы рисовать не умеет, а вот светлый интерфейс - Windows рисует сама
Новая версия VCLua - библиотеки для GUI
 
Цитата
Cyber написал:
Эту штуку к квику прикрутить можно?

Делал на её основе библиотеку. Работает, много роботов с этой библиотекой есть

https://quik2dde.ru/viewtopic.php?id=111

https://quik2dde.ru/viewtopic.php?id=112

https://quik2dde.ru/viewtopic.php?id=26

Ну и ещё там рядом есть.
Если они штатном добавили поддержку Win кодировки - то и вовсе круто, по сути это была единственная основная проблема, которую решал своей библиотекой

Графиков в смысле отображения торговых данных - встроенных там, конечно, нет
Примеры dll на GCC 64 для работы со скриптом
 
Цитата
Serge123 написал:
Вернее, транслятор ошибку не выдаёт, но для выделения флагов в C придётся преобразовать тип  flags к (u)int64_t, что выглядит не очень красиво...

Это половые трудности того, кто зачем-то пытается делать роботов на Си вместо Lua.

Хочешь по-взрослому - и страдай тогда по-взрослому, не плачь ;)
Примеры dll на GCC 64 для работы со скриптом
 
Цитата
Serge123 написал:
Поясните, почему в таблицах Квика orders, trades, ... переменная flags, хранящая битовые флаги, имеет тип NUMBER (что в переводе на C значит double), а не INTEGER?
Потому что в Lua5.1, которая изначально была прикручена в quik, тип number мог быть либо int, либо double. В зависимости от параметров сборки.
Одновременно int и double там не существовало.
Для QLua выбрали вариант сборки с double, по понятным причинам.

Так оно теперь и повелось.
Примеры dll на GCC 64 для работы со скриптом
 
Цитата
Serge123 написал:
Я несколько лет назад перешёл с Дельфи 7 на си под 64 бит и gcc, теперь неохота сидеть на 2-х стульях.
dll для 64 бит Lua можно отлично делать на Lazarus или современных версиях Delphi, которые научились компилить под x64. Удобно и приятно я бы даже сказал.

Цитата
Serge123 написал:
Теперь меня интересует, как получать в длл таблицы от луа и разбирать их, напр., таблицу заявок и обезличенных сделок.
Информации об API в Lua очень много, почитайте.
Хотя, если честно, я бы рекомендовал писать и отлаживать алгоритмы на Lua. Это намного проще. И только если будут выявляться какие-то узкие места в производительности - что-то выносить в dll.
Сидеть копаться в Си-коде для работы с таблицами Lua - достаточно занудно. Сложного там ничего нет, API очень простое и понятное, но надо постоянно помнить про все нюансы; к тому же то, что в Lua пишется кратко просто и естественно (типа обращения к таблице по ключ)  в Си шном API делается в несколько "команд". Короче краткости там и наглядности - никакой.
Так то не совсем мне понятно зачнем это. Ну кроме выпендрёжа "а у меня весь робот на Си!".

Цитата
Serge123 написал:
оболочку от swerg w32.dll
Вы взяли готовую сборку или собирали самостоятельно?
Примеры dll на GCC 64 для работы со скриптом
 
Цитата
Serge123 написал:
Спасибо, тов. swerg, за наше счастливое детство
Всегда пожалуйста!

Цитата
Serge123 написал:
Кстати, вчера я запустил в квике ваш пример луа скрипта из 1-го поста:  https://quik2dde.ru/viewtopic.php?id=329  Получил сообщение "C stack overflow".
Судя по тому, что в указанном скрипте используется только w32 библиотека могу предположить, что вы используете данную библиотеку не с той версией Lua, в которой запускаете скрипты.

Не понятно мне только почему вы спрашиваете здесь, а не там :)
Примеры dll на GCC 64 для работы со скриптом
 
Для Delphi / Lazarus готовый пример
Коллеги из QUIK подскажите Как считается сумма сделки в стакане по РЕПО ?
 
Это надо искать или спрашивать на сайте биржи.
Не работает скомпилированный cURL для QUIK (Lua-cURLv3), но работает в простом lua-интерпретаторе
 
Для сборки вам не нужны никакие dll
Нужны .h файлы и .lib файлы, соответствующей используемой вами версии Lua (и версии, и платформы x86 или x64).

Можно взять готовые файлы для сборки.
Например здесь: https://github.com/swerg/simple-lua-c-dll/tree/master/contrib
Отладка подключаемой библиотеки Lua, Нужен способ отладки подключаемой библиотеки Lua
 
Дампы терминал при падении пишет. В директорию dmp

А вот с отладкой -  разрабы ее вернули в терминал в версии 9.7.0
https://forum.quik.ru/messages/forum10/message64104/topic7459/#message64104
Для писателей роботов
 
Занимательно, что на хабре так и не появились комментарии. Весьма редкий случай.

Статья описывает организацию серверной части QUIK у брокера. Лично я не встречал столько подробного описания в открытых источниках ранее.
Какую пользу могут вынести роботописатели в терминале QUIK - не очень понимаю. Ну кроме понимания, что "всё не просто"
Как скриптом перемещать фокус по таблице текущих торгов?
 
Какой есть - такой есть.
Для ваших задач он не подходит.

QLua - он про написание автономных торговых роботов в основном, а не про интерфейс.
Ну и свои индикаторы ещё, но тоже много огрсничений
Как скриптом перемещать фокус по таблице текущих торгов?
 
Ответ на все вопросы: нет
Задержка при зачислении бумаг
 
Цитата
Сергей С. написал:
Да, руками тоже задержка при первой покупке бумаги.
Подумал еще вот что уточнить: скрипт ваш в это время работает или нет? при ручном выставлении заявки
Если работает - то отключить и проверить выставление руками
Задержка при зачислении бумаг
 
Цитата
Сергей С. написал:
Да, руками тоже задержка при первой покупке бумаги.
Тогда пишите брокеру и настаивайте, чтобы он решил эту проблему. Это ненормально.
Задержка при зачислении бумаг
 
Начало прошлого сообщения читать так:
А без Lua скрипта....
Задержка при зачислении бумаг
 
А бел Lua скрипта, если руками выставить заявку - изменение в таблице лимитов по бумагам происходит тоже только через 5 секунд? Или эта проблема только в скрипте?
move_orders, move_orders
 
Цитата
krabykraby написал:
0)прав ли я в том, что quik сервер БРОКЕРА когда хочет раздает таблицы с моими заявка, сделками и книгой?
Да.

Цитата
krabykraby написал:
или если он свободен и я запрошу bestBid он раздаст самый последний мне?1)можно ли как то ускорить получение котировок?
Никакая функция запроса  чего-либо в QLua не отправляет запрос на сервер. Возвращается то значение, которое уже получено терминалом на данный момент.

Цитата
krabykraby написал:
что можно "как то" еще толи через FIX, толи через FAST забирать котировки в quik.
Это просто другие интерфейсы обмена биржевой информацией не связанные с терминалом QUIK.
Как запустить скрипт qlua из командной строки?
 
Цитата
Alexander написал:
Я вот бегло посмотрел это. Там пишете, что: "Мне всегда хотелось иметь под рукой консольный аналог lua.exe прямо в папке с QUIK, да еще такой, чтобы можно было выполнять непосредственно скрипты, предназначенные для QUIK,т.е. с возможностью вызова функций QLua."Но я что-то не понял, а откуда там такая функциональность?
Начну с того, что это лишь набросок, который сильно в жизнь пока не пошел. Поэтому что сделано - только то и сделано.
Про функциональность - а какая "такая"? тут бы уточнить.
Разумеется, я не предполагал, что запущенный через qlua.exe скрипт будет получать информацию из QUIK и отправлять биржевые транзакции. Во всяком случае на тот момент, когда всё это затевалось.

Хотелось просто иметь возможность запускать Lua-скрипт для отладки какого-то алгоритма или какой-то функции. Потом этот отлаженный функционал использовать уже в реальных торговых скриптах.

Однако, если запустить скрипт написанный для QLua в штатном lua.exe, то скрипт вовсе не будет работать, т.к. он в любом случае использует некоторые функции, которые добавлены в QLua. Та же message. Если используется в скрипте - он будет тупо ломаться. А менять постоянно print / message не очень-то удобно.

Вот такие задачи и ставились при написании этой штуковины, не более.

Цитата
Alexander написал:
далее в цикле читаются аргументы переданные вместе с именем файла и пишутся в созданную в стеке таблицу и далее создаётся глобальная переменная и ей присваивается эта таблица
Эта функциональность сделана просто по аналогии с lua.exe, это к QLua уже не имеет отношения.

Цитата
Alexander написал:
Так же там написали функцию const char *luaL_tolstring(lua_State *L, int idx, size_t *len), зачем? Она же уже есть в Lua.
Но ведь там даже комментарий есть и условная компиляция.
luaL_tolstring появилась только в последних версиях Lua, а qlua.exe делался с возможностью компиляции под разные версии Lua, включая 5.1 и 5.2
И так как luaL_tolstring ну очень удобная - я перенес себе ее исходники.
Как запустить скрипт qlua из командной строки?
 
Ну вот какого  ответа вы ждёте?
Очевидно, что такой функциональности в QUIK нет.

Сделать можно , если наладить связь между процессами
а) QUIKа, с одной стороны
б) и собранным вами запускаемым exe-шикном, который будет уметь подхватывать Lua скрипты и выполнять их.

По пункту б) как пример для начала есть https://github.com/swerg/qlua-exe

Для связи между процессами есть библиотека lua_share https://quik2dde.ru/viewtopic.php?id=306
Опять же можно взять её исходники за основу.

И вот всё это скрестть и что-нибудь намутить. Если еще останется желание :)
как получить размер плеча по инструменту (DLong) через QuikSharp?
 
Официальная поддержка чгео?
QuikSharp - сторонний продукт. Обратитесь к его разработчикам.
Из скрипта qlua подключится в БД mySQL
 
Описал как устанавливать библиотеку MySql для Lua
В чём преимущество OnInit
 
Ziveleos, и? Я что-то неправильно написал? Тогда напишите в чем я неправ.

Один FTP и HFT путает, другой недоволен, что его не там процитировали.
А по делу-то что в итоге?
В чём преимущество OnInit
 
Цитата
VPM написал:
Уважаемые форумчане вот инструкция от разработчика.
И что? что вы хотели этим сообщением сказать?
В чём преимущество OnInit
 
При нажатии кнопки "Запустить" (скрипт) он именно выполняется интерпретатором Lua, предварительно переводится в байт-код. Весь полностью код.

Наверное не все помнят, но привычная нам запись
Код
function MyFunc()
{
}


на самом деле синтаксический сахар. Фактически же это означает (и эквивалентно)
MyFunc = function ()
{
}

т.е. определяется глобальная переменная с именем MyFunc, которой присваивается значение с типом "функция". (Да вы сами посмотрите через type())
А чтобы переменной присвоить значение - скрипт надо выполнить.
В чём преимущество OnInit
 
Цитата
Ziveleos написал:
давно интересовал этот вопрос: какая разница между body и OnInit, и зачем он вообще нужен?
Выше в этой ветке давно же уже написано: из так называемого body не все функции QLua корректно работают (во всяком случае на такое натыкались ранее; речь про разные хитрые функции типа создание DataSource или чего-то такого; изменилось ли что-то с тех пор - не знаю, если найти на форуме на что именно жаловались - то можно проверить)
В то же время на момент выполнения OnInit() уже точно любые функции QLua будут работать корректно. Плюс бонусом передается путь до скрипта, если он требуется.

Т.е. вообще говоря, OnInit() QUIK вызывает так сказать осознанно, когда все готово и известно, что такая функция в скрипте определена.
Но вот чтобы узнать какие callback-функции в скрипте определены - QUIK (да и  вообще Lua) вынужден весь скрипт полностью выполнить, это определит для Lua имеющиеся в скрипте функции, про них станет известно. И, разумеется, при этом выполняется тот самый код, который написан мне функций и который я когда-то назвал [BODY] в своей документации описания QLua. И термин этот прижился, так теперь все его и использ0уют.

Вот и вся разница. Чем пользоваться - да все равно. Если ваш инициализирующий код корректно работает в [BODY] вам такой стиль нравится - то и замечательно. Если хочется чего-то этакого - пользуйтесь OnInit(), если так вам удобнее понимать лдогику собственного скрипта. Скорее вопрос привычек, короче. Ну за исключением нюанса вызова некоторых функций. Но если вы с таким нюансом не сталкиваетесь - значит либо вы такие функции не используете, либо QUIK этот момент давно починил.

Еще раз.
Выполнение [BODY} - чисто технический момент.
Т.е. QLua сначала просто выполняет Lua-скрипт, при этом - главное - в глобальной области видимости для Lua-машины появляются определенные в скрипте callback-функции. После этого QLua уже может узнать какие callback-функции определены в скрипте и после знает какие callback-функции надо вызвать, т.к. они есть, а какие не надо, т.к. их нет. Вот и все, вот и весь "секрет".
А то, что при этом выполняется остальной код, расположенный вне функций - просто неизбежность, никакого глубокого смысла в том нет.
Работа нескольких скриптов с одним файлом, Выдает периодически ошибку при работе нескольких скриптов с одним файлом
 
Дмитрий, а с какой целью вы пишете файл и читаете?
Вам нужен обмен данными между скриптами?
LUA и PIPE
 
Цитата
Михаил Филимонов написал:
ведь в LUA есть принудительная задержка в 1 мс.  
Занятное утверждение. На чем оно основано?
getClassSecurities со списком классов
 
Техподдержка, ау!!
Вопрос так-то к вам
Сохранение стакана, Описание эксперимента с сохранением стакана
 
2) ничего не синхронизируется. Всё едет независимо. Как приехало - так отобразили.
Купили историю заявок на бирже? Серьёзно??
В вашем файле время формирования информации, не более.
getClassSecurities со списком классов
 
nikolz, епрст
Ну ладно я невнимательно прочитал, но ты??

Вопрс мой про то как список классов задать. Именно список и именно классов на входе в функцию
getClassSecurities со списком классов
 
Скачал поновее версию терминала - в самом деле, там уже дописали этот нюанс
Спасибо
getClassSecurities со списком классов
 
В справке про функцию  getClassSecurities  написано:
Цитата
Функция предназначена для получения списка кодов бумаг для списка классов, заданного списком кодов.
Вопрос: в каком формате следует передавать этой функции список классов? Хорошо бы пример.
В справке нет примера для списка классов.
Номер строки в коде скрипта, Вывести номер строки в коде скрипта
 
Вставляйте в начало строки логирования любой уникальный текст. Уникальное число или набор букв. Еще лучше - осмысленный.
Потом к коде скрипта эту метку легко будет искать.
Как подавить вывод командного окна при запуске exe-файла из Lua?, popen execute
 
У вас выскакивает окно cmd
Зачем вы пишете start?

Запустите просто свой экзешник без start и cmd
При запуске скрипта Quik выдает ошибку: "C stack overflow", При переносе скрипта с 8 версии на 10 выдает эту ошибку.
 
не с теми lib-файлами собран проект значит был
Какая кодировка используются в Lua?
 
Alexander, строки текста откуда берутся? в cpp файле в тексте программы?
А cpp-файлы в какой кодировке-то у вас сохранены? сможете определить?
Связывание глобальной callback функции
 
Цитата
Quikos написал:
function main()

Quik_Lua_connector = require("Quik_Lua_connector ")  
Блин, так вот он и секрет.
Не надо require внутрь main() размещать. Должно быть расположено вне любых функций.
Коллеги как подключить LUA SOCKET к QUIK 9 ?
 
Цитата
Alex написал:
Надо инсталировать lua socket  или просто кинуть в нужные директории нужные файлы
Достаточно кинуть в нужные директории

Цитата
Alex написал:
И где их найти? )
Собрать или скачать, если кто-то собрал.
Ошибка при запуске Lua скрипта
 
Да
Ну или собрать из исходников, учитывая слабоватую бинарную сраместимость разных линуксов
Ошибка при запуске Lua скрипта
 
Такое впечатление, что VDS линуксовая, а core.dll вы положили собранную для Windows.
Это так?
Консоль в dll подключенной к Quik ?, Больше не работает ?
 
А когда работало? Не понятно
Отладка своей dll подключенной к Quik ?, Quik вылетает !
 
Цитата
BVladimir написал:
Что конкретно ставить нужно для отладки,
https://github.com/swerg/qlua-exe

Автономный exe, в него можно подпихивать тестовый скрипт и отлаживать функции своей dll
Отладка своей dll подключенной к Quik ?, Quik вылетает !
 
В QUIK с какой-то версии  вернули защиту от отладки.
Кому и с зачем пришла в голову столь "светлая мысль" - в ряд ли мы узнаем. Но своё фи  непременно передадим посредством этого форума.
Была где-то тема здесь уже на этот счет (на счет того, что вернули защиту от отладки).
debugging для терминала ^9
 
Пошагового отладчика нет. Ни встроенного, ни внешнего.

Помимо message и вывода в лог-файл еще есть вариант использовать функцию PrintDbgStr. По ссылке подробно написано как.
Кстати, описанная там методика позволяет увидеть ошибки при загрузке скриптов индикаторов, что неочевидно :)
Создать новый стек Lua, Создать новый стек Lua
 
В новом стеке есть только функции чистого Lua.
Специфичные для интерфейса QUIK функции добавляет QUIK.
Вопрос по индикатору
 
По текущей дате определять день недели, в нужный день недели сбрасывать.
Или в чем проблема-то?
Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке, Вызов простой функции Lua из С++ ВСЕГДА приводит к ошибке
 
Выяснили. Использовались неудачные сборки библиотек.
https://quik2dde.ru/viewtopic.php?id=401
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 25 След.
Наверх