Anton написал: Нда. Там так дальше и идет, каждый i имеет свой отдельный блок? А зачем тогда цикл по SecCode, спрашивается. Ну как-то так я имел в виду, работоспособность не гарантирую, чисто пример
Все сортирует замечательно) Только один раз, за несколько секунд заполняет несколько строк в таблице, и индикатор выключается и выдает вот такую ошибку
indicat.lua:65: bad argument #1 to 'insert' (table expected, got nil)
function main() CreateTable() SecCode= {...} local tbl = {} ------------похоже я тут что то не дописал?
ValueImp=10 local Run= "YES" while Run== "YES" do
for i,s in pairs(SecCode) do . . . end
table.sort(tbl, function(lhs, rhs) return (lhs.x < rhs.x) end) for i,r in pairs(tbl) do local idx = InsertRow(t_id, -1) SetCell(t_id, idx, 0, tostring(r.direction)) SetCell(t_id, idx, 1, tostring(r.name)) SetCell(t_id, idx, 2, tostring(r.x)) end tbl = nil end end
function main() SecCode= {....} local Run = "Yes" while Run == "Yes" do
for i=1, #SecCode do
if i==1 then
if X>100 then InsertRow(t_id, i) SetCell(t_id, i, 0,"SHORT") SetCell(t_id, i, 1,tostring(NAME)) SetCell(t_id, i, 2,tostring(X)) end if Y>100 InsertRow(t_id, i) SetCell(t_id, i, 0,"LONG") SetCell(t_id, i, 1,tostring(NAME)) SetCell(t_id, i, 2,tostring(X)) end end
if i==2 then .. .. end В общем получается вот так, что строчка добавляется в таблицу только когда выполняется условие, что куда переставить чтоб не сломать что уже работает я не понял если честно) не работает тут только сортировка корректно..
Нашел как сортируется полученная таблица(кликать по заголовку столбца с зажатым CTRL или SHIFT) , но почему-то сортировка происходит некорректно(( if X>100 then InsertRow(t_id, i) SetCell(t_id, i, 0,"SHORT") SetCell(t_id, i, 1,tostring(NAME)) SetCell(t_id, i, 2,tostring(X)) Вроде бы все правильно, i = от 1 до количества инструментов. Не знаю что сделать чтобы правильно сортировался последний столбец
Nikita написал: а вот сортировки от меньшего к большему значению нет, или я чего-то не вижу?
Да вроде как ее и нет. Но можно разложить строки из скрипта в любом желаемом порядке
Вот вроде бы в руководстве по QLUA пишут "Если параметр «value» не задан для ячеек всех остальных типов, то по столбцам, содержащим такие ячейки, не будет корректно работать сортировка, фильтрация и условное форматирование (см. Приложение 2)." вроде бы упоминается сортировка...
Nikita написал: ( в итоге не видит то что переменная стала равна 1 почему то)
Потому что CreateTable закончилась до того, как присвоили 1 условию, т.е. переменная и не стала равна 1, поэтому и видеть нечего.
Цитата
Nikita написал: (тут еще загвоздка как установить в ячейку значение Х из верхней части кода)
Вытащите это из CreateTable, создайте пустую таблицу в этой функции и все. Дальше вставьте код из первого варианта, только вместо message используйте InsertRow/SetCell в свою таблицу. Когда таблица будет готова, сделайте вечный цикл до нажатия "остановить" или закрытия квика. Перед выходом из main прибейте свое окно.
Спасибо) Все подкрутил) но вот то что хотел сделать с таблицей похоже нельзя( фильтр в ней есть, а вот сортировки от меньшего к большему значению нет, или я чего-то не вижу?
Имеется индикатор, в первую минуту торгов выдает данные (тикер и число) по какому либо инструменту при выполнении условия, данные выдаются в сообщении при этом если выполнилось условие сразу по нескольким инструментам, то выдается несколько сообщений подряд за пару секунд при большой волатильности, и приходится пролистывать их обратно чтобы увидеть предыдущие, есть ли вариант выводить эту информацию ввиде таблицы или хотя бы списка который бы просто пополнялся инструментами у которых выполнено условие, чтобы все данные были перед глазами? Ниже основная часть кода.
Здравствуйте, вопрос по параметру VALTODAY, Сделал вот так ds=CreateDataSource ("SPBFUT", SecCode[i], INTERVAL_D1,"VALTODAY") if i==1 then local s=ds:Size() local VAL=tostring(ds:VALTODAY(s)) (по аналогии с ds:H(s) к примеру для HiGH) но видится мне что так делать нельзя Знаю что можно получиться значение параметра вот так VAL = tostring(getParamEx("SPBFUT", SecCode[i],"VALTODAY").param_image) Но мне нужно чтобы был доступ к значению за предыдущие дни, есть ли такая возможность? Вроде бы в CreateDataSource можно использовать параметры такие как "last" , это из справки пример ds1 = CreateDataSource("SPBFUT", "RIU3", INTERVAL_M1, "last"), но помимо last в списке возможных параметров, используемых в функции CreateDataSource() есть VALTODAY, а вот как его получить через CreateDataSource не понятно
Нашел на сайте Мосбиржи эту таблицу ввиде файла PriceMoveLimit.dbf может быть есть возможность добавить информацию из этого файла в квик вручную чтобы заполнить пробелы в таблице или просто открыть в блокноте))?
function main() Code={"a1","a2", ..} local R = "No" while R== "No" do
for i=1, #Code do
if i==1 then
if x==y then message("aaa"..b) end
end
if i==2 then
if x==y then message("aaa"..b) end
end
end end end
Возникла проблема с реализацией идеи, всю голову сломал, не могу понять как сделать так чтобы после выполнения условия if x==y при каком-то из значений i, сообщение выдавалось 1 раз, а после этот оператор (if i==1 или if i==2) заново начинал действовать только с новой минуты. Такое можно было сделать в metaeditor в мт4, там были статические переменные, а тут их насколько я понял нет(
Здравствуйте, не стал создавать отдельную тему, т.к. вопрос почти о том же, ds:Size() равен 0 (не замечал во сколько это началось) скрипт работал ранее после 19-00 мск, но я его кардинально переписал и ds:Size() все время выдает 0. Вопрос, это будет до закрытия вечерней сессии?[если да, то как тогда делать возможным работу скрипта во время вечерней сессии в котором необходимо значение ds:Size() ] или я что-то делаю не так?