Quik is legacy Russian trading terminal used by 90% of Russian brokers. It has built-in support of LUA scripting language. This project is an attempt of building high quality code in LUA: OOP, unit testing, unit test mocks, code coverage.
Универсальный фреймворк для экспорта любой информации доступной через LUA Quik. Построен на основе модульной архитектуры. Этот проект - возможность для меня изучить LUA, и понять возможно ли написать на этом языке, что-то более сложное чем простые скрипты. Оказалось, что возможно создать полноценный ООП, реализовать юнит тесты, mocks, и coverage.
В разработке, но 100% покрыт тестами.
- ParamsHandler - текущие котировки
- MetadataHandler - информация об активах (дата экспирации, страйк опциона, базовый актив, размер тика)
- OHLCHandler - история цен за период
- OptionChainHandler - доска опционов
- GenericTableHandler - экспорт любых доступных таблиц в Quik
- Сделать
git clone https://github.com/alexveden/quik-lua-datafeed.git
- Сделать копию
config.example.lua -> config.lua
в папкеquik-lua-datafeed
- Отредактировать конфиг под себя
- Добавить
quik-lua-datafeed/quik_lua_datafeed_main.lua
в LUA скрипты Quik и запустить (LUA 5.3!)
В папке quik-lua-datafeed/handlers
можете найти варианты обработчиков данных от Quik, они подписываются на события или по
таймеру вызывают API Квика для получения данных. Эти данные компонуются в таблицу LUA, и передаются на transport
, который сериализует
key
и data
.
Transport при сериализации для ключей из таблицы {'key', 'subkey1', 'mykey'}, по умолчанию создает строку вида "key#subkey1#mykey" (хотя это может зависеть от реализации каждого транспорта индивидуально). Данные - это обычная таблица ключ-значение, и по умолчанию они сериализуются в JSON.
Transport одновременно выполняет роль интерфейса для хранилища данных.
см. quik-lua-datafeed/handlers
- QuikStats - собирает текущий статус Quik, сохраняет с ключом
{'quik', 'status'}
(транспорт -> "quik#status"), в данные идут все доступные значения функцииgetInfoParam
см. quik-lua-datafeed/transports
- TransportLog - пишет JSON в logger (полезно для отладки)
- TransportMemcached - сохраняет данные в Memcached server, с ключами вида "quik#status", данные JSON
- TransportSocket - передает данные через UDP socket, с ключами вида "quik#status", данные JSON
см. quik-lua-datafeed/loggers
- LoggerFile - пишет лог в файл
- LoggerSocket - пишет лог в UDP socket (сервер для чтения логов на Python
examples/socket_logger_server.py
) - LoggerPrintDbgStr - лог через функцию
PrintDbgStr()
- LoggerMulti - позволяет комбинировать несколько логгеров в 1
- Системные требования
- Lua 5.3. stand-alone
- luarocks
- Требуются пакеты
# для фреймворка (в папке quik-lua-datafeed/lib уже есть, для запуска тестов нужно поставить отдельно или прописать в пути)
luarocks install cjson
luarocks install luasocket
# для тестов
luarocks install luaunit
luarocks install luacov
luarocks install luacov-html
- Пишите тесты, в каталог
/test/
Буду рад любым вопросам в issues, и не забудьте поставить звезду если пользуетесь проектом!