SDL написал: Качаем модуль LuaSec: Проект: Бинарники можно взять тут: . Нужны 2 файла - ssl.dll и ssl.lua. Использует библиотеки OpenSSL libeay32.dll и ssleay32.dll. Скачать, если нет, и не забыть обеспечить к ним доступ - через окружение (PATH) или можно кинуть в папку с QUIK.
Цитата
vgi написал: Есть хорошая обёртка для отправки писем lua-sendmail: Ей потребуется luasec, который в уже собранном виде можно взять из ссылки из третьего поста вот такого топика:
При отправке первого письма из скрипта с gmail.com приходит ответ "closed". Второе и последующие письма отправленные, из того же скрипта (причём, первым может быть и mail.ru) уходят нормально. Кто-нибудь сталкивался с таким? Как лечить?
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
10.01.2017 01:05:24
Как изменить timeout? Пробовал и так:
Код
TIMEOUT = 100
и так:
Код
local sock = socket.tcp()
sock:settimeout(100)
Изменений никаких.
Надо делать так, как надо. А как не надо - делать не надо.
Если кто ещё думает о получении уведомлений от квика о сделках, то вот моё решение - это мессенджер Телеграм. По-моему, удобно - клиент есть для всех мобильных платформ, бесплатно. В общем сплошные плюсы.
Принцип такой: Создаем бота в телеграм: В квике запускаем lua-скрипт, который от имени бота шлёт сообщения о заявках и/или сделках, на указанный в настройках скрипта аккаунта в Телеграм. Вот ссылка на то, как я это реализовал для себя:
Добрый день!
Наткнулся на Ваше сообщение с реализацией отправки сообщений из QUIK в Telegram. Попробовал повторить, но никак не получается. Насколько я понял, требуется еще файл lua-bot-api.lua, потом Ваши dll. Дальше потребовался файл ssl.lua, далее https.lua и multipart-post.lua, потом json.lua Но все равно в результате ругается на: "error loading module 'ssl.core' from file '.\ssl.dll': Не найдена указанная процедура." Я пробовал подставлять другие dll бОльшего размера из других источников, где они представлены в скомпилированном виде, но итог 1. Не могли бы подсказать, какой минимальный перечень файлов необходим, чтобы запустить именно Ваш скрипт из QUIK и где их взять?
- Роботы и индикаторы
Пользователь
Сообщений: Регистрация: 18.09.2016
28.01.2017 21:40:01
У меня данная штука запустилась. Накидал все везде))) Данным ботом пользуюсь уже с месяц. В файле telegram_settings.lua нужно ввести настройки своего бота. Сам . Там есть что еще допиливать...
Пользователь
Сообщений: Регистрация: 28.03.2016
28.01.2017 21:52:17
Цитата
Алексей Ч написал: У меня данная штука запустилась. Накидал все везде))) Данным ботом пользуюсь уже с месяц. В файле telegram_settings.lua нужно ввести настройки своего бота. Сам . Там есть что еще допиливать...
Тоже запустился, не успел прочитать Ваше сообщение, но за архив спасибо. В результате тоже накидал dll и lua файлы. Другим людям конечно весь этот пакет не дашь, особенно смущают lua файлы. С Вашим ботом проблем ка раз нет, там все прозрачно и легко адаптируется по собственные нужды, основная проблема у меня была в принципе его запустить в качестве теста.
У Вас тоже запускается скрипт больше минуты (после запуска реагирует на команды быстро, выходит тоже быстро, тормозит только запуск)?
- Роботы и индикаторы
Пользователь
Сообщений: Регистрация: 18.09.2016
29.01.2017 00:36:55
да, верно, запуск тормозит, но не минуты. Обычно 10-15 секунд. Может быть кто подскажет, почему.
Пользователь
Сообщений: Регистрация: 28.03.2016
29.01.2017 18:47:25
Цитата
Алексей Ч написал: да, верно, запуск тормозит, но не минуты. Обычно 10-15 секунд. Может быть кто подскажет, почему.
Пока потенциал нравится, он получается интерактивный, можно придумать кучу вариаций использования кроме сообщения о заявках, сделках и т.д.
- Роботы и индикаторы
Пользователь
Сообщений: Регистрация: 18.09.2016
29.01.2017 19:49:37
Перезалил . В telegram_settings.lua нужно указать настройки бота. В квике запустить telegram.lua Помимо сообщений о сделках и заявках, сообщает так же по запросам: Fut - деньги на фортс (вариационная маржа) Pos - позиции на фортс Usd - текущие котировки USDRUB_TOM Eur - соответственно EURRUB_TOM Если написать код фьюча, то можно получить его котировку. Любые другие символы сообщают, подключен ли квик или нет. В файл log.txt пишет номер последнего запроса
Settings = { host = "smtp.TEST.ru", port = 25, from = "", to = "", subject = "Qlua notification", cc = "", user = "TEST", password = "123", rcpt = { " " } } function smtp_send(settings, msg) local mesgt = { headers = { to = settings.to, cc = settings.cc, subject = settings.subject or "Qlua Notification", ["content-type"] = 'text/plain; charset="windows-1251"' }, body = msg }
r, e = smtp.send{ from = settings.from, rcpt = settings.rcpt, source = smtp.message(mesgt), server = settings.host, port = settings.port, user = settings.user, password = settings.password } end
smtp_send(Settings, "TEST")
Разъясните пожалуйста, куда и что конкретно копировать . архив какой конкретно по ссылке ? luasocket-2.0.2-lua-5.1.2-Win32-vc8.zip\socket - ZIP archive, unpacked size 275 170 bytes - пойдет? В архиве файлы и подпапки. Нужно распаковывать все или нужна только core.dll? В корневую директорию или в папку с скриптами?
Пользователь
Сообщений: Регистрация: 04.09.2016
20.09.2017 14:31:57
После копирования всех папок и корневых файлов в директорию со скриптами запуск кода привод к следующей ошибке C:\QuikFinam\scripts\mail.lua:48: attempt to call global 'mtp_send' (a nil value)
Пользователь
Сообщений: Регистрация: 23.01.2015
20.09.2017 14:40:56
Цитата
Иван Ру написал: attempt to call global 'mtp_send' (a nil value)
Иван Ру написал: attempt to call global 'mtp_send' (a nil value)
В моем примере нет такой функции 'mtp_send'
Да, извиняюсь, это моя ошибка была при вызове функции.
function main () smtp_send(settings, "123") end
Теперь, после добавления нужной буквы получаю такое сообщение error loading module 'mime.core' from file 'C:\QuikFinam\scripts\core.dll':
Пользователь
Сообщений: Регистрация: 23.01.2015
21.09.2017 12:08:57
Иван Ру, К сожалению затруднимся назвать причины. т.к. core.dll не является нашей разработкой. Попробуйте другую версию, или поискать ответ в интернете.
Пользователь
Сообщений: Регистрация: 16.01.2017
21.09.2017 21:17:25
Посмотрите в этой теме, может поможет.
Пользователь
Сообщений: Регистрация: 04.09.2016
21.09.2017 23:27:23
Цитата
Алексей написал: Посмотрите в этой теме, может поможет.
Теперь, после добавления нужной буквы получаю такое сообщение error loading module 'mime.core' from file 'C:\QuikFinam\scripts\core.dll':
Попробуйте, все же сделать так, как описано в приведенной мною выше ссылке (а именно взять готовые пакеты "LuaSocket 3.0-rc1" (core), "LuaSec 0.6" (ssl) из ZeroBraneStudio).
Ваша ошибка вызвана тем, что core.dll пакета (модуля) socet не находит core.dll пакета (модуля) mime.
Пользователь
Сообщений: Регистрация: 16.01.2017
22.09.2017 00:56:42
"LuaSec 0.6" (ssl) нужен, только если Вы собираетесь использовать https протокол
Пользователь
Сообщений: Регистрация: 04.09.2016
22.09.2017 02:45:51
Цитата
Александр Волфовиц написал: Иван Ру , а вы хотите смс-оповещения организовать?
похоже картинки не пихаются, помоги пжл решить проблемку - при старте робота - ошибка error loading module 'ssl.https' from file 'D:\QuikFinam\ssl.dll': Не найден указанный модуль.
Хотя dll там валяется, да и вообще во всех папках валяется
Пользователь
Сообщений: Регистрация: 16.01.2017
11.10.2017 17:25:18
Эта ошибка вызвана тем, что ssl.dll пытается запустить lua модуль https.lua, который lua-интерпретатор не смог найти. https.lua должен находится в папке ssl, которая, в свою очередь, должна находится в одной из папок, перечисленных в package.path. Поскольку в package.path, как правило, прописан, в числе прочих, путь: .\?.lua, то https.lua можно поместить в папку D:\QuikFinam\ssl\
В свою очередь, ssl.dll должен "валяться" не где попало, а в одной из папок, перечисленных в package.сpath
Пользователь
Сообщений: Регистрация: 17.10.2017
17.10.2017 02:58:53
Всем привет! Пытаюь прикрутить отправку уведомления из квика с помощью POST через https. Разложил либы luasec , которые взял в этой же ветке, lua скрипты. При попытке запустить lua скрипт, quik зависает намертво. Система Windows 2008 Server, 64 бит. Подскажите, как можно найти причину зависания. Скрипт такой:
Код
gSPath = getScriptPath()
package.cpath = gSPath .."\\?.dll;" .. package.cpath
package.path = gSPath .."\\?.lua;" .. gSPath .. "\\?.luac;" ..package.path
function OnInit()
ocal https = require ('ssl.https')
local ltn12 = require('ltn12')
local payload = '{"text": "Hello from quik!"}'
local response_body = { }
local res, code, response_headers, status = https.request
{
url = "https://....",
method = "POST",
headers =
{
["content-length"] = string.len(payload),
["Content-Type"] = "application/json",
},
source = ltn12.source.string(payload),
sink = ltn12.sink.table(response_body)
}
....
end
Пробовал взять либы/скрипты из телеграм бота - тоже не помогло. Продублировал все структуру файлов/папок в папку с моим роботом, а также в папку с квиком. Копию файла lua5.1.dll (lua51.dll) сделал, помешать не должно.
Пользователь
Сообщений: Регистрация: 27.05.2015
17.10.2017 09:02:17
Сергей, а на десктопной Windows пробовали? Тоже виснет?
Пользователь
Сообщений: Регистрация: 17.10.2017
17.10.2017 12:30:25
win 7 pro 32bit Проблема один в один...
Пользователь
Сообщений: Регистрация: 17.10.2017
17.10.2017 13:01:53
Проверил работу luasocket, метод http.request работает. Что-то не так с либами luasec, видимо. Нужно ли ставить lua for windows?
Пользователь
Сообщений: Регистрация: 28.09.2017
17.10.2017 13:22:51
Сергей. Выкидывай алерт в текстовик и оттуда внешней тулзой забирай куда хочешь. Оставь бедный квик в покое, он и так потеет в муках из последних сил и у него причин повеситься и без этого до ... и более :)
Пользователь
Сообщений: Регистрация: 28.09.2017
17.10.2017 13:40:13
Цитата
Сергей написал: ocal https = require ('ssl.https')
Я это увидел, символ пропал при вставке в форум. Не нашел как редактировать сообщение. Проблема не в этом. Судя по алертам, зависает где-то внутри https.request . Копаю дальше
Пользователь
Сообщений: Регистрация: 27.05.2015
17.10.2017 17:45:50
Сергей, если будет полезно, могу выложить (попозже) все собранные мной файлы для работы с инетом в QUIK.
На Win 7 64 bit работает, на сервер ещё не закидывал, но запросы проходят с 10-15 секундной задержкой (об этой проблеме писали выше), и побороть эту задержку никак не получается...
Было бы полезно. У меня проблема с протоколом ssl . В luasec 0.6a, который используется в телеграм боте по умолчанию используется tlsv1 . Я взял https.lua из luasec 0.7 alpha, там по умолчанию протокол выставлен в значение 'any' В результате, зависания нет, но в response code пришло "invalid protocol (any)" . Похоже, что-то не так с либами OpenSSL. Нужно ли что-то дополнительно ставить в систему для обеспечения работы luasec?
Пользователь
Сообщений: Регистрация: 16.01.2017
17.10.2017 21:26:47
Сергей, Ваш скрипт случайно не переопределяет глобальную переменную TIMEOUT модуля socket\http.lua на слишком большое значение?
Пользователь
Сообщений: Регистрация: 17.10.2017
17.10.2017 22:15:29
Алексей, Нет, таймаут в скрипте не переопределен. Попробую поиграться с ним. Может в таймауте дело... Хотя вряд ли. Сервер, куда я пытаюсь достучаться, отвечает без задержек
Пользователь
Сообщений: Регистрация: 16.01.2017
18.10.2017 15:12:22
Цитата
Сергей написал: Я взял https.lua из luasec 0.7 alpha.. Похоже, что-то не так с либами OpenSSL. Нужно ли что-то дополнительно ставить в систему для обеспечения работы luasec?
1. Вы взяли просто https.lua от 0.7a или в паре с соответствующей версией ssl.lua и ssl.dll? 2. Попробуйте в ssl.lua в local function wrap закомментарить строку -- sock:setfd(core.SOCKET_INVALID)
Пользователь
Сообщений: Регистрация: 16.01.2017
18.10.2017 15:17:15
И попробуйте сначала все это запустить из под какого-нибудь lua интерпретатора, а когда устойчиво заработает, перенесите в quik.
Пользователь
Сообщений: Регистрация: 17.10.2017
18.10.2017 19:07:44
Алексей, В итоге, я все почистил и попробовал заново. Скачал ZeroBraneStudio , взял оттуда нужнве мне модули с сохранением структуры папок. Получилось следующее:
В квике нет ничего, что связано с моим скриптом. Добавлена лишь копия lua5.1.dll с именем lua51.dll Проблема все та же. Я решил добавил множество дебаг сообщений в https.lua, socket.lua и ssl.lua для диагностики. Также решил подождать и не спешить убивать квик . Оказалось, что через минут 5 скрипт оживает и не падает. При этом запрос не отсылается на сервер. По отладочным сообщениям обнаружил, что зависание происходит в функции newcontext при вызове context.create . Как я понял, это вызывается соответствующий метод в ssl.dll . В итоге написал цикл, который осуществляет 10 попыток отослать запрос на сервер. После первой итерации, которая не доходила до сервера, запросы стали успешно отсылаться. Как я понял, задержка с ssl сокетом есть у всех, но не такая большая? Получается этот запрос выполняется в основном потоке и блокирует все остальные операции ? Поскольку с http запросами такой задержки нет, для себя решил написать простенький прокси, который принимает http запрос от квика, сразу же отвечает статусом OK(HTTP 200), чтобы не блокировать квик и избежать проблем в случае, если удаленный хост будет тормозить с ответом . После ответа квику он в фоне переправляет запрос куда нужно и как нужно.
Пользователь
Сообщений: Регистрация: 16.01.2017
19.10.2017 22:07:05
Вы пробовали запустить Ваш скрипт из ZeroBraneStudio, ничего не меняя в path и cpath? Если такая же задержка с первым пакетом, то дело, скорее всего, в почтовом сервере, к которому Вы обращаетесь, или в Вашем скрипте. Пройдитесь отладчиком ZeroBraneStudio по вашему скрипту. Если же при запуске из ZeroBraneStudio задержка не превышает 5 секунд, а из quik - 5 минут, то Вы, возможно, неправильно собрали модули. 1. Рекомендую libeay32.dll, ssleay32.dll и lua51.dll (копия quik-овского lua5.1.dll !!! Ни в коем случае не из ZeroBraneStudio) переложить в папку quik (где лежит info.exe). 2. Из clibs нужны только ssl.dll, mime\core.dll и socket\core.dll. 2. Уберите с компьютера всё дублирование вышеперечисленных Вами файлов (оставить только "родной" пакет ZeroBraneStudio и копии необходимых из него файлов в Вашем C:\MY-ROBOT). 3. Проверьте значения path и cpath при запуске из quik и убедитесь, что скрипт никаким способом не сможет наткнуться на какой-либо другой lua51.dll, кроме положенного в папку quik.
У меня, обычно, задержка и из ZeroBraneStudio, и из quik составляет не более 0,5 сек при обращении к серверу телеграмм (а это тот же POST пакет).
P.S. OnInit выполняется в основном потоке quik. Зависли в OnInit - завис quik. main выполнятся в выделенном потоке. Зависание в нем никак не тормозит работу quik.
Пользователь
Сообщений: Регистрация: 27.05.2015
20.10.2017 20:34:34
Вот, попробуйте. Распакуйте все файлы и папки в папку c QUIK, где лежит info.exe.
Никаких дополнительных библиотек, по идее, не нужно, всё должно быть в этой сборке.
Пользователь
Сообщений: Регистрация: 04.09.2016
21.10.2017 20:36:22
Цитата
Александр Волфовиц написал: Иван Ру , а вы хотите смс-оповещения организовать?
Кто ж не хочет :-)
Пользователь
Сообщений: Регистрация: 08.11.2017
08.11.2017 15:09:58
Цитата
Василий написал: похоже картинки не пихаются, помоги пжл решить проблемку - при старте робота - ошибка error loading module 'ssl.https' from file 'D:\QuikFinam\ssl.dll': Не найден указанный модуль.
Хотя dll там валяется, да и вообще во всех папках валяется
Добрый день, у меня похожая проблема покажите куда какие файлы положить, пытался эксперементировать но успеха не принесло
Пользователь
Сообщений: Регистрация: 08.11.2017
08.11.2017 15:18:36
Цитата
Алексей Ч написал: похоже картинки не пихаются, помоги пжл решить проблемку - при старте робота - ошибка error loading module 'ssl.https' from file 'D:\QuikFinam\ssl.dll': Не найден указанный модуль.
Хотя dll там валяется, да и вообще во всех папках валяется
сделал все по этой инструкции
Пользователь
Сообщений: Регистрация: 08.11.2017
08.11.2017 15:21:38
error loading module 'ssl.https' from file 'C:\QUIK\quik-telegram-bot2\ssl.dll': Не найден указанный модуль
Пользователь
Сообщений: Регистрация: 16.01.2017
16.11.2017 03:51:18
Ответ уже был:
Цитата
Алексей написал: Эта ошибка вызвана тем, что ssl.dll пытается запустить lua модуль https.lua, который lua-интерпретатор не смог найти. https.lua должен находится в папке ssl, которая, в свою очередь, должна находится в одной из папок, перечисленных в package.path. Поскольку в package.path, как правило, прописан, в числе прочих, путь: .\?.lua, то https.lua можно поместить в папку D:\QuikFinam\ssl\
В свою очередь, ssl.dll должен "валяться" не где попало, а в одной из папок, перечисленных в package.сpath
Пользователь
Сообщений: Регистрация: 08.11.2017
25.11.2017 12:03:33
Бота удалось запустить, но он почему то нестабильно работает, зависает
останется только запустить php из lua, а это кажется возможно. Можно попробовать поискать решение в этом направлении.
человек (не робот)
Пользователь
Сообщений: Регистрация: 03.12.2017
я новичек и тока учусь
13.04.2018 10:13:52
А вот еще пришла идея, более простая и надежно работающая. По отправке сообщений. В терминале Квика можно написать скрипт, как только совершилась сделка в определенный каталог класть текстовый файл коротенький, сделка такая , ид такой и тд. А параллельно на копмпе развернуть локальный сервер с минимумом кода на php, который раз в 10 минут проверяет эту папку, есть там что нибудь или нет, если есть отправляет файлик по указанному адресу и после отправки эту папку чистит, вот и все. Просто и надежно. Локальный веб сервер может запускаться сам при загрузке компа и тихонько крутиться в цикле с таймером задержки нужной вам лично. Бесплатный веб сервер можно взять или (настраивать ничего не нужно, там все само надежно работает, код на php для отправки почты простой, разобраться не трудно)
человек (не робот)
Пользователь
Сообщений: Регистрация: 16.01.2017
14.04.2018 17:52:54
Пользователи Telegram-Bot!
Поделитесь соображениями, как обойти предстоящую блокировку.