Skip to content

Lua library for connecting Evraon with Quik terminal

License

Notifications You must be signed in to change notification settings

avently/EvraonQ

Repository files navigation

Эта библиотека позволяет "общаться" торговым терминалам Evraon и Quik. Через нее можно получать информацию с бирж и отправлять заявки. Цель проекта проста: дать возможность пользователям Evraon торговать на Московской и Санкт-Петербургской биржах, а никак не повторение всего API Quik'a. То есть реализовано лишь то, что требуется в данный момент. Заявки на новый функционал не принимается, если это не касается непосредственно Эвраона.

Зачем эти скрипты нужны

Для начала неплохо бы понять, зачем они вообще нужны. К сожалению, нельзя торговать на биржах в обход Квика. И вот для того, чтобы иметь таки возможность торговать, придуман Lua API Квика. Это некая договоренность двух программ, как обмениваться информацией. Эти скрипты запускают два сокет сервера, к которым подключается программа, и начинается взаимная отправка и получение информации. При этом запросы от программы передаются непосредственно в Квик.

Как использовать

Скачайте на этой странице архив с версией, равной версии Evraon. Если таковой нет, а у вас самая новая версия Evraon, то скачивайте самый верхний архив. Распакуйте его в любую папку. Затем зайдите в Квик, выберите меню Сервисы -> Lua скрипты..., затем Добавить, выберите файл под названием Server.lua, Открыть, нажмите Запустить. Все, теперь можно подключаться к серверу из программы Evraon, а вот и инструкция, как это сделать.

Как подключиться к двум терминалам сразу

Достаточно сделать ряд простых действий:

  1. Найдите в файле config.json секцию servers, там будет название опции scriptName со значением Server_2. В данном случае Server_2 является названием файла в папке lua (расширение .lua в config.json указывать нельзя).
  2. Измените опции согласно вашим предпочтениям. По умолчанию, дополнительный сокет сервер будет запущен на localhost'e (т.е. опции responseHostname и callbackHostname имеют значение 127.0.0.1), а порты (опции responsePort и callbackPort) равны 15515 для сервера запросов-ответов и 15516 для сервера коллбэков (данные, которые хочет отправить Квик). Порты не должны конфликтовать с уже указанными портами в файле config.json
  3. Добавьте Server_2.lua в Quik и запустите. При этом необязательно запускать Server.lua, если он вами не используется. Если используется и для него указаны другие порты, то, безусловно, можно запускать оба.

Все!

Вопросы и ответы

  • Как добавить еще сервера?

Скопируйте файл Server_2.lua и сохраните его в той же папке под другим именем, например, MyBroker.lua. В файле config.json в секции servers скопируйте текст внутри фигурных скобок {"scriptName"..."responseHostname"..."responsePort"..."callbackHostname"..."callbackPort"...}, поставьте запятую после }, вставьте скопированный текст и измените в нем данные. Как минимум, нужно указать в scriptName название файла скрипта (в примере это MyBroker), а в опциях портов указать любые свободные номера портов. Такую процедуру можно делать столько раз, сколько серверов вам нужно. Не забудьте, что responsePort и callbackPort не могут быть одинаковыми и повторяться в файле.

  • Как обновляться на новые версии библиотеки и скриптов в частности?

В новых версиях будет меняться код скриптов и код config.json. Но если вы вносили изменения в config.json, то сохраните в другом месте файл с вашими изменениями. После этого замените все старые файлы новыми. Обратите внимание, что, возможно, в одном из обновлений содержимое Server_2.lua изменится и все созданные вами лично копии этого файла потребуется пересоздать на основе обновленного файла. Продолжаем. Отредактируйте файл config.json в соответствии с настройками из старого файла (если не меняли ничего, делать ничего не надо). Процесс обновления завершен.

  • Как сделать так, чтобы можно было подключаться к сокету из локальной сети WiFi с другого устройства?

Нужно указать в responseHostname и callbackHostname значение 0.0.0.0. Лучше так не делать и вот, почему. Когда компьютер подключен к роутеру, то разрешение подключаться к нему извне (а именно это делает 0.0.0.0) открывает доступ к нему всему миру при допущении, что роутер недостаточно хорошо защищен и настроен. А так как при подключении к сокетам нет ни пароля, ни шифрования, открытый доступ всему миру открывает ваш Квик всем. Т.е. если вы все же хотите подключаться из локальной сети, позаботьтесь о безопасности и верных настройках роутера.

  • Как можно подключаться из локальной сети безопасно?

Просто подключайтесь к серверу Evraon, запущенному на вашем компьютере. responseHostname и callbackHostname должны быть равны 127.0.0.1. В таком случае подключение будет защищено логином и паролем, а само соединение между мобильной версией и настольной будет зашифровано.

  • Можно ли переименовать Server_2.lua?

Да, только укажите новое имя в scriptName файла config.json.

  • Можно ли переименовать Server.lua?

Нет. Этот файл обязательно должен сохранить свое имя, потому что все остальные скрипты используют часть его кода.

  • Создается папка logs, зачем она?

Там пишется диагностическая информация и ошибки. Иногда полезно туда заглядывать в поиске чего-то необычного.