Владимир написал: Во дела! У меня у одного из брокеров именно 8.11.0.66. Никогда не обращал внимания - тупо давил на "запустить". Оказывается, запускалась 5.3.5. Ну и ладно. ::
т. е по умолчанию запускаятся младшая и более массовая версия? У на компе никая версия луа не установлена, а спрашиваю на случай, если будет использоваться скомпилированный байткод.
Добрый день. В обновленной версии 8.11.0.66 появился выпадающий список для выбора версии луа при запуске скрипта. А если не выбрать там ничего, какая версия будет использоваться по умолчанию - старшая?
Владимир написал: Дмитрий, В соседние по строке или по столбцу? Может, например, портиться i, может InsertRow забыли включить, может, какие-то проблемы с нулевым столбцом. Хотя нет - я же его использую, только он невидимый.
Вот полный код функции
Код
function Report()
i = i + 1
last_time = os.date("%H:%M:%S", os.time())
status1 = tonumber(getParamEx(CLASS_CODE, SEC_CODE, "STATUS").param_value);
status2 = tonumber(getParamEx(CLASS_CODE, SEC_CODE, "TRADINGSTATUS").param_value);
SetCell(id, i, 0, tostring(last_time))
SetCell(t_id, i, 1, tostring(status1))
SetCell(t_id, i, 2, tostring(status2))
InsertRow(t_id, -1)
end
а вот скрин работающего окна [img]file:///G:/Screenshot_1.png[/img]
Добрый день! Прочитал на сайте брокера рекомендации по настройке сетевого адаптера, хотел сравнить со своими, но поскольку там все на английском языке, не все настройки получилось понять. Хотелось бы услышать мнение не только официальной техподдержки, но и просто разбирающихся людей читающих этот форум. У меня всё работает, ничего не лагает, но при переустановке драйвера сетевой карты установил только сам драйвер, без ненужного на мой взгляд софта под названием Intel PROSet из-за чего и вылезла проблема с английским языком. Меня интересуют следующие позиции: 1) Макс. IRQ (шт/сек) 5000 у себя вижу Interrupt Moderation Rate, которая сейчас стоит в Adaptive, но предполагаю поменять на Предельная (ITR = 3600) ? При этом сама Interrupt Moderation стоит в disable. 2) 802.1pSupport disable (советует брокер), у меня наверно пункт "Packet Priority & VLAN" стоит Packet Priority & VLAN Enabled нужно сменить на просто VLAN Enabled? 3) Аппаратный контроль суммы - disable, у меня IPv4 Checksumm Offload стоит Rx & Tx Enabled?
Также RSS load balancing profile стоит в ClosestProcessor, а увас?
Добрый День! Допустим Квик предлагает заменить истекающие на срочке инструменты, жму да. Интересно, а можно как-то перехватить это событие чтобы в скрипте луа поменять название фьюча на новый?
Добрый день! У меня Виндовс 10 х64 и Квик 8.4.1.6 По неизвестной причине стало сегодня многократно срабатывать оповещение. Вот скриншот: Здесь поставил обычное оповещение на превышение параметра и оно стало срабатывать ежесекундно. Раньше такого не замечал. Это баг или новая фича?
Добрый день! Столкнулся с такой проблемой: котировки меняются только в стакане. График стоит, в таблицу всех сделок ордер-лог не идет. У брокера есть скрипт проверка соединения (брокер ВТБ). Запускал этот скрипт - соединение с сервером нормальное. Также запускал такой скрипт луа:
Код
CLASS_CODE = "SPBFUT" -- Класс бумаги
SEC_CODE = "RIU0" -- Код бумаги
IsRun = true
function main()
CreateTable()
while IsRun do
sleep(1)
end
end
function CreateTable()
t_id = AllocTable()
AddColumn(t_id, 0, "Time", true, QTABLE_INT_TYPE, 15)
AddColumn(t_id, 1, "Status", true, QTABLE_INT_TYPE, 15)
t = CreateWindow(t_id)
SetWindowCaption(t_id, "Status "..SEC_CODE)
InsertRow(t_id, -1)
end
function OnAllTrade(alltrade)
status = alltrade.period
SetCell(t_id, 1, 1, tostring(status))
if status == nil then message("Торгов нет", 3) end
end
function OnStop()
IsRun = false
end
Сейчас (после 10:00) в таблицу должна выводиться 1, но поскольку таблица пустая значит функция OnAllTrade не активна (такое бывает, когда котировки не идут). Если проблема на стороне брокера, как можно грамотно сформулировать проблему?
Константин Рейм написал: у меня бзик - по "феншую" должно быть и все))).
чтобы было по фэншую можно сделать так
Код
CLASS_CODE = "SPBFUT" -- Класс бумаги
SEC_CODE = "RIM0" -- Код бумаги
IsRun = true
function main()
-- Округление по Фэншую
-- status = tostring(math.modf(getParamEx(CLASS_CODE, SEC_CODE, "TRADINGSTATUS").param_value)) -- Вариант 1
status = tostring(math.modf(getParamEx(CLASS_CODE, SEC_CODE , "STATUS").param_value)) -- Вариант 2
message(status)
while IsRun do
sleep(1)
end
end
function OnStop() -- Функция вызывается когда пользователь останавливает скрипт
IsRun = false
end
Но сейчас наверное уже все забыли чего я добивался. Этой функции нужно давать пинка под зад, чтобы каждую минуту мониторился статус. У меня скрипт завязан на минутные бары и получается, что без статуса не грузятся некоторые значения в таблицу в 13:59, 18:44 и 23:49. Пытался сделать кикстартер на основе os.time, но ничего не получилось.
Константин Рейм написал: Status = Round(getParamEx("SPBFUT", Fut, "status").param_value) -- Торговля разрешена/не разрешенаПостоянно проверяется. Такой вариант не подходит?
Не знаю, может что делаю не правильно, но код выдает ошибку
Код
CLASS_CODE = "SPBFUT" -- Класс бумаги
SEC_CODE = "RIM0" -- Код бумаги
IsRun = true
function main()
CreateTable()
Status = Round(getParamEx(CLASS_CODE, SEC_CODE , "status").param_value)
-- Error: attempt to call global 'Round' (a nil value)
while IsRun do
sleep(1)
end
end
local c1 = getParamEx 2(CLASS_CODE, SEC_CODE, "TRADINGSTATUS" );
if (c1.result = = "1" ) then
if c1.param_image ~ = "открыта" then
message ( "Сессия " .. c1.param_image);
flag_Session = false ;
end ;
end ;
Рассмотрел этот и другие предложенные варианты. Они работают, но не так как хотелось бы, поскольку видимо нечетко сформулировал задачу. При запуске скрипта этот и другие коды выдают значение однократно. В описании к функции getParamEx 2 говорилось что-то про подписку на события, но и этот код срабатывает однократно. Например запустил его до промклиринга, он выдал текущее значение, но в момент начала клира на выходе сигналов не дал. Только сейчас понял, что наверно необходимо как-то стробировать код
Код
status = tonumber(getParamEx(CLASS_CODE, SEC_CODE, "TRADINGSTATUS").param_value)
раз в минуту при помощи функции os.time. Пробовал сделать так
Код
function Get_Time(Seconds)
Seconds = os.time()
if (Seconds%60 == 0) then
message("NEW Minute", 3)
end
end
но месседж не приходит каждую минуту, что не так? Или может есть какой-то вариант с такой строчкой
Код
local Last_Time = tostring(GetInfoParam( "SERVERTIME" ))
Anton написал: Почему бы в эксель DDE не настроить
DDE настроен и использую его для офф-лайнового анализа данных, а ODBC хотел бы использовать для онлайнового анализа. По моим предположениям непрерывный вывод данных через ODBC быстрее, чем по DDE и возможно нагрузка на комп будет ниже. Вы наверно ещё спросите а почему не используется луа для онлайнового анализа? Из таблиц луа неудобный вывод - только в файл, по ПКМ ничего не вывоится.
Egor Zaytsev написал: Нужны последовательные скриншоты настроек вывода + версия QUIK, версия MS Офиса.
Версия Квик 8.4.1.6 Вот настроечная таблица Здесь по аналогии с Access предположил, что какие-то столбцы могут быть глючные, поэтому попытался пока вывести только один столбец. "Инструмент сокр" вывелся в F2 без ошибок. Дальше добавил Цена, Операция, Кол-во, Дата, ОИ и при выводе появилась ошибка: Стало очевидно, что в приемных столбцах надо поменять тип данных. Т. е. нужно выделить столбец и через ПКМ поменять на какие значения? Время и Дата с текстового вероятно изменить на "время и дата"? С числовыми не очень понятно: Ри например целые рубли, сбер с копейками, как тут форматировать для всех одинаково?
С книгой Эксель также как и с Access можно выводить только в закрытую книгу (в открытую выводить не пробовал)?
Вообще вызывает неудобство, когда возникает ошибка, то не можешь закрыть это гребанное окно с ошибкой кнопкой "прекратить вывод" пока не выведутся все данные! Это как-то можно улучшить?
Egor Zaytsev написал: Мы скинули ссылку выше на сайт майкрософт, вы проверили?
Я понял, что эта технология не читает русские буквы, но к сожалению об этом нигде не написано и не понятно как это может помочь настроить экспорт теперь в эксель, если там выделяется пустой диапазон. Кто-нибудь успешно выводил данные по ODBC в эксель? Отзовитесь)
Экспорт в Access настроил. Причины ошибки две: кириллические символы в названиях столбцов и не правильный тип данных в полях Дата и Время. В последнем случае гайд квика вводит пользователей в заблуждение. Числовой тип нужно поменять "на дату и время" Теперь хорошо бы понять почему вывод в эксель вызывает ошибку, есть каки-то идеи?
Добрый день! Написал скрипт получения данных из свечного графика РИ и он хорошо работает. Потом создал окно график волатильности на основе доски опционов. И вот с этого графика данные уже не выводятся (пустая таблица). Я уже написал скрипт на луа, но этот вариант мне не понравился, из qpile-таблицы можно выводить сразу по дде, а из луа таблицы вывод в файл, потом заморачиваешься с мастером импорта. Поэтому решил вернуться к варианту с qpile. Предполагаю, что ошибка может быть в строчке:
Пытался price поменять на VOLATILITY, но это ничего не дает. У окна есть идентификатор, может быть в qpile тоже как в луа есть возможность получать данные свечей из подписанного графика? Сейчас пытаюсь получить данные по secClass = "SPBOPT", secCode = "имя опциона"
Anton написал: В лог-то заглядывали сами? Там же ж английским по белому написано, что за ошибка.
Я не разобрался, что там написано. Вы про это? После этого у меня не видит диапазон Я не знаю, что делаю неправильно, т. к. в диспетчере имен виден диапазон, вроде делал по инструкции.
А именно обязательно должны быть настроены: Номер, Дата торгов, Код класса, Операция и их также нужно добавить в базу.
Вообще изначально предполагался вывод таблицы из квик во внешние источники в первозданном виде. Поэтому решил попробовать экспорт в эксель по присланной вами инструкции. Опять возникает ошибка. Создал файл quik_odbc.log. Скачать его можно здесь: https://yadi.sk/d/9Fest1umAOwVAA Можете на основе него дать какие-то рекомендации?
Попутно заметил такую проблему: при запуске вывода данных включаются и сильно грузят процессор (65%) два процесса Windows: Antimalware Service Executable и Изоляция графов аудио устройств Windows. Нажимаю кнопку отключиться проходит некоторое время, звучит сигнал (не пойму квик или винда) и изоляция графов отключается. Всё так запутано, помогите пожалуйста разобраться.
Egor Zaytsev написал: В таком случае и у параметров уберите пробелы.
Поменял в таблице всех сделок и в базе инструмент сокр на инструмент, ничего не поменялось. Допустим в списке параметров выделил время, что нужно выбирать под галочкой "Поле, соответствующее параметру", у меня там инстумент или операция? Я ожидал, что процесс вывода будет похож на дде, но здесь всё так сложно.
Цитата
У меня в таблице вроде есть ключевое поле? Вы пишете: Это таблица сделок?
Ключевое поле - думал это поле в таблице ассесс, где нарисован ключик, нет?
Egor Zaytsev написал: Проверьте возможно используются пробелы в пути к таблицам? Если да, то нужно убрать.
Проверил путь без пробелов, поскольку DSN пользовательский оставил None в разделе System Database. В рекомендациях написано, что также не использовать пробелы в названии полей? А у меня в таблице Access есть поле "Инструмент сокр"
Не очень понятна рекомендация:
Цитата
Если в базе данных используется индексация таблиц по ключевому полю, то для обеспечения уникальности, его следует настраивать по полям QUIK «Номер заявки» и «Код класса».
Egor Zaytsev написал: Если данные не грузятся, как вы пишите, то при экспорте должна быть какая то ошибка, сообщите ее.
Вот такая ошибка А вывод в эксель возможен? Создал файл эксель с именованным диапазоном как в таблице из которой экспортируются данные, внес его в DSN, но в списке доступных таблиц его не видно.
local D = A - B;
if D<0 then Red(Rows,3); end -- Red функция закрашивания ячейки красным цветом
if D>0 then Green(Rows,3); end -- Green функция закрашивания ячейки зеленым цветом
он прекрасно работает, но когда изменил строки так
Код
if D<-100 then Red(Rows,3); end
if D>100 then Green(Rows,3); end
у меня начинают закрашиваться ячейки, в которых -100 < D < 100 чтобы избежать этого пытаюсь использовать дополнительный цвет
Код
if D<-100 then Red(Rows,3); end
if D>100 then Green(Rows,3); end
if (D < 100) and (D > -100) then White(Rows,3); end
Игорь Б написал: Дмитрий, могу лишь предложить свой работающий вариант, от которого можно оттолкнуться.
Код
if string.len (Tl.hour) = = 1 then Tl.hour = "0" .. Tl.hour; end ;
if string.len (Tl.min) = = 1 then Tl.min = "0" .. Tl.min; end ;
if string.len (Tl.sec) = = 1 then Tl.sec = "0" .. Tl.sec; end ;
t = string.format ( "%02d:%02d" , alltrade.datetime.hour, alltrade.datetime.min)
Опечатка была.
тоже работает криво: 17:59 не отобразилось, 18:00 да сработало, а после первой минуты всё осталось по-прежнему интересно а почему не работает преобразование в минуты?
Код
t = string.format ( "%М" , alltrade.datetime.min)
Пробовал добавить ноль через условие, но код вызывает ошибку
Код
If string.len(alltrade.datetime.min)=2 then
t = tostring(alltrade.datetime.hour)..":"..tostring(alltrade.datetime.min);
Else
t = tostring(alltrade.datetime.hour)..":0"..tostring(alltrade.datetime.min);
end
Небольшое уточнение. Файл вида *.laccdb создается при открытии основного файла, типо как резервный и должен пропадать при закрытии целевого файла. У меня он остается и данные в целевой файл не грузятся. Первая строка в целевом файле заполнена нулями, в столбцах с текстовыми значениями пусто. Интересно, если попробовать выгрузить в базу эксель, там нужно создать таблицу с именованными диапазонами или просто выводить как по дде?
Прежде чем обращаться в майкрософт давайте глянем на скриншот. В окне доступные таблицы у меня *.accdb файл. Соответственно когда жму да, у меня по логике туда и должны грузиться данные? Но квик создает на диске *.laccdb файл. Почему квик? Да потому, что когда пытаюсь его удалить, винда пишет мне закройте квик и тогда можно будет удалить *.laccdb файл. Непонятно вывожу в один файл, создается другой.
Добрый день. Создал пользовательский DSN, вывел из квика данные в файл. На диске создался файл с расширением .laccdb но MS Access не может его открыть, вот скрин
Спасибо за ссылку. Драйвер установил. Теперь он виден в панели администрирования на вкладке драйверы. Не совсем понял ремарку про тихую установку (аннотация на английском языке), устанавливал драйвер привычным способом через дабл-клик. Теперь MS Access видна в списке источников данных в окне вывода по ODBC в Квике. Сейчас пытаюсь разобраться почему моей базы нет в списке доступных таблиц. Вот скрин:
Приведите пожалуйста, ссылку или выдержку из руководства, где это описано:
Цитата
Дмитрий написал: Ещё на сайте Майкрософт написано, что если у вас MS Access из пакета "Нажми и работай" надо регистрировать базу данных из ленты в окне программы, в руководстве по квик наоборот написано, что через Панель Управления - Администрирования. Кому верить?
Вот нашел: https://docs.microsoft.com/ru-ru/office/troubleshoot/access/cannot-use-odbc-or-oledb Посмотрите скрин ODBC_DSN.png в ответе выше. Здесь описана такая же ситуация как у меня. И решение пишут: Чтобы обойти эту проблему, создайте DSN в приложении Office, например Access, а не с помощью администратора ODBC. Чтобы создать новое имя источника данных в Access, выполните указанные ниже действия ...
При попытке вывода по ODBC вижу пустое окно там, где нужно выбрать источник данных (пытался создать базу данных). Проблема не такая простая как кажется на первый взгляд. В окне администратор источника базы данных ODBC 64 bit написано напротив MS Access Database: Драйвер этого пользовательского имени DSN не существует (как у вас вставить скрин, не могу показать путь к файлу?). Драйвер не установлен?
Была недавно здесь тема: Вывод по ODBC, там была дана ссылка на майкрософт коммюнити, заходил туда, там дана ссылка на файл, но когда её вводишь пишет типа ошибка 404 файл не найден. Дайте плиз рабочую ссылку!!! Для Виндовс 10 64 бит, ОФИС 2019 версия 16.0.11929.20618 64 бит.
Ещё на сайте Майкрософт написано, что если у вас MS Access из пакета "Нажми и работай" надо регистрировать базу данных из ленты в окне программы, в руководстве по квик наоборот написано, что через Панель Управления - Администрирования. Кому верить?
При создании в БД Имени поля "Инструмент сокр." - эта надпись не вводится из-за точки. Далее, у меня нет типа данных "текстовый", а есть "короткий текст" или "длинный текст". Не понятно что выбрать? Вероятно надо отредактировать файл справки?
Жалко, что на этом форуме нельзя ставить плюсиков) Ну да ладно. Возвращаясь к нашей теме. Не очень понятна фраза:
Цитата
если вы рассчитываете в таком виде в квиковские функции передавать
В смысле передавать вовне? Моя цель получить некие параметры по TICER = RIM0 из таблицы всех сделок, произвести над ними арифметические операции и результат вывести в таблицу созданную средствами луа.