Sergey Gorokhov написал: И свечки устанавливаются на координаты дата/цена, а не X,Y окна
Речь конечно же про метки, а не свечки)
Отметки на графике QUIK средствами QLUA
Пользователь
Сообщений: Регистрация: 23.01.2015
07.05.2018 05:20:10
Цитата
Goodchild написал: Подскажите. Нужно в собственном Индикаторе на lua вывести несколько меток на график, примерно в левый верхний угол и в правый нижний угол. Как получить параметры окна графика?
Здравствуйте, К сожалению такой возможности не предусмотрено. И свечки устанавливаются на координаты дата/цена, а не X,Y окна
Можно ли в ЛУА определить, что таблица полностью загружена?
Пользователь
Сообщений: Регистрация: 23.01.2015
04.05.2018 08:59:17
Здравствуйте, Надежного способа нет. Т.к. данные поступают непрерывным потоком. Иными словами нет той точки которая отделяет старые данные от новых. На форуме можно найти много разных вариантов. Например или
getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста
Для корректной работы функции включите в настройках Рабочего места QUIK признак получения данных «Исходя из настроек открытых пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных»). Параметры:
class_code – код класса; sec_code – код бумаги; db_name – код параметра. В случае успешного завершения функция возвращает «true», иначе – «false».
getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста
Конечно не правильно. Настоятельно рекомендуем ознакомиться с документацией QLUA.chm -Функции взаимодействия скрипта Lua и Рабочего места QUIK --Функции получения значений Таблицы текущих торгов ---Особенности получения значений Таблицы текущих торгов
и самое важное с главой "Функции для заказа параметров Таблицы текущих торгов" о которой уже было сказано.
В связи с этой документацией, заказ данных происходит через функцию ParamRequest
и все эти проверки про param_type=="2" явно лишние
getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 18:35:09
Цитата
S C написал: у меня квик вылетает при перезаказе дынных
при каком перезаказе данных? Вам было сообщено о двух вариантах. Через терминал и через сами скрипты. Вы пробовали в Lua скрипте выполнить заказ как ?
getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста
Вопрос не понятен. Что значит "правильный" способ? Чем по Вашему использование функций для заказа данных является не правильным способом? Либо Вы в терминале заказываете данные, либо за Вас это делает Lua . Других вариантов не видно. Если есть идеи, готовы выслушать.
Транзакция с помощью вызова функции., Как сделать транзакцию с помощью функции.
Вы категорически не правы. Функция Sq() тут совершенно не причем. Она у Вас перекрестно срабатывает. Чтобы убедиться просто добавьте message("Hello Word") внутри функции Sq().
А вот транзакция похоже не выполняется. Причина в TRANS_ID = tostring(0), нельзя указывать его равным нулю, минимум 1.
Код
local stopped = false
function OnStop()
stopped = true
return 2000
end
function Sq()
message("Hello Word")
A = {
ACTION = 'NEW_ORDER',
ACCOUNT = 'SPBFUT00005',
OPERATION = 'S',
CLASSCODE = 'SPBFUT',
SECCODE = 'SiM8',
PRICE = tostring(64000) ,
QUANTITY = tostring(2),
TRANS_ID = tostring(1)
}
Err_A = sendTransaction(A)
message(Err_A)
end
function main()
sleep(3000)
Sq()
end
getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 18:19:31
Цитата
S C написал: В итоге, что все таки случилось и как автоматизировать проверку сессии корректно ?
Т.е. Ваш вопрос звучит "как заказывать данные автоматически"?. Тогда для этого есть getParamEx2 И глава в документации "Функции для заказа параметров Таблицы текущих торгов"
Вечерняя сессия в таблице "Текущие торги"
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 18:17:10
Цитата
qwerty123 написал: Да, я понимаю, что это они устроили. Просто если в "таблице всех сделок" это просто отфильтровать по дате, то в "текущих торгах" просто нет необходимой информации.
Не понятно чего Вы хотите? Информацию транслирует биржа, а QUIK ее просто отображает. Если Вам нужно смотреть мин/макс именно за астрономическую дату, а не за сессию, подсказка уже была - смотреть на графике.
Цитата
qwerty123 написал: P.S. А понедельничная сессия начинается в пятницу вечером, я правильно понимаю?
Да верно.
Транзакция с помощью вызова функции., Как сделать транзакцию с помощью функции.
что именно не работает? И почему Вы ставите sleep перед Sq()? Получается что Вы ждете sleep(3000) и только потом срабатывает Sq(), судя по тексту Вам надо в точности на оборот.
Вечерняя сессия в таблице "Текущие торги"
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:56:51
Цитата
qwerty123 написал: Странно считать одной сессией нечто с перерывом в 10 часов.
Вы можете поделиться этими мыслями с биржей, они это устроили
EIS, есть ли на квик индикатор импулсной системы д.Элдера macd
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:46:26
Цитата
Антон написал: Ну я и имею ввиду, может кто уже создал такой индикатор, там вроде ничего сложного.Нигде не могу найти.
У нас такой информации нет
Транзакция с помощью вызова функции., Как сделать транзакцию с помощью функции.
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:44:41
Цитата
Иван написал: Перед функцией main() прописываются функции
Вот эта информация и требовалась. Пустым параметр не должен быть. Проверьте настройки терминала, в меню Система - Настройки - Основные - Программа - Получение данных, должна быть включена опция "Исходя из настроек открытых пользователем таблиц" После чего попробуйте выполнить перезаказ данных, через меню Система - Заказ данных - Перезаказать. Сообщите появятся ли данные в параметре "Статус" в таблице текущих торгов.
getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:38:52
S C, Большая просьба ответить на поставленный вопрос.
Цитата
Sergey Gorokhov написал: Что отображается в параметре "Статус"?
Цитата
S C написал: таблица статус вот(это я ее пишу в файл):
Да Вы это уже говорили выше.
Вечерняя сессия в таблице "Текущие торги"
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:36:39
Цитата
qwerty123 написал: Печально это. "Текущие торги" бесполезная вещь получается если все самому считать приходится.
Еще раз повторим что по срочному рынку сессия начинается в 18:45 а не в 10 утра. Почему Вы считаете данные после 18:45 неверными ведь они относятся в текущей торговой сессии? А после 18:45 это уже другая сессия.
И с этим надо жить, это особенность режима торгов.
Транзакция с помощью вызова функции., Как сделать транзакцию с помощью функции.
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:30:27
Цитата
Иван написал: Мне нужно вначале кода записать её в функцию, чтобы повторять несколько раз.
что значит "в начале кода"? Что для Вас "начало" кода? Если нужно несколько раз вызвать sendTransaction, Вы можете добавить ее в цикл while или for
Вечерняя сессия в таблице "Текущие торги"
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:25:17
qwerty123, К сожалению, что-либо сделать нельзя т.к. информация в таком виде поступает с биржи. А на бирже по срочному рынку сессия считается в 18:45 предыдущего дня.
Цитата
qwerty123 написал: Мне надо знать мак и мин цену за сегодня без учета вчерашней сессии.
Эту информацию можно получить например с графика цены и объема на дневном интервале.
getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:22:00
Цитата
S C написал: вообще когда все работает нормально param_type=4
Да так и есть. И у нас описанная функция так и возвращает. т.е. проблема не воспроизводится. Открыта ли у Вас таблица Текущих торгов? Что отображается в параметре "Статус"?
Транзакция с помощью вызова функции., Как сделать транзакцию с помощью функции.
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:10:50
Здравствуйте, На сколько становится понятно, Вам нужен пример функции sendTransaction Если так то пример может быть следующий:
getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 17:09:18
Цитата
S C написал: Как я понял, status.param_type=2 означает что status.param_value тупо не получен.
Согласно документации param_type это Тип данных параметра, используемый в Таблице текущих торгов. Для param_type=2 это тип данных LONG нигде не сказано что param_type=2 означает что данные не получены.
Проверьте что на самом деле отображается в таблице текущих торгов. И о каком классе идет речь?
EIS, есть ли на квик индикатор импулсной системы д.Элдера macd
Пользователь
Сообщений: Регистрация: 23.01.2015
02.05.2018 10:46:18
Здравствуйте, Именно такого индикатора в QUIK нет. Есть стандартный индикатор MACD. Имеющиеся встроенные индикаторы, приведены в документации на терминал QUIK (открывается клавишей F1) -Раздел 4. Работа с графиками --Методы технического анализа
Кроме того, пользователи имеют возможность создавать свои собственные индикаторы на языке Lua Описание приведено в отдельном файле QLUA.chm, глава "Индикаторы технического анализа"
Поле "Курс" таблицы текущих итогов, класс кросс-курсы валют., Как обратиться к полю "Курс" таблицы текущих итогов? Не знаю где найти название параметра
Пользователь
Сообщений: Регистрация: 23.01.2015
28.04.2018 10:41:52
Здравствуйте, Узнать точное имя любого параметра можно выведя таблицу Текущих Торгов по DDE с установленным признаком "Формальные заголовки" так для параметра "Курс" имя будет CROSSRATE т.е. команда будет такая: local PriceStep = tonumber(getParamEx('CROSSRATE', 'USD', "CROSSRATE").param_value);
Описание статусов TRADESTATUS
Пользователь
Сообщений: Регистрация: 23.01.2015
27.04.2018 11:13:54
Цитата
Илья написал: Спасибо за оперативный ответ. А что такое "ЦАЗ"? В инете никак найти не могу.
ЦАЗ это "Торги по цене Аукциона Закрытия"
Что это такое, подскажут специалисты биржи.
Описание статусов TRADESTATUS
Пользователь
Сообщений: Регистрация: 23.01.2015
27.04.2018 09:46:25
Здравствуйте, Для фондовой секции значения TRADINGSTATUS такие:
Здравствуйте, Это особенности типа данный с плавающей точкой. По данной теме можно найти много статей в интернете. Рекомендуем округлять значения до нужного знака перед сохранением в файл.
Вопрос по обработке исключений в Qlua, Вопрос по обработке исключений в Qlua
Пользователь
Сообщений: Регистрация: 23.01.2015
25.04.2018 16:14:13
Цитата
Артем написал: Виды исключений : неправильная ссылка, не верный адрес, хост не доступен???
Боюсь что кроме как предварительно установить проверку других идей нет. Проверку можно выполнить через тот же У нас эта тема обсуждалась и
Передача таблиц lua в QUIK., Технические детали.
Пользователь
Сообщений: Регистрация: 23.01.2015
25.04.2018 10:32:11
Здравствуйте,
Цитата
Vladimir написал: 1) функции, передающие таблицы lua в quik (sendTransaction и подобные) не меняют содержимое таблиц-параметров? 2) то есть таблицы-параметры не нужно создавать каждый раз заново, а можно использовать повторно? Разумеется, обновив значения её полей.
Таблицу не нужно создавать каждый раз заново. Можете смело использовать повторно.
Цитата
Vladimir написал: 3) будут ли функции sendTransaction и ей подобные корректно работать с таблицей с дополнительными полями, не описанными в документации? Например, если добавить поле "__type" или даже "@#$ ~*!$%" для введения подтипов таблиц во внутренней логике скрипта? 4) будут ли функции sendTransaction и ей подобные корректно работать с таблицей с установленной метатаблицей (устанавливаемой ф-цией setmetetable)? 5) будут ли в переданных в Quik таблицах работать метаметоды, например "__index"? Зависит ли это от способа определения метаметода (например, "__index" может быть таблицей или функцией)?
нет, не будут. таблица должна содержать пары типа string-string (ключ - значение). Ошибки скорее всего не случится, но транзакция не отправится. если попадутся поля, которые не описаны для этой транзакции, то будет реджект со стороны терминала.
не работает sleep, не работает sleep
Пользователь
Сообщений: Регистрация: 23.01.2015
20.04.2018 13:27:32
Вячеслав, К сожалению, не можем объяснить причины происходящего, на Windows 10 x64 сидят тысячи людей, и у них такой проблемы нет. Возможно проблема в самом терминале или его библиотеках. Пришлите для анализа архив всей папки с проблемным терминалом QUIK (без ключей доступа) нам на адрес quiksupport@arqatech.com
не работает sleep, не работает sleep
Пользователь
Сообщений: Регистрация: 23.01.2015
20.04.2018 12:47:30
Вячеслав, какая версия терминала QUIK у Вас используется? и какая версия qlua.dll в папке с терминалом QUIK?
не работает sleep, не работает sleep
Пользователь
Сообщений: Регистрация: 23.01.2015
20.04.2018 12:30:24
Цитата
Вячеслав написал: У меня винда10 64, думаю из-за этого...
точно нет
Цитата
Вячеслав написал: То что на моей винде эта функция не работает, это сто процентов.
у всех работает. Приведите пример Вашего кода где не работает.
Suntor написал: Единственно, непонятно куда девается содержимое поля COMMENT при sendTransaction. Я нигде не вижу в колбеках значения из этого поля.
Цитат из документации на терминал QUIK:
Цитата
COMMENT - Текстовый комментарий, указанный в заявке. Используется при снятии группы заявок
А так как через Lua нельзя использовать групповое снятие заявок, то и параметр COMMENT просто игнорируется
Цитата
Nikolay написал: . Поле BROKERREF не подходит совершенно
если задача только в поиске "своих" заявок, может тогда использовать TRANS_ID? Укажите на всех транзакциях параметр равным 11111. и у всех заявок у которых TRANS_ID=11111 будет означать что транзакция отправлена нужным роботом. У другого робота укажите например 22222 и т.д.
Пределы терминала QUIK (память, количество вкладок, графиков, lua-скриптов)
sav 312 написал: Или Вы имели ввиду другой алгоритм?
а что мешает отправить заведомо некорректную транзакцию? но только такую, чтобы сервер ее пропустил а биржа нет. Этого можно добиться например указав цену вне диапазона биржи.
Получение текста из информационных сообщений QUIK., Добавлен ли в QLua функционал получения информационных сообщений QUIK?
Пользователь
Сообщений: Регистрация: 23.01.2015
17.04.2018 11:41:59
Здравствуйте, В текущий момент такой возможности нет.
Таблица сделок, Данные из таблицы сделок (TRADES)
Пользователь
Сообщений: Регистрация: 23.01.2015
16.04.2018 06:09:36
Здравствуйте, У нас проблема не воспроизводится. Параметр QUANTITY прекрасно работает. Приведите полную версию Вашего кода. И сообщите версию терминала QUIK.
Тормоза на серверах брокера и луа скрипт., Как не входить в сделку в момент тормозов.
Пользователь
Сообщений: Регистрация: 23.01.2015
16.04.2018 05:40:58
Цитата
sav 312 написал: Каким образом в луа-скрипте предусмотреть защиту от входов в сделку в момент тормозов? По какому параметру луа-скрипт может отследить их наличие или отсутствие?
Надежного способа нет. Т.к. все зависит от природы тормозов. С ваших слов, время сервера не отставало, значит тормозов именно на сервере QUIK не было. Скорей всего задержка случилась на участке до биржи. При таком сценарии, отследить задержку можно по времени биржи, которое можно взять например в Таблице Обезличенных Сделок. Т.е. сравнить время в последней сделки в таблице с временем сервера. Однако и это не вполне надежно т.к. данные по обезличенным сделкам едут отдельным потоком от транзакций. Именно в Вашем случае, самым надежным способом было бы отслеживание времени ответа на транзакцию.
Как работать с данными после рабочей сессии? (когда биржа закрыта или в выходные), Работа с историческими данными
Пользователь
Сообщений: Регистрация: 23.01.2015
16.04.2018 05:28:05
Цитата
Андрей написал: это действие означает, что Квик к серверу не подключится
Это значит что QUIK очистит данные когда подключится к серверу.
Цитата
Андрей написал: что бы Квик не подключался к серверу?
Просто не подключать QUIK к серверу.
Трейлинг стоп на графике
Пользователь
Сообщений: Регистрация: 23.01.2015
16.04.2018 05:26:25
Евгений Петров, Здравствуйте, Ответ был отправлен почтой. Большая просьба, в будущем уточнять что речь про QLUA. Для рисования на графиках, в QLUA есть механизм рисования меток. См. документацию глава "Функции для работы с метками"
Защита кода QLua от компрометации, Есть ли возможность исключить доступ к коду на QLua брокера и разработчиков Quik
Пользователь
Сообщений: Регистрация: 23.01.2015
08.04.2018 20:21:33
Здравствуйте, В случае если предполагается передавать код третьим лицам, Вы можете его скомпилировать в *.luac файл и таким образом обезопасить себя. Однако это не 100% защита т.к. есть Lua декомпиляторы (на счет их достоверности ничего сказать не можем). Что касается брокера, то он не видит Ваш код и не имеет никакой возможности его увидеть.
Это одно и тоже, только называется по разному и добавлять ничего не будем ибо нет смысла дублировать одну цифру два раза.
Где ошибка при подписки на тиковые данные ?
Пользователь
Сообщений: Регистрация: 23.01.2015
27.03.2018 17:47:42
Цитата
Андрей написал: Кстати да, от чего то не строится...
Тогда вопрос к брокеру. Скорей всего Вам забыли дать права на таблицу обезличенных сделок.
Поле "param_value" из таблицы ф-ции "getParamEx" и "getParamEx2"
Пользователь
Сообщений: Регистрация: 23.01.2015
27.03.2018 17:46:29
Андрей, Если речь про param_value, то в результате Вы увидите для времени число в формате ЧЧММСС, для даты в формате ГГГГММДД Если речь про param_image, то увидите в результате строку такую же как в таблице текущих торгов.