Александр написал: У одного ТТП (что такое?), у второго ТТТ, у третьего таблица ТТТ. Если чуть в сторону, меня сразу это вводит в заблуждение...
Одно и тоже. Квик переименовал эту таблицу, потому еызывабт по-разному: таблица текущих параметров ттп и таблица текущих торгов ттт. (по-моему, "параметров" было корректрее название)
Цитата
У кого, у Владимира? Так он бывает сам себе противоречит,
Владимира не читай, он чушь пишет и сказки рассказывает про книжки, которых никто не видел. s_mike читай внимательно что пишет. Точно и по делу.
Цитата
Я так понимаю в OnParam вываливается изменения всех параметров в бумагах срочного рынка и фондового рынка, а дальше я уже путем применения фильтров отлавливаю нужный мне по той или иной бумаге. Однако мне кажется, что в таком количестве информации мой скрипт либо пропускает некоторые изменения параметров, либо срабатывает со значительным запаздыванием.
А вот это "кажется" чем подкреплено? Ну и потом, про срезы данных и пакеты вам до этого сообщения уже писали. Впечатление, что вы не читаете ответы.
А ещё есть OnQuotes обработчик, это про стакан. Если речь про параметры bid/offer, то в стакане информация обновляется чаще, чем в ттт.
Либо явно открываете таблицу ттт с нужным параметром Либо указываете заказ параметра в настройках терминала Либо вызовом функций QLua подписывается на подписываетесь на получение параметров по определённым инструментам.
Александр написал: Т.е. даже не обязательно чтобы что-то вообще было открыто.... Хорошо, но сколько же инструментов в этой неосязаемой (невидимой даблице)? Их же там полно! Весь срочный рынок, фондовый рынок, а там куча различный ценных бумаг с ещё большим количеством параметров, которые могут меняться.... Как же их обрабатывать бедному скрипту?
По-моему, в этой ветке смешались разные смыслы слова "захват". 1. Захват как контекст, как обрасть видимости, как closure 2. Захват как блокировка обращения к одной области памяти разными потоками.
Про 2 Не важно как вы определили переменную, поступ и изменение её потокобезопасно в смысле структур Lua, в смысле корректности состояния переменной. Если тут возникают проблемы и состояние переменной становится невалидным, то это однозначно ошибка QLua и её исправят.
Про 1 Это чисто семантмческие моменты языка Lua, и, насколько я понял первое сообщение, вопрос совсем не про это.
Boris написал: Не нашёл в документации как необходимо организовать создание таблицы средствами lua - для того чтобы можно было использовать встроенные в quik функции сортировки и фильтров по столбцу ? Где об этом можно прочитать ?
По ощущениям - всегда учитывается только формат string. Ни дату, время ни числа в созданной lua таблице не отсортировать ?
В Lua и в QUIK есть два разных понятия, определяемых одним термином "таблица". 1) Таблицы как тип данных языка Lua. 2) Таблица как элемент визуального интерфейса.
Вы о чем спрашиваете? Хорошо бы уточнять всегда, когда вы применяете термин "таблица" в рамках QLua / QUIK. Иначе, как видно по теме, "всё смешалось", каждый понял своё.
Сергей написал: Если не ошибаюсь, как сказали выше, qlua - обеспечивает интерфейс с квиком, а остальное можно писать на lua. Как на Ваш взгляд, всё ли из этого можно запрограммировать в lua, или в каких то из моих 5-ти пунктов понадобится что-то дополнительное ?
Выше написана полная чушь и компот.
Есть язык Lua. Он встроен в QUIK. На Lua и пишутся роботы в QUIK. Разумеется, добавлено несколько функций в Lua для того, чтобы можно было взаимодействовать с терминалом.
Так что просто пишите на Lua, обращайтесь к функциям, описанным в документации QUIK, при надобности подключайте дополнительные библиотеки. Это всё штатный функционал Lua.
Цитата
Сергей написал: Потом, если не ошибаюсь, скрипт нужно будет запустить в квике в Сервисы >> lua скрипты. Подключить и запустить на время сеанса.
Павел Bosco написал: дальше я понял, что сделать тест с lua_lock невозможно, тк lua_lock - просто макрос, и из своей библиотеки "родной" quik lua lua_lock я вызвать никак не смогу. и другие разработчики - тоже.
Если вы линкуетесь с lua54.dll, входящим в состав QUIK, то все вызовы у вас идут именно в него. И так и следует делать. Если же вы к своей dll подшиваете собственный Lua-runtime - ну тогда ССЗБ, как говорится.
Николз, нужен полный код. Для возможности анализа, повторения. За фрагменты на любом форуме посылают лесом, порой в грубой форме. Здесь напрасно нянькаются.
1. Подход годится только для очень волатильных инструментов. Нет тиков - робот вообще не реагирует ни на что.
2. Откуда получены приведённые вами цифры 0.004..0.006 сек не понятно совершенно. В логе вы пишете про время в мкс, т.е. должны быть отлогированы значения порядка 4000..6000,но таких значений нет. И сумм таких не складывается. Где вы берете значения в мкс - и вовсе вопрос.
3. Чем этот подход лучше помещения ровно такого же кода полностью в main()? Ровно все те же плюсы.
function GetPair(x)
local s = tostring(x)
s = s:sub(s:find (".")+2, 15)
if s == "" then
s = 0
end
return math.floor(x), tonumber(s)
end
print(GetPair(5.6))
print(GetPair(5.9999999))
print(GetPair(6))
Проблема не в библиотеках, а в том, судя по сообщению ликёра, что проект 32 битный собираете Менять в свойствах проекта И не понятно как именно вы былдитк, вы это упорно не пишете
Тупость и глупость. Кто захочет дебажить именно терминал - тот защиту обойдёт. Кто захочет вполне легально дебажить свою библиотеку для Lua - не сможет это сделать. Так какого хрена мешать легальный действиям и не особо мешать нелегальным? Все как наши законодатели делаете: соблюдать законы сложно, нарушать - легко. Верной дорогой!
99% что проблема именно в том, что вы написали. Никакого признака "вот теперь заполнено все" нет. С другой стороны заполненность trans_id и есть в вашем случае такой маркер.
Владимир написал: Это САМ СКРИПТ формирует айдишки заявок!
Я ж сказал что ты не понимаешь разницу между транзакцией и заявкой. И даже когда я все подробно расписал - ты, дебила кусок, понять прочитанное не сумел.
Это не ошибка. Это результат произвольно го порядка поступления информации с биржи. И, соответственно, произвольного порядка наполнения данных в колбеках скрипта. Если от биржи информация о зарегистрированной заявке пришла раньше информации о случившемся сделке, что происходит в большинстве случаев, то в ontrade приходит сразу полная информация, включая указанный пользователем ID транзакции. Если информация о сделке пришла раньше информации и породившей её заявке, то стачала будет ontrade, в котором часть полей, данные в которые попадают с заявки, будут не заполнены. А после того как с биржи придёт информация о заявке, сервер квика сможет опознать заявку для уже известной ему сделки и вызовет ontrade уже с заполненной информацией в полях про заявку
Я тебе рассказываю как оно на самом деле. Причём инфу эту ты не найдёшь нигде, она из очень глубокого многолетнего изучения. А ты вместо спасибо продолжаешь выпендриваться по-идиотски. Дурак и напыщеный идиот.
А сервер при том, что терминал лишь передаёт инфу на сервер и получает её с сервера. Терминал вообще не производит содержательного работы со сделкам и заявками. Впрочем, сервер 4вика тоже. Все биржа. И это абсолютно правильно, иначе барак полный выйдет.
Владимир написал: Но, господа, это же МОЯ айдишка, это НА МЕНЯ возлагается обеспечение её уникальности, так какие могут быть нули? Откуда им взяться? И это на 146% ошибка именно ПО Квика - ни брокеру, ни бирже до моей айдишки нет никакого дела. Непорядок...
Нет, это ошибка скриптописателя, который не понимает. "прерывания", как вы их называете, приходят в любом порядке. Но это не болажь квика, а особенность работы биржевых API В том случае, если сервер квика получает об биржи информацию о сделке раньше чем информацию о зарегистрированный заявке, он сообщает вам о сделке вызовом ontrade, но про заявку он ещё не знает, биржа это ещё не сообщила. Соответственно и информацию поставленную вами на заявке он сообщить не может, у него сервера квик в этот момент ещё нет такой заявки, он про неё не знает Потом, когда с биржи приходит информация про зарегмюистрированную заявку, в скрипте вызывается снова ontrade, но уже с поставленной информацией о заявке,т.к.теперь появилась возможность все это связать, теперь сервар знает про заявку и сделку. Ещё в этот момент будет вызван onorder, конечно.
А то что вы отправляете - это транзакция а не заявка.