2) ничего не синхронизируется. Всё едет независимо. Как приехало - так отобразили. Купили историю заявок на бирже? Серьёзно?? В вашем файле время формирования информации, не более.
Вставляйте в начало строки логирования любой уникальный текст. Уникальное число или набор букв. Еще лучше - осмысленный. Потом к коде скрипта эту метку легко будет искать.
В QUIK с какой-то версии вернули защиту от отладки. Кому и с зачем пришла в голову столь "светлая мысль" - в ряд ли мы узнаем. Но своё фи непременно передадим посредством этого форума. Была где-то тема здесь уже на этот счет (на счет того, что вернули защиту от отладки).
Пошагового отладчика нет. Ни встроенного, ни внешнего.
Помимо message и вывода в лог-файл еще есть вариант использовать функцию PrintDbgStr. По ссылке подробно написано как. Кстати, описанная там методика позволяет увидеть ошибки при загрузке скриптов индикаторов, что неочевидно :)
Александр написал: У одного ТТП (что такое?), у второго ТТТ, у третьего таблица ТТТ. Если чуть в сторону, меня сразу это вводит в заблуждение...
Одно и тоже. Квик переименовал эту таблицу, потому еызывабт по-разному: таблица текущих параметров ттп и таблица текущих торгов ттт. (по-моему, "параметров" было корректрее название)
Цитата
У кого, у Владимира? Так он бывает сам себе противоречит,
Владимира не читай, он чушь пишет и сказки рассказывает про книжки, которых никто не видел. 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))