Блог им. dkostiunin

Как я переехал на версию Quik 8.5 ничего не перекомпилируя и не переделывая в роботах. Лайфхак для нубов в программировании.

Из за того, что у меня накрылся на прошлой неделе арендуемый физический сервер, я решил его проапгрейдить  заодно установить в ВТБ новый квик.
В ВТБ  в частности постоянно прилетало сообщение, что надо устанавливать новый квик, что то там с нумерацией заявок на срочном рынке, а так же о том, что версия ЛУА, встроенного в квик, тоже проапгрейдится, и возможно скрипты работать не будут.

Все это пугало, так как программист из меня никакой, все что я умею, это нагуглить, как написать простые логические действия в Питоне или Луа.
В каждом втором посте было что то  про перекомпиляцию, а это для меня вообще не понятно, о чем речь.
Что значит перекомпиляция, если я в блокноте написал код, потом выбрал этот файл в квике, и запустил его нажав на треугольничек?

Ну ладно, деваться некуда, тем более, что когда с сайта ВТБ качаешь дистрибутив квика, там сейчас безвариантивно доступна только версия 8.5

Установил запустил. Скрипт, как и следовало ожидать, на первый взгляд, заработал сразу, без всяких «перекомпиляций». Потому что он написан в блокноте, а переводит в машинный код его (если я правильно понимаю, как все устроено) непосредственно встроенный в квике модуль ЛУА. 

Сам запускаемый скрипт Луа устроен так, что реагирует на события Квика, прошло событие, просто отправляет инфу о событии в скрипт Питона. А уже оттуда по алгоритму отправляются ордера через trans2quik.dll в Квик. Почему я всю логику не написал на Луа, это отдельная тема (я пробовал, но получилось коряво). 
И вот отправление в Питон я сделал через сокеты, это какая то библиотека, которую я в прошлом году нарыл в интернете - core.dll.

И когда произошло событие, вылезла ошибка. Луа скрипт событие не отправил, а просто ругнулся насчет того, что какая то проблема в core.dll. И тут до меня дошло, что по переделывать нужно вот такие ДЛЛ библиотеки.
На текущий момент для меня это не преодолимое препятствие, я не то что не знаю, как ее переделать, я не знаю как вообще такие библиотеки создаются. При этом, очевидно, что никто новые библиотеки еще не успел создать, или перекомпилировать.

Решение следующее, в квике есть (могут быть) файлы lua51.dll lua53.dll, lua5.1.dll, qlua.dll, может еще какие.
В новом квике были три последних файла, а в старом квике только два файла — первый и последний (при этом первый файл я ранее тоже вместе с библиотекой сокетов качал откуда то и тоже им подменил исходный в свое время).
Я просто тупо удалил все эти файлы в новом квике, и вместо них скопировал эти два файла со старого квика.

И все, вуаля, заработало как ни в чем ни бывало.
  • обсудить на форуме:
  • Quik Lua
★24
14 комментариев
Удалить дэ-эль-эльки из живой программы — это сильный ход. Возможно, QUIK когда-нибудь вам отомстит за это… не удивляйтесь))
avatar
В Казино завезли новые рулеточные столы ,  опять нужно о новой привыкать к их работе, а это время и деньги.
Когда биржа перейдет на 19-значные номера, счастье кончится. Работает, пока не перешла. Lua 5.3 туда не зря досунули.
avatar
tashik, не понял вас. Мне то какая разница какие там номера.
Мой скипт луа просто отправляет сообщение в мой скрипт питон.
Это действие от количества цифр в номерах не зависит.
И вообще, биржа перейдет на 19 номера только на рынке фортс, а как же с ФР где количство цифр в номерах другое, или СПБ, который к номерам мос биржи вообще ни сном ни духом?


avatar
Дмитрий К, видите ли, поменяется тип данных, и приходящее значение в номерах заявок и сделок не будет влезать в integer. Lua 5.1 не поддерживает long long. Поэтому они выпустили обновление и перевелись на Lua 5.3. Что и как делает Ваш скрипт — не знаю. Просто Вы запостили это как универсальный рецепт, а он не универсальный, и не факт, что вообще рецепт. Просто пока все по-старому, вот оно и работает со старой Lua. У кого роботы на Lua, и юзается OnOrder и подобное — им так делать не стоило бы
avatar
tashik, ясно в целом. Я действительно в такие ньюансы не вникал в Луа.
Я просто не понимаю, как номера заявок вообще связаны с типом данных Луа. Номера заявок это ведь просто значения, например для экспорта в mysql рекомендуемый тип данных decimal у которого по моему  макс количество знаков до запятой может быть 64. То есть от биржи приходит значение, а в какой тип переменной его сохранит обработчик события, это же не от биржи зависит??? Я так понимаю, можно номер заявки и в строку сохранить?

avatar
Дмитрий К, да, Вы можете использовать строку. В каком формате будет квик отдавать данные, я не знаю. Lua не использую сейчас. DDE вполне хватает на получение данных, а trans2quik.dll на торговлю. У меня есть интеграция C# + trans2quik.dll, мне еще в декабре пришлось переехать на UInt64 для order_num, не лезло в UInt. В MySQL Decimal максимальная длина 65 символов, за это не переживайте.
avatar
Подскажите мне простую для вас и сложную для меня штуку. Как я могу переустановить квик на 8.5 и при этом сохранить все настройки и рабочее место?)
avatar
Rustrade, 

Все настройки таблиц рабочего места Quik хранятся в файле info.wnd.

Информация по настройкам Система\Заказ данных\Поток обезличенных сделок храниться в файле info.ini.

Информация по настройкам Система\Заказ данных\Поток котировок в файлах sec.dat, par.dat, classes.dat.


avatar
Kot_Begemot, огромное спасибо.
avatar
В следующей версии такой финт приведет к глюкам.
avatar
не исключено, что нвый Квик все ваши алгоритмы в lua отправляет куклу, который на их основе делает свои алгоритмы, чтобы бабло у народа отбирать
avatar
alexKa, специально для тех кто в танке, а также для всех честных параноиков, повторяю то, что написал в теле поста- я алгоритмы пишу в другом скрипте, на другом языке, то есть в другом файле, не луа
avatar

теги блога Дмитрий К

....все тэги



UPDONW
Новый дизайн