Ещё один баг: если в указанном примере просить вместо "datetime.sec,datetime.mcs,qty,price" такие параметры "class_code,sec_code,datetime,qty,price", то на стеке окажутся типы ["string", "string", "number", "number"], то есть таблица datetime просто не передастся, и nil вместо неё тоже. А по мне так должна передаваться, ведь table это first-class citizen в Lua. Уважаемая поддержка, задокументируйте все ограничения на параметры SearchItems, пожалуйста. А ещё лучше, исправьте так, чтобы текущая документация отражала реальность.
Вопрос ко всем, кто знает: какую таблицу возвращает getQuoteLevel2 если нет bid или ask?
Так всегда было, формат dat такой. И если юзать CreateDataSource с 4 параметром, и на графике, на котором этот 4-й параметр изображён, нажать F5, то в конец имеющегося датасорса придут все значения по параметру по очереди, как старые, так и новые. И так каждое нажатие F5.
Создание GUI приложений на Lua?
Пользователь
Сообщений: Регистрация: 20.03.2023
30.03.2026 12:49:24
Этот форум посвящён торговой программе QUIK (которая поддерживает скрипты на Lua).
GUI на Lua сложная тема, простых решений нету.
Для себя я переписал библиотеку VCLua
Наиболее живая гуи либа наверно эта
Баг SearchItems с datetime.mcs
Пользователь
Сообщений: Регистрация: 20.03.2023
28.03.2026 23:11:16
Скрипт:
Код
function main()
SearchItems("all_trades", 0, getNumberOf("all_trades") - 1,
function(sec, mcs, qty, price)
PrintDbgStr(tostring(sec))
PrintDbgStr(tostring(mcs))
PrintDbgStr(tostring(qty))
PrintDbgStr(tostring(price))
local ok, err = pcall(function() PrintDbgStr(string.format("%02d\t%06d\t%d\t%f", sec, mcs, qty, price)) end)
if not ok then
PrintDbgStr(err)
return nil
end
return false
end,
"datetime.sec,datetime.mcs,qty,price")
local t = getItem("all_trades", 0)
PrintDbgStr(tostring(t.datetime.sec))
PrintDbgStr(tostring(t.datetime.mcs))
PrintDbgStr(tostring(t.qty))
PrintDbgStr(tostring(t.price))
end
Во-первых, внутри SearchItems почему-то поле datetime.mcs судя по симптомам равно nil, а при получении через getItem оно равно 0. Во-вторых, идёт смещение переданных параметров в функции: поле qty присваивается переменной mcs, поле price присваивается переменной qty, а переменной price ничего не достаётся. В документации написано, что никакого сдвига не должно быть и mcs должно было бы получить nil
Quik 12.2.2.8, брокер БКС, подписка на обезличенные сделки по классу INDX (печатается первая сделка за день по IMOEX2).
Точный расчет комисии при сделке, Точный расчет комисии при сделке
У меня в ежедневных есть строки про "урегулирование сделок". Но там не по каждой сделке, а по площадкам. Типа "вся фонда" за день, "вся валюта" за день. По фьючерсам "биржевые сборы", если по рынку заявки были.
Точный расчет комисии при сделке, Точный расчет комисии при сделке
Пользователь
Сообщений: Регистрация: 20.03.2023
19.03.2026 09:46:40
Я в экселе считаю, но без маржинальных переносов. Брокер вам должен сказать, какая комиссия биржи у него в договоре с биржей. Например, у Финама и БКС разная комиссия биржи списывается (0.03% и 0.02%). И не со всех инструментов (например, родные фонды ликвидности по-другому считаются), не на всех тарифах (на тарифе Инвестор включено в стоимость). И сделки до 10:00 могут по-другому обрабатываться, рыночные заявки на вечерке тоже, айсберг-заявки... Это НЕ просто.
Это общедоступная информация? Где можно посмотреть источник?
Поле is_rest_short_sec в выдаче getBuySellInfoEx не документировано
Пользователь
Сообщений: Регистрация: 20.03.2023
16.03.2026 11:08:47
Oleg Kuzembaev, не правильно, я ничего не пытаюсь отобразить визуально. Я говорю о LUA таблице, которая является результатом выполнения getBuySellInfoEx.
Поле is_rest_short_sec в выдаче getBuySellInfoEx не документировано
Пользователь
Сообщений: Регистрация: 20.03.2023
13.03.2026 11:57:37
Добрый. Я в курсе, т.к. единственный результат поиска по форуму туда и привёл. Но должен он быть задокументирован и для Lua тоже, не только для QPILE и по-другому названной функции.
CalcBuySell и getBuySellInfoEx неправильно считают для фьючерсов с валютой шага цены отличной от SUR
Пользователь
Сообщений: Регистрация: 20.03.2023
13.03.2026 11:54:36
Собственно сабж. Брокер БКС, * со срочным рынком, заявки на 2 млн руб ГО могу выставить в торговую систему как на лонг, так и на шорт, однако функции говорят, что не должен мочь:
Код
maxpos, commis = CalcBuySell(ticker.class, sec, nonfut and "1111111" or "SPBFUTxxxxx", accounts[ticker.class], last, buy, false)
print(maxpos, commis)
debugf(table.tovstring(getBuySellInfoEx("xxxxxxx00000", nonfut and "1111111" or "SPBFUTxxxxx", ticker.class, sec, last)))
Неужели эти функции не умеют до сих пор валютный курс учитывать хотя бы приблизительно?
Поле is_rest_short_sec в выдаче getBuySellInfoEx не документировано
Пользователь
Сообщений: Регистрация: 20.03.2023
13.03.2026 11:00:36
Собственно, сабж. Брокер БКС выдаёт таблицу с этим полем. В документе "Интерпретатор языка Lua.pdf" даже версии 12.8.5 это поле не описано.
Будет ли переход на Lua 5.5?
Пользователь
Сообщений: Регистрация: 20.03.2023
10.02.2026 17:55:14
Надеюсь, что нет, но хотелось бы знать планы разработчиков.
Бесшовная склейка графика
Пользователь
Сообщений: Регистрация: 20.03.2023
20.12.2025 18:05:55
Штатными средствами нельзя. Если знать формат dat файлов из папки archive, то можно. Но нужно ли? Возня лишняя в сравнении с tradingview
Новые фьючерсы на биткойн и эфир, Правильный рассчёт стоимости лота
Пользователь
Сообщений: Регистрация: 20.03.2023
16.12.2025 15:28:33
Да, надо ещё поделить на SEC_PRICE_STEP, который у эфира 0.1
Функции обратного вызова не вызываются одновременно?, Т.е. отследить изнутри OnTrade выполнение другого OnOrder невозможно?
Пользователь
Сообщений: Регистрация: 20.03.2023
15.12.2025 14:39:20
Ни в коем случае нельзя делать sleep внутри колбэков квика, они работают в том же потоке, что и сам квик. Ожидание событий должно быть в main.
Таблица алгоритмических заявок в QUIK для Windows, Не очищается таблица алгоритмических заявок
Пользователь
Сообщений: Регистрация: 20.03.2023
13.12.2025 00:30:27
Это вопрос к брокеру. Явно у него на сервере они остались.
Новые фьючерсы на биткойн и эфир, Правильный рассчёт стоимости лота
Пользователь
Сообщений: Регистрация: 20.03.2023
13.12.2025 00:27:11
Цитата
maxlifter написал: Добрый вечер ,какие параметры использовать в скрипте чтобы по фьючерсам BTZ5 И EHZ5 получалась стоимость 1 лота не 90 000 долл и 3000 долл а 90 и 30 долл ?
getParamEx на STEP_IN_CURRENCY по обоим тикерам возвращает 0.001, ну и далее умножить на цену
Как создать мост QLua-скрипта с другим C++ приложением? Вопрос концепта., Предлагаю такой подход, но есть вопросы.
Пользователь
Сообщений: Регистрация: 20.03.2023
06.12.2025 22:25:18
Цитата
A.T. написал: Причем, мне не критично к скорости, да и к объёму.
Тогда не понятно, чем Вас файлы не устраивают, особенно в RAM диске. Это даже не потребует dll для QLua. А протокол на запрос-ответ понадобится в любом случае.
Ошибка в отображении данных графика объема торгов: Сбербанк, График объема торгов в системе QUIK не соответствует данным с сайта Мосбиржи
Пользователь
Сообщений: Регистрация: 20.03.2023
30.11.2025 00:46:30
Цитата
ДмитрийК написал: Прошу пояснить такое расхождение в данных.
То, что в квике, надо умножать на lotsize, чтобы получить объём сделок в акциях. 06.06.2025 lotsize на сбере был 10 (сейчас - 1). Это объясняет расхождение порядка. Почему на сайте биржи написано 102 026 188 (акций), в tradingview написано 102 022 760, а в Финам (в транзаке) и БКС (квике) указано 10 200 518 лотов (т.е. акций 102 005 180) я не знаю. Может быть по-разному учтён аукцион открытия.
О торговле фьючерсами и ГО
Пользователь
Сообщений: Регистрация: 20.03.2023
19.11.2025 19:36:53
Цитата
Ziveleos написал: Пока позиция +3 ещё не закрыта, деньги под ГО остаются заблокированы, задействовать их под +6 нельзя.
Если бы всё было так просто. Когда я выставляю заявки в обе стороны по одному инструменту, у меня блокируется не сумма ГО покупателя и ГО продавца, а только ГО продавца (как бОльшее из двух). Библиотека расчёта лимитов умеет и такое. Поэтому развернуть позицию может быть и можно без суммы ГО на счету. Это в целом вопрос к брокеру, а не к квику.
О торговле фьючерсами и ГО
Пользователь
Сообщений: Регистрация: 20.03.2023
17.11.2025 23:33:51
Сергей Че, это вы у брокера спросите. У него в расчёте лимитов могла быть ошибка. Но для обращения Вам следует знать точные цены и время заявок, т.к. ГО иногда зависит от цены.
Кто меняет разрешение системного таймера?
Пользователь
Сообщений: Регистрация: 20.03.2023
21.10.2025 20:15:27
Цитата
Serge123 написал: Может быть, Квик ставит разрешение в 1 мс, когда запущены скрипты Луа? Я как раз перед выставлением заявки их запускаю.
квик таймер не меняет, а скрипты могут. У меня почти все скрипты ставят таймер на 0.5мс как раз
Отсутствие сделок в таблице сделок
Пользователь
Сообщений: Регистрация: 20.03.2023
13.09.2025 17:24:47
Izotova Liliya, в архиве версий имеет смысл такие изменения указывать...
Поменяйте вкладки графиков пожалуйста !, Поменяйте вкладки графиков пожалуйста и способ переключения между ними
0 для срочки для рыночной сделки нельзя ставить, на сколько я помню.
Рыночная заявка для торговли фьючерсами
Пользователь
Сообщений: Регистрация: 20.03.2023
28.08.2025 19:59:39
Я использую type="M" и завышенную цену одновременно
Убрать выходные дни с графиков
Пользователь
Сообщений: Регистрация: 20.03.2023
28.08.2025 19:55:13
Цитата
Graf Graf написал: Напишу и в этой ветке. Темы одинаковые. Уважаемые разработчики, когда примите решение и всё-таки датите возможность убрать с графика "торги выходного дня"? Даже в Trading View смекнули, что не надо транслировать этот мусор, и не показывают субботу и воскресенье на графиках наших фьючерсов. Или вам МосБиржа не дает это сделать?
TV на внутридневных тф показывает всё на выходных. А на дневном и выше они по торговым сессиям формируют свечи (то есть открытие по фьючерсам считается от 19:05 предыдущего дня), а не по календарным, поэтому этих дневных свечей там нет.
Графики и данные свеч с сайта MOEX не совпадают с графиками в QUIK
Пользователь
Сообщений: Регистрация: 20.03.2023
16.07.2025 15:00:21
И ещё можете посмотреть, какие графики в мобильном приложении ВТБ
Графики и данные свеч с сайта MOEX не совпадают с графиками в QUIK
Пользователь
Сообщений: Регистрация: 20.03.2023
16.07.2025 14:57:03
109640 - закрытие торгового дня, 109000 - закрытие календарного. Можете спросить в обращении к мосбирже, почему такое различие. Например, по акциям типа GAZP мне ответ приходил, что графики составляются по календарным дням, поэтому есть на графике выходные дни.
ВТБ разница в объемах
Пользователь
Сообщений: Регистрация: 20.03.2023
10.07.2025 22:01:11
Индикатор объёма показывает объём сделок, не заявок. Все сделки были по 93.05 в 6:59. Заявки в стакане могут перемещаться намного быстрее, чем вы видите обновления этого стакана.
ВТБ разница в объемах
Пользователь
Сообщений: Регистрация: 20.03.2023
10.07.2025 11:27:46
Вы не учитываете свечу в 6 часов, считая, что первый час - это седьмой
Вызов getDataSourceInfo() из Init() в Lua индикаторах
Пользователь
Сообщений: Регистрация: 20.03.2023
04.07.2025 11:03:17
Цитата
Артем написал: да, и у меня так, но в Settings у вас ничего не выводится , то есть налету поменять нет возможности, нужно менять в базе данных, и с лагом уровни прорисуются, вопрос в другом как программно изменить Settings, вне Init
Если на каком-то одном инструменте надо было вручную добавить несколько уровней, я использовал вкладку "Уровни" для цены инструмента в настройках графика.
В чём вопрос я понимаю, но считаю, что так делать - это противоестественно. Settings для статических настроек, туда ничего не выводится, динамические внутри скрипта должны работать. В TradingView так же, кстати. Не слышал о системах, где было бы иначе. Зачем в Settings выводить численно значения уровней, если они и так на графике видны? Если override нужен, ну так только его в Settings легко оставить - если в поле ноль, возвращать автоматический уровень (который берётся не из Settings, а внутри OnCalculate), если не ноль, то возвращать это ненулевое значение
Вызов getDataSourceInfo() из Init() в Lua индикаторах
Пользователь
Сообщений: Регистрация: 20.03.2023
03.07.2025 13:28:40
У Вас уровни могут в любой момент поменяться что ли? Я их раз в час рассчитываю отдельным скриптом (сервер) и клиенты (индикаторы) по факту раз в час смотрят в хранилище уровней внутри OnCalculate и берут оттуда ближайшие 2-4 верхних и нижних. В моём случае хранение через C++ структуры данных внутри одной DLL, которую грузят серверный скрипт и клиентские индикаторы.
Консольный QUIK
Пользователь
Сообщений: Регистрация: 20.03.2023
01.07.2025 10:25:37
Цитата
Ziveleos написал: Если начинает долго загружаться, запускаю скрипт, обрезающий графики до приемлемого размера.
Если Вам нужна история дальше, чем 3000 свечей, для всех открытых графиков, -- страдать. Если не нужна, можете удалить или переименовать (чтобы назад можно было вернуть) папку archive внутри папки с квиком
Консольный QUIK
Пользователь
Сообщений: Регистрация: 20.03.2023
30.06.2025 13:31:20
Verticalx, долгая загрузка квика обычно значит давнюю историю в archive/*.dat файлах
Индикатор с большим числом линий.
Пользователь
Сообщений: Регистрация: 20.03.2023
27.06.2025 01:20:22
Ещё немного потестил в ситуации: луа 5.4, квик 12.2.2.8, торги не идут. добавляю скрипт на чарт с сбером, галки автомасштабирования и последнего значения сняты, на таймфрейме A, ничего не показывает - меняю таймфрейм на B - тогда показывает все линии, меняю таймфрейм на A - ничего не показывает, меняю таймфрейм на B - ничего не показывает, меняю на C - показывает все линии. То есть на каждом тф, кроме первого, линии показываются ровно один раз. Но квик не виснет и не тупит. Поведение при этом не зависит от количества линий, т.е. при local lines = 1 тоже самое.
То есть SetRangeValue точно бажная функция.
Индикатор с большим числом линий.
Пользователь
Сообщений: Регистрация: 20.03.2023
27.06.2025 01:00:06
Nikolay, версия с cache на SBER, 15 ничего не показывает у меня при любом delta (хотя SetRangeValue возвращает true), и не вешает терминал. Я тестил без подключения к серверу.
Неправильный расчет дневных индикаторов из-за неправильного учета данных сессий выходных дней
Пользователь
Сообщений: Регистрация: 20.03.2023
07.06.2025 20:49:56
Сергей, я задавал подобный вопрос бирже через форму обратной связи. Они сказали, что графики на их сайте строятся по данным календарных дней, а не торговых дней. Соответственно, такие данные и есть официально правильные, а остальные - нет.
Замечания по реализации в QUIKе обработки заявок (и, наверное стоп-заявок).
Пользователь
Сообщений: Регистрация: 20.03.2023
05.06.2025 14:42:35
В доках не написано, но на сколько я понимаю, в SearchItems синхронизирован доступ к таблицам из разных потоков, в отличие от остальных функций доступа, поэтому может быть такой эффект от getItem
Некорректно работает скрипт, обнуляется на срочном рынке
Пользователь
Сообщений: Регистрация: 20.03.2023
19.05.2025 18:11:37
На такие вопросы Вам только разработчик скрипта ответит. Если Вы, конечно, сюда код скрипта не запостите.
Открыть скриптом окно стакана
Пользователь
Сообщений: Регистрация: 20.03.2023
15.05.2025 22:33:38
Если на той же вкладке есть таблица текущих торгов с теми же инструментами, то я умею делать программно вызов стакана квика (через dll). Другое дело, что я этим не пользуюсь, т.к. свои стаканы запрограммировал.
ИИ часто в коде подставляет функции, которых на самом деле нет. Когда ему об этом говоришь, можно попросить его написать такую функцию. Конечно же, в написанном снова могут оказаться несуществующие функции.
Замирание на полминуты в момент выставления заявки на срочке
Пользователь
Сообщений: Регистрация: 20.03.2023
08.05.2025 00:47:59
ISR, а если отключить флажок, нажать левой кнопкой мыши на области графика с ОИ и потом нажать F5 на клавиатуре, происходит заполнение пробелов ОИ?
Впоследствии было зарегистрировано пожелание на то, чтобы свойства линий всегда возвращались в OnCalculate. По этой причине документация не была изменена.
Добрый. Учитывая, что столько лет это пожелание не реализовано (и скорее всего никогда не будет уже), конечно же имеет смысл исправить документацию.
Если всё-таки займётесь свойствами линий, очень бы хотелось изменять цвет из скрипта (как в TradingView, чтобы часть точек была одного цвета, а часть другого; актуально, например, для максимума/минимума из 10 линий, чтобы понимать по цвету, какая из линий выбрана). В смысле нагрузки на систему, видимо, дешевле всего экспортировать функцию типа SetColorFromNow, чтобы юзер понимал, что смена цвета совсем не бесплатна.
получение параметров индикатора, обращение к line
Пользователь
Сообщений: Регистрация: 20.03.2023
01.05.2025 20:14:22
Цитата
Michael Bulychev написал: Добрый день. Действительно, параметры линий обратно в скрипт не передаются. Для некоторых индикаторов это просто бессмысленно и затратно по ресурсам. мы обязательно отразим этот момент в документации.
Почти 10 лет прошло. Не пора ли задокументировать этот факт наконец?
Внешний вид
Пользователь
Сообщений: Регистрация: 20.03.2023
24.04.2025 22:59:28
Если там не получается, то никак нельзя.
Внешний вид
Пользователь
Сообщений: Регистрация: 20.03.2023
24.04.2025 21:27:39
Редактирование настроек графика - Диаграмма - Внешний вид - Порядок отображения слоёв данных