Как передать данные в КВИК из сторонней программы?? Из Квика во внешний мир я отправляю через SOCKET сервер который я поднял на ПИТОНЕ.
А в Квик из внешнего мира не получается(((
Если сторонняя программа на том же ПК, то нет надобности использовать SOCKET. Можно обмениваться через память или файлы. По скорости будет также или быстрее. ----------------- Если надо обмениваться через SOCKET то сделайте на Lua сервер и клиент в одном скрипте. В сторонней программе можно на любом языке. Универсально сделать все на си и обернуть для нужных языков . В инете есть примеры
Спасибо за ответ
СОКЕТ не принципиален
Подскажи пож-ста как обмениваться через ПАМЯТЬ ?? Через файлы умею, но хочу еще научится через память делать обмен данными
Nikolay написал: Ищите библиотеку socket. Она поддерживает http. Безопасное соединение не поддерживает, для этого необходимы дополнительные библиотеки, в частности luasec.
Видимо у меня урезанный SOCKET. Файл CORE.DLL. Там нет HTTP..
Таблица EXT_ORDERBOOK -- техническое имя биржевой таблицы котировок по инструменту, которое транслируется в QUIK, т.е. название этой таблицы на стороне самой биржи. Мы сообщили Вам название этой таблицы, чтобы Вы могли указать его в случае обращения по данному вопросу к специалистам биржи.
Nikolay написал: Это одновременно и простой и сложный вопрос. Таблицы в луа это ссылочный объект. Т.е. запись my_array ={} создает новый объект - объявляет и инициализирует. В переменной будет новая ссылка, а старая безвозвратно утеряна, и очищена сборщиком мусора, если на нее не было больше ссылок.
Поэтому, если вопрос: как очистить существующий объект, то ответ - пройтись циклом и присвоить nil для ключей, индексов.А запись my_array ={} "как бы" очищает, да. Но при этом будет новая ссылка и если есть блоки кода, хранящие ссылку на my_array, то они не увидят новую, без повторного присвоения
Информация по РЕПО в стакане котировок берётся из биржевой таблицы EXT_ORDERBOOK, которая в свою очередь транслируется в систему QUIK. Для инструментов обычных режимов значение в данной таблице не вычисляется на нашей стороне. Для подробной информации по расчётам Вам необходимо обратиться в биржу.
Добрый день! Спасибо за ответ
Но НЕ МОГУ найти эту таблицу в QUIK (EXT_ORDERBOOK) ! Подскажите где ее искать ? (((
Условие исполнения заявки, необязательный параметр. Возможные значения: «PUT_IN_QUEUE» – поставить в очередь (по умолчанию), «FILL_OR_KILL» – немедленно или отклонить, «KILL_BALANCE» – снять остаток
Да это я понял
Не понятна логика поведения в 2х последних: «FILL_OR_KILL» – немедленно или отклонить; «KILL_BALANCE» – снять остаток В чем различие? По идее они одно и тоже делают. Выставляют заявку и снимают остаток. Можете объяснить в чем различие поведении в двух этих режимах
Распишите пож-ста как в СТАКАНЕ считается "СУММА РЕПО" по облигациям и КСУ Пробовал перемножить лоты на цену инструмента. Не сходятся цифры даже в учетом НКД Видимо в формулу зашито дисконтирование.
Мы предлагаем Вам использовать универсальный формат описания транзакций. Пример такого описания, а также способ его получения мы привели в первом сообщении.
Цитата
Alex написал: АНЖЕЛИКА, не понятны точные названия переменных на английском языке по след параметрам:
В LUA скрипте параметры транзакций и их значения можно передавать в таком же виде, как в tri-файле. Параметры из tri-файла можно передать в скрипте в следующем виде:
Alex написал: Правильно ли я понимаю что в заявке кол-во лотов само рассчитается ?
Мы выше привели просто пример, где указывается Цена и Объем заявки, а Лоты рассчитывается исходя из этих данных, если Вам нужно фиксированное кол-во указываете Лоты и Цена.
Цитата
Alex написал: Я пытаюсь выставить заявку через LUA непосредственно в QUIK
Способ подачи не важен.
Вот так пытаюсь поставить заявку, что то не получается ((
Alex написал: Правильно ли я понимаю что в заявке кол-во лотов само рассчитается ?
Мы выше привели просто пример, где указывается Цена и Объем заявки, а Лоты рассчитывается исходя из этих данных, если Вам нужно фиксированное кол-во указываете Лоты и Цена.
Цитата
Alex написал: Я пытаюсь выставить заявку через LUA непосредственно в QUIK
Способ подачи не важен
Подскажите ставим в ACTION="NEW_REPO_NEG_DEAL" ?
АНЖЕЛИКА, не понятны точные названия переменных на английском языке по след параметрам:
Тип по цене=По разным ценам; Тип по остатку=Поставить в очередь; Тип ввода значения цены=По цене; Назначение заявки=По умолчанию; Режим=EQRP_BND; Объем заявки=1000000.00;
Не понятны точные названия переменных на английском языке по след параметрам:
Тип по цене=По разным ценам; Тип по остатку=Поставить в очередь; Тип ввода значения цены=По цене; Назначение заявки=По умолчанию; Режим=EQRP_BND; Объем заявки=1000000.00;
Alex написал: Правильно ли я понимаю что в заявке кол-во лотов само рассчитается ?
Мы выше привели просто пример, где указывается Цена и Объем заявки, а Лоты рассчитывается исходя из этих данных, если Вам нужно фиксированное кол-во указываете Лоты и Цена.
Цитата
Alex написал: Я пытаюсь выставить заявку через LUA непосредственно в QUIK
Никак не могу выставить заявку на РЕПО 1день через функцию SendTransaction Классические заявки на куплю продажу акций и облигаций выставляются нормально А с РЕПО какая то ЗАСАДА !! ((((
Создал таблицу текущих торгов. Присвоил ей уникальное имя Подскажите, как теперь обратиться конкретно к этой таблице по ее имени и получить из нее данные
no field package.preload['socket'] no file 'C:\VTBC_Broker\QUIK\lua\socket.lua' no file 'C:\VTBC_Broker\QUIK\lua\socket\init.lua' no file 'C:\VTBC_Broker\QUIK\socket.lua' no file 'C:\VTBC_Broker\QUIK\socket\init.lua' no file 'C:\VTBC_Broker\QUIK\. .\share\lua\5.3\socket.lua' no file 'C:\VTBC_Broker\QUIK\. .\share\lua\5.3\socket\init.lua' no file '.\socket.lua' no file '.\socket\init.lua' no file 'C:\VTBC_Broker\QUIK\socket.dll' no file 'C:\VTBC_Broker\QUIK\. .\lib\lua\5.3\socket.dll' no file 'C:\VTBC_Broker\QUIK\loadall.dll'
проверьте версию dll в 9 версии квик можно работать с dll Lua 5.3 либо Lua 5.4
Надо инсталировать lua socket или просто кинуть в нужные директории нужные файлы ? И где их найти? )
no field package.preload['socket'] no file 'C:\VTBC_Broker\QUIK\lua\socket.lua' no file 'C:\VTBC_Broker\QUIK\lua\socket\init.lua' no file 'C:\VTBC_Broker\QUIK\socket.lua' no file 'C:\VTBC_Broker\QUIK\socket\init.lua' no file 'C:\VTBC_Broker\QUIK\. .\share\lua\5.3\socket.lua' no file 'C:\VTBC_Broker\QUIK\. .\share\lua\5.3\socket\init.lua' no file '.\socket.lua' no file '.\socket\init.lua' no file 'C:\VTBC_Broker\QUIK\socket.dll' no file 'C:\VTBC_Broker\QUIK\. .\lib\lua\5.3\socket.dll' no file 'C:\VTBC_Broker\QUIK\loadall.dll'
Мне надо передать "строку" (string) из QUIK (lua) на скрипт Python. Подскажи пож самый простой способ, но не через жесткий диск. Может какой пример завалялся ?
В настоящий момент у меня реализована передача через текстовый Файл. То есть Quik записывает (постоянно перезаписывает) файл txt, а функция Watchdog на Python его подхватывает и обрабатывает
Alex написал: Подскажите как передать информацию из QUIK в скрипт PYTHON через память компа?
В настоящий момент реализована передача через текстовый Файл. То есть Quik записывает постоянно перезаписывает файл, а функция watchdog на Python его подхватывает и обрабатывает Но есть проблема - жуткие тормоза!
Подскажите как сделать через ПАМЯТЬ ??
Спасибо!
Я использую mapping для связи приложений и потоков. --------------------- Для питона можно посмотркть здесь:
Nikolay написал: named pipes Lua поддерживает "прямо из коробки"
Код
local pipe = io.open ( "\\\\.\\PIPE\ \" .. pipe_name, "w+b" )
if not pipe then
return
end
pipe:write( 'BlaBla' ) -- записываем команду в канал
--Читаем
local rd = ''
local ct = os.time ()
-- Для примера: Т.к. время ожидания ответа может быть не мгновенным, то ожидаем 2 секунды, читая из канала ответ.
while os.time () - ct < 2 and rd = = '' do
rd = pipe:read( '*a' )
end
tele_pipe:close() -- закрываем канал
А python - это же такая "помойка". Неужели нет готовой библиотеки сервера named pipes? Поиск выдает тонны вариантов.
Пытался запустить Ваш скрипт, выдает. ошибку. attempt to index a nil value (local 'pipe')
Nikolay написал: named pipes Lua поддерживает "прямо из коробки"
Код
local pipe = io.open ( "\\\\.\\PIPE\ \" .. pipe_name, "w+b" )
if not pipe then
return
end
pipe:write( 'BlaBla' ) -- записываем команду в канал
--Читаем
local rd = ''
local ct = os.time ()
-- Для примера: Т.к. время ожидания ответа может быть не мгновенным, то ожидаем 2 секунды, читая из канала ответ.
while os.time () - ct < 2 and rd = = '' do
rd = pipe:read( '*a' )
end
tele_pipe:close() -- закрываем канал
А python - это же такая "помойка". Неужели нет готовой библиотеки сервера named pipes? Поиск выдает тонны вариантов.
Попробую разобраться Готовые библиотеки это подключаемые DLL ?
Подскажите как передать информацию из QUIK в скрипт PYTHON через память компа?
В настоящий момент реализована передача через текстовый Файл. То есть Quik записывает постоянно перезаписывает файл, а функция watchdog на Python его подхватывает и обрабатывает Но есть проблема - жуткие тормоза!