s_mike@rambler.ru пишет: for k,v in pairs(t2) do t1[k] = v end
А разве при этом по меньшей мере часть элементов массива t1 не будет затерта значениями элементов из массива t2? Или диапазон индексов k, возвращаемый функцией pairs, для каждого массива всегда уникален?
Задача поставлена расплывчато. Функция table.or - это для ассоциативных таблиц. Для целочисленных матриц надо написать иначе, но как именно - это после конкретизации, что именно требуется
Серж пишет: Есть в Lua функция объединения массивов? Чтобы из двух массивов
Код
t1 = {4, 5, 6}
t2 = {1, 2, 3, 6, 7, 8}
получить один:
Код
t = {1, 2, 3, 4, 5, 6, 7, 8}
?
вариантов море.
можно просто добавить поля из t2 в t1
function table.or(t1,t2) for k,v in pairs(t2) do t1[k] = v end return t1 end если исходные массивы портить не надо, тогда
table.or( table.or( {},t1 ),t2)
если речь идет именно о матрицах целочисленными индексами, тогда несколько сложнее, но ненамного. Если обрисуете точнее задачу, зачем вам это нужно, наверняка решение будет простейшим.
Сергей, с появлением открепляющихся окон у меня возникла проблема с определением их текущего положения. Я вам и написал, что getwindowpos (getposition) в частности не поддерживают новые возможности по работе с дисплеями.
Все остальное - это топтания в темной комнате. С моей стороны это были попытки понять, как устроен ваш механизм, с вашей - что у меня не получается.
В результате оказалось, что проблема действительно существует, хотя это "правильное поведение".
Регистрируйте пожелание, чтобы определение координат окна все-таки было верным, а не "правильным" ))
До сих пор в ваших вопросах фигурировало понятие "заявки". Под этим термином подразумеваются заявки, выставленные вами. Соответственно, ответы были даны в этой системе координат.
Понятие "все заявки" (обезличенные заявки, выставляемые другими трейдерами) по аналогии с обезличенными сделками, в терминале не присутствует в принципе: такой информации не существует.
Есть лишь стакан и транслируемые биржей данные о количестве по лучшей цене, общем количестве на покупку и т.п.
Ни в какой. Их просто нет в терминале. Поэтому нужно в процессе работы постоянно сохранять эти данные самому. На бумажку, в файл, в эксель, в шмоксель - куда желается.
Но, если ни в какой таблице Quika нет этих данных, насколько я понял, я даже визуально не могу увидеть даже в процессе торгов все выставленные заявки, каким образом, откуда, комманды Lua будут брать эти данные ? Больше, чем есть в самом Quike данных ведь ниоткуда не взять. ? Или все такие что то не поимаю ?
Давайте я процитирую сам себя (дожился):
"нужно в процессе работы постоянно сохранять эти данные самому. На бумажку, в файл, в эксель, в шмоксель - куда желается."
То есть сохранять сведения о заявках (или сделках) в процессе работы терминала (реальном времени) самому куда-то.
1)Если заявки в терминале присутствуют только за текущий день, то данные даже за прошлый день не получить ?
Из терминала - в общем случае нет, не получить.
2. Если вышенаписанное правильно и данные за прошедшие дни не получить, то отсается собирать статистику с нуля от данной точки отсчета. Но я не совсем понимаю, в каком виде, в какой таблице хранятся эти данные ? Как их экспортировать в Ексель ?
Ни в какой. Их просто нет в терминале. Поэтому нужно в процессе работы постоянно сохранять эти данные самому. На бумажку, в файл, в эксель, в шмоксель - куда желается.
3 Ексель достаточно удобная программа, поэтому там легко можно обробатывать данные, по крайней мере легче, чем написать скрипт на Lua, уж лучше на VBA
Но он почему то выдает сообщение: Attempt to call global 'SetValue' (a nil value). Подскажите пожалуйста, что я делаю не так или дате пожалуйста ссылку на инструкция по созданию индикаторов или пример простого индикатора?
Обновите квик. В вашей версии еще нет этой функции
Владислав Бахарев пишет: Добрый день! Скажите, возможно ли наложить скользящие средние к примеру на график газпром часовик, чтобы данные по которым расчитываются мувинги были данные дневки газпрома? Думаю вопрос понятен) Спасибо!
Можно, несмотря на все написанное вам ранее.
Таймфрейм графика должен быть ниже чем таймфрейм, на котором рассчитывается индикатор.
Конечно, индикатор нужно писать специальный. Штатными обойтись не получится.
Судя по всему - штука хорошая и именно то, что мне нужно. Только вот я не могу проверить ее безопасность. Если она что-то делает "недокументированное", то отвечать за подобное буду я сам. Поэтому, хотелось бы этого же, но от разработчика.
Александр пишет: Т.е. такие будильники звуковые, которые можно ставить на графиках? Т.е., допустим, ожидаю цену по инструменту N-рублей и ставлю ее в алерт (например 2 - минимум и максимум ожидаемый). Как только цена достигла уровня - срабатывает звуковой сигнал
s_mike@rambler.ru пишет: Я не могу представить, с какой целью может понадобиться окно на экране, оставшееся после завершения скрипта.
А это зависит от цели создания окна. Скрипт, например, может выполнять разовую (т.е., без цикла в main) работу длительного характера с выводом результатов работы на экран.
В этом случае нет проблем по окончании этой разовой работы вставить sleep(1e10), если окно нужно держать открытым.
Michael Bulychev пишет: Чтоб бы избежать такого придется закрывать все окна созданные скриптом после его остановки.
Михаил.
Любой пользователь и любой программист привыкли, что при прерывании выполнения программы windows сама уничтожает (по возможности) все окна и прочие хвосты, созданные этой программой. Соответственно, логично перенести этот механизм и на машину qlua.
Я не могу представить, с какой целью может понадобиться окно на экране, оставшееся после завершения скрипта. Нет хозяина - не должно быть и окон, локированных файлов и всего остального.
Особенность работы колбеков от окошек скрипта. Последовательность действий.
Пишем скрипт, который открывает окно, назначает колбеки и после этого делает некоррекную операцию, типа индексирует значение nil
Запускаем. Скрипт отрисовывает на экране окно и падает. Как и планировалось.
Окно остается на экране. (само по себе не гуд)
Убираем ошибку в скрипте, запускаем скрипт снова
Теперь на экране 2 одинаковых окна
Пробуем закрыть "мертвое" окно, оставшееся от первого запуска скрипта (или какое-то другое действие с ним)
В скрипте, который работает (в котором нет ошибки) мы получаем колбек от "мертвого" окна, не являющегося собственностью скрипта.
Добрый день. Михаил, дайте скрипт на котором тестировали.
Михаил, здравствуйте.
Собственно, тестирование settablenotif я не занимался, поэтому тестового скрипта, как такового, нет. При построении очередного робота я обратил внимание на лишние колбеки, которые портили логику. Я отлогировал результаты оконного колбекв и увидел (по id), что они приходят от "мертвого" окна.
В частности, приходит event24 при его закрытии.
Если очень нужно, написать скрипт, которые иллюстрирует проблему, несложно. Думаю, у вас это займет ничуть не больше времени, чем у меня.
Серж пишет: Есть некоторая числовая переменная value и условие filter, заданное строкой, например:
Код
local value, filter = 5, " > 3"
Нужно вывести результат применения условия к переменной, как-то так:
Код
print(5 > 3)
-- Вычисление выражения из строки -- Возвращает вычисленное значение либо nil при ошибке function string.calculate(str) local status,result = pcall(loadstring("return " .. str)) if status then return result end end
С какого момента происходит изменение параметра количества открытых позиций?, С какого момента происходит изменение параметра количества открытых позиций?
Андрей Белоусов пишет: Уточняю. Например : в 10:05:00 была совершена сделка 10 лотов кто то купил (новая заявка) и 10 лотов кто то продал(новая заявка). Когда появится увеличение количества открытых позиций на 10 единиц? В 10:05:01? можно ли отследить этот момент?например по номеру тика (у него(тика) есть уникальный индентификатор )? по времени? Я знаю что данные формируются пакетом и передаются не сразу, но что то слышал, что у вас теперь где то расчеты в миллисекундах, и как их можно получить(настроить)?
Андрей. Исходить надо из того, что эти данные терминал вам отдаст (или покажет) с некоторой задержкой и тогда, когда ему это будет удобно. Какая-либо синхронизация в данном вопросе не существует.
нет разницы где это делать - в скрипте на Lua или в qlua.dll.
это для Вас, Михаил, нет разницы, а нам, как трейдерам - это принципиально. Нам весь этот "мусор" с метатаблицами в программах абсолютно не нужен. поэтому. имеет очень большой смысл спрятать вам от нас его в своей qlua.dll вместе с реализацией других методов.
Я позволю себе встрять и высказать своё мнение.
Чем более низкоуровневые средства мне доступны, тем больше возможностей для меня сделать на их основе собственные абстракции. Удобные, понятные и приятные именно мне.
Совершенно необязательно, что мне нравится тот стиль, который кажется правильным Михаилу Булычеву или sam063rus.
Поэтому я никак не приветствую навязывание мне каких-то готовых классов с неизбежными ограничениями: на qpile мы уже писали.
Касаемо метатаблиц. Нам (мне) мусор с метатаблицами очень нужен.
1. Формат dd.mm.yyyy заменяете на (%d%d)%p(%d%d)%p(%d%d%d%d) 2. применяете к строке даты функцию string.match по маске выше. Получаете 3 строки. 3. складываете эти 3 полученные строчки как вам нужно