Сегодня брокер прислал обновление 9.2.3.15, в нём падает бесконечная ошибка: Методом гугления был найден вот этот мануал https://arqatech.com/upload/faq/Certificate_QUIK_Front9.2.pdf, он не помог. Есть предположение, что каким-то местом это связано с пользовательскими индикаторами, которые лежат в папке LuaIndicators, потому как без них ошибки нет. Ни один из индикаторов с файлами не работает. Как побороть сие?
Речь про ненужную информацию не идет. Цель - визуально разделить нужную информацию в рамках одной таблицы текущих торгов, например разделить акции по секторам:
В текущий момент в таблицу текущих торгов можно добавлять только конкретные инструменты. Было бы довольно удобно для разделения инструментов на отдельные группы (допустим разделить акции по их секторам) добавлять некий разделитель, что-то типа строки состоящей только из "-" во всех столбцах или каких-либо других символов. По возможности запретить выбирать этот пункт в таблице текущих торгов или при его выборе ничего не рисовать на графиках.
Решал ли кто-то подобную задачу по ограничению возможности запуска скрипта только с определенного компьютера. Допустим при первом запуске осуществляется привязка к железу из самого же скрипта и в дальнейшем осуществляется проверка откуда идет запуск. Интересуют любые наработки/статьи по этому поводу. Возможно что-то такое уже было но поиском тут не нашел.
anbec anbec пишет: Сделать горячие клавиши для вызова доступных скриптов Lua. как для вызова доступных портфелей Qple (ctrl F10; ctrl F11 и ctrl F12) к примеру.
Добрый день,
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что мы также считаем целесообразным его реализацию и постараемся включить в план доработок при выпуске одной из следующих версий нашего ПО.
Иногда, при настройке графика под себя, требуется временно скрыть ту или иную область или отдельный индикатор. Область/индикатор могут быть уже настроенной, поэтому удалять их и потом заново восстанавливать будет довольно затруднительно. Вполне бы подошло просто выставление чекбокса, допустим в дереве всей диаграммы. По умолчанию все чекбоксы отмечены. Если снимается чек с области, то снимаются со всех дочерних индикаторов. Или в списке настроек каждой области/индикатора можно добавить чекбокс "Отображать на диаграмме". Спасибо.
Копировать отдельные таблицы/графики вроде как можно (ctrl+n) и потом переносить их на другие вкладки. Но если элементов, которое хочется скопировать, много, то это довольно долго делать. Можно ли как-то скопировать вкладку целиком, чтобы потом можно было просто перенастроить там уже таблицы?
Suntor написал: Ну тогда нужно следить за временем и датой в сделках, если у вас внутридневная торговля... А вообще, по хорошему, каждая заявка и сделка имеют уникальные номера. И вот к ним нужно привязываться. И помечать, что заявки и сделки с такими-то номерами были обработаны, чтобы на них повторно не попадать. Это отдельная задача, и не такая простая на самом деле. У меня это вылилось в отдельную торговую библиотеку.
то, что тут каждый чих имеет свой уникальный номер эт понятно, оно наверно даже и правильно, все таки не семечки на кону а деньги. но с другой стороны хранить кучу уникальных номеров это со временем вырастет в проблему именно количества, что тоже не есть гуд. Спасибо за наводку про разные даты и тип дат, буду эксперементировать дальше)
Suntor написал: Потому что есть «Дата торгов», а есть «Дата сделки». Зайдите в настройки «Таблицы сделок», и добавьте ещё параметр «Дата сделки». Сразу увидите, что они отличаются. Дата торгов, показывает сессию которая началась после вечернего клиринга, она идёт вечером предыдущего дня, и днём следующего, это всё одна сессия торговая. Соответственно, в скрипте, нужно проверять даты сделок, которые приходят в ф-ции обратного вызова. Это во-первых.
шайтанама!!! про то, что время клиринга сделано не по ацтекскому календарю, я знал, но чтоб прям так...просто ВАХ
Цитата
Suntor А во-вторых, а почему собственно ваш скрипт не может ставить стоп по сделкам за предыдущий день? Может у вас такой алгоритм, в один день покупаете, потом ждёте и на следующий день уже выставляете стопы и закрываете позиции. То-есть, это не вопрос к датам в Quik, это вопрос к ведению позиций в вашем алгоритме. Как вы их храните, считаете, открываете и закрываете. Хоть в текстовый файл информацию сохраняйте...
да не, у меня все просто, купил фьюч - сразу поставил стоп, продал - сделал тоже самое. ну и плюс сам скрипт там считает уже открыте позиции и все такое) зачем мне там выставление стопов на следующий день, я же не олигарх, я только учусь :)
Вобщем получается нечто следующее: если скрипт не был остановлен, а просто был закрыт quik, то при следующем запуске quik - автоматически загружается и срабатывает скрипт. Но, если за прошлый день были какие то сделки, то в новый день они по новой прогоняются, для них срабатывают все соответствующие колбеки. Скрипт думает, что это новые сделки и выполняет соответствующие действия. В моем случае ставит по ним стопы: На картинке в таблице сделок всякие сделки за вчера (26.06.2018), в таблице стоп-заявок все стопы были выставлены скриптом сегодня при запуске quik. Собственно, непонятно, почему вчерашние сделки датированы сегодняшней датой. Вопрос видимо больше к разработчиком, что происходит при запуске квика в таком случае, что там в ядре генерируется, что qlua думает, что произошла куча новых сделок, хотя они все старые?
Suntor написал: Прямо под полем ввода текста, ссылка есть «Загрузить картинки». После загрузки, на неё нажимаете, и вставляете в текст.
Спасибо) +1 лвл к освоению форума. +10 к карме Suntor
Цитата
Если он у вас по таблице всех сделок работает, то да. В неё подгружаются все сделки за текущую торговую сессию при соединении Quik с сервером.
работаю я с таблицами stop_orders, futures_client_holding и orders и только в колбеках. нет ни какой обработки исторического содержимого этих таблица. получается, что при загрузке quik для любого возможного трейда (который прошел в режиме оффлайн) отрабатывает весь набор событий ?
сори) накошмарил с картинками Если в картинках, то произошло сегодня примерно следующее: днем была экспирация опционов, вечером при запуске квика в таблице сделок видим: при запуске квика вечером скрипт на такую ситуацию отреагировал следующим образом: параметры выставленных стопов:
Ситуация примерно следующая: допустим вчера я поработал в quik, был запущен скрипт и по завершению не была нажата кнопка "Остановить", сегодня при запуске quik скрипт автоматом запускается и наблюдается примерно следующее - скрипт начинает отрабатывать, да еще и не по разу. При этом скрипт видимо обрабатывает транзакции, которые могли произойти пока терминал был закрыт, но результат при этом вообще не предсказуем. Если в картинках, то произошло сегодня примерно следующее: днем была экспирация опционов, вечером при запуске квика в таблице сделок видим: [img]d:\1.png[/img] при запуске квика вечером скрипт на такую ситуацию отреагировал следующим образом: [img]d:\2.png[/img] параметры выставленных стопов: [img]d:\3.png[/img] если последний стоп я понять могу, он закрыл купленный фьючерс, то откуда взялись первые два стопа? фильтр по коду класса инструмента сделан, отрабатывать скрипт должен только при торговле фьючерсами. и вообще это нормально, что скрипт обрабатывает все что было в прошлом, пока терминал был закрыт?
Создать в скрипте таблицу candleInfo = {}, записывать туда время бара и своё расчётное значение table.insert(candleInfo, {currentCandle["datetime"] ,calcValue}), ну а потом сделать функцию для поиска по таблице. Перебирать бары, брать их datetime и через SearchItems искать в таблице candleInfo. зы. На практике не проверял, но вроде как годный алгоритм и без всяких индикаторов
Вычитание из числа округленного до сотых числа округленного до сотых, В скрипте две переменных, округленные до сотых. Из одной вычитается другая. Результаты математической операции ниже:
На просторах интернетов можно найти доп.модуль QL.LUA, в нём много различных вкусностей, которые помогают не изобретать велосипед, а использовать то, что уже давным давно написано. Скачиваете, подключаете в своем модуле (require "QL";), используете... В частности из QL.LUA:
Код
function toScale(number,scale,dir)
-- округление числа до scale вниз при dir==floor, вверх при dir==ceil или математическое при dir==nil
if not dir then
return math_floor((0.5*scale+number)/scale)*scale -- math rounding
elseif dir=='floor' then
return math_floor(number/scale)*scale -- floor rounding
elseif dir=='ceil' then
return math_ceil(number/scale)*scale -- ceil rounding
end
end
vgi написал: Берите из колбэка class_code и sec_code инструмента и проверяйте его тип:
Код
local pi = getParamEx (class_code,sec_code ,"sectypestatic")
local sectype = pi and pi.param_image
if sectype = = "Ценные бумаги" then
...
end
Цитата
Игорь Б написал: Соответственно, смотрим таблицу сделок и функцию getItem("trade",i).class_code
Все спасибо, оба варианта годны, но остановлюсь наверно на class_code. Завязываться в коде на кириллицу сами понимаете, не камильфо) "Фьючерсы" легко превратится в "Futures" простой сменой языка. Самое интересно, что именно недокументированный sectypestatic отработал, а вот документированный SECTYPE - нет.
Всем вечера доброго. Очень простая задача - определить по кому прошла сделка: по фьючерсу или по опциону. Возможно конечно вопрос уже обсуждался, а может он просто дилетантский и я ответа нужного не нашел но все таки. Как "правильно" в калбеках опредилить вид бумаги, по которой произошла сделка? К таблице "Состояние счета" обратиться видимо пока нельзя (а может уже можно, просто я не знаю), в других таблицах есть только sec_code. пока что мысль одна - тупо проверять длину sec_code и его содержимое, но может есть более правильный подход или еще лучше готовая функция?