валерий (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
3 бага версии 9.2.3.15, 3 бага версии 9.2.3.15
 
1. Не сохраняется фильтр по времени на графиках при закрытии программы.
2. Для своих индикаторах квик стал привязывать количество знаков которые показывает на графике, к количеству знаков после запятой инструмента, на который наложен индикатор. Какая логика? Если индикатор рассчитывает например какой-то коэффициент, который менше нуля, а у фишки, для которой он рассчитывается, значения целые, то индикатор показывает в значениях только нули.
3. Если нажать на стакане кнопку "снять все активные заявки из окна котировок", то даже при снятой галочке в настройках "запрашивать подтверждение для групповых операций" всё равно запрашивает.
Режим связанных окон: текущие торги --> обезличенные сделки
 
Попробовал по совету техподдержки воспользоваться таким простым и удобным способом настройки фильтрации таблиц с обезличенными сделками.
Упс! Ничего не вышло. Квик 8,7,1,3. Горят красненький якорь и красненькая цепочка. А реакции (связи) никакой.
Может кто подскажет?
Открытие файла и память
 
Вот такой простенький код даёт 1 МБ прироста памяти в час. Некритично, но непонятно почему. Так и должно быть или я что-то делаю не так?
Код
local stopped = false

function OnStop(flag)
    stopped = true
end

function f11()
   local fpath = getScriptPath() .. "\\tos11.log"
   local f = io.open(fpath, "w+")
   f:close()
   f = nil
end

function main()
    while not stopped do
      f11()
      sleep(100)
    end
end
getCandlesByIndex что не так?
 
написал простейший индикатор берущий данные из другой области диаграммы
Код
function RF()
   return function(index)
      if C(index) then
         ind, n, l = getCandlesByIndex (Settings.tag, 0, index - 1, 1)
         return ind[0].close
      end
      return nil
   end
end


Вроде работает. Но. При загрузке квика выдает нули. Чтобы появились данные нужно нажать "применить" или "ОК".
И что еще хуже, просто на глаз видно, что индикатор запаздывает причем до нескольких секунд.
Что-то у меня не так или так и задумано?
Синхронизация 2 графиков
 
Если два графика расположены в двух областях одной диаграммы, то нужно ли бары обязательно синхронизировать по времени баров или можно быть уверенным, что если индексы совпадают, то и время тоже?
Проблема с DELETE_ALL_ITEMS()
 
У меня портфель делает некий расчет и выводит в таблицу, используя функцию:

Код
' Функция заполнить таблицу
' -----------------------------
FUNC FILL_TBL()
   val1 = bar_time
   val2 = signal_pos
   val3 = current_pos
   val4 = buy_quantity
   val5 = sell_quantity
   val6 = trans_id
   val7 = pos_bal
   val8 = status

   map1=create_map()[IMG]c:\Users\ВГ\Pictures\portf.JPG[/IMG]
   map1=SET_VALUE(map1,"val1",val1)
   map1=SET_VALUE(map1,"val2",val2)
   map1=SET_VALUE(map1,"val3",val3)
   map1=SET_VALUE(map1,"val4",val4)
   map1=SET_VALUE(map1,"val5",val5)
   map1=SET_VALUE(map1,"val6",val6)
   map1=SET_VALUE(map1,"val7",val7)
   map1=SET_VALUE(map1,"val8",val8)

   DELETE_ALL_ITEMS()
   add_item(1,map1)
   BGC = "DEFAULT_COLOR"
   FC = "DEFAULT_COLOR"
   if error <> 0 or check_deal >= 10 or check_frun <> 0
      BGC = "RGB(250,200,150)"
   end if
   if status = "STOP"
      BGC = "RGB(250,150,150)"
   end if
   if trade_on_of = "0"
      FC = "RGB(50,200,50)"
   end if
   SET_ROW_COLOR_EX(1, BGC, "DEFAULT_COLOR", FC, "DEFAULT_COLOR")
   tt = t_time(0)
   WRITELN(logfile_path, signal_pos  & "," & current_pos  & "," & pos_bal  & "," & buy_quantity  & "," & sell_quantity  & "," & last_price  & "," & last_time  & "," & best_bid  & "," & best_offer  & "," & status)
   WRITELN(logfile_path, "END"  & "," & tt)

END FUNC


То есть при каждом расчете удаляет строки и пишет ровно 1 строку.
Все работало много лет. Но месяц другой назад он вдруг не с того, не с сего начинает добавлять строки не удаляя. Причем как-то хаотично, не в такт с периодом расчета, с пропусками и по две строки. Причем нумерация строк плывет. Образец в приложении.

Сначала это происходило иногда и где-то под конец вечерки. Но сегодня уже под конец основной. Хотелось бы понять, что делать.

Квик 6.14.0.12 Финам. И что любопытно точно такой же портфель нормально работает в БКС 6.16.1.15 и 7.2.1.5.
код ошибки 1381
 
Невозможно создать график - код ошибки 1381
Что значит и почему невозможно?
Заявка -> Сообщение
 
Посылаю заявку в скрипте луа sendTransaction, квик выдает сообщение "Заявка 25109199245 успешно зарегистрирована." Но я не прошу мне сообщать. И в купайле sendTransaction все делает тихо. В чем фишка?
Почему нил?
 
Код
nn0 = string.gsub(getInfoParam ("SERVERTIME"), ":", "")
nn1 = tonumber(nn0)
nn2 = tonumber(string.gsub(getInfoParam ("SERVERTIME"), ":", ""))
message(type(nn0).." ".. type(nn1).." ".. type(nn2))


--> string number nil
Формат данных в таблице луа
 
Ширину понятно как установить. А как вывести целое число с двумя, например знаками? Или строки выровнить в право, а не влево?
SetRangeValue
 
Замечательная казалось бы функция, позволяющая вставлять точки гуртом, а не по одиночке.
SetRangeValue(1, index-range, index-1, nil)
Но она принимает только скаляр, то есть нарисовать можно только горизонтальную линию или все стереть.
И кстати почему с помощью SetRangeValue и SetValue нельзя поставить значение на последней свечке? В чем смысл такого ограничения?
Sleep в индикаторе
 
Такое впечатление, что если повесить много даже простых индикаторов, квик начинает подтормаживать. Как часто рассчитываются индикаторы? На каждом тике?
Как можно ограничить частоту расчета? Куда бы можно было вставить слип? Не очень понятно.
dofile
 
Использую dofile для постоянной подгрузки данных в виде таблицы из текстового файла типа:
qq={113.00,113.00,-0.99,-1.03,-0.79,-0.93,-0.66,-0.84,}
Подлиннее конечно.
Но раз в минут 15-20, луа сообщает об ошибке: " '}' expected near '<eof>' ". Похоже он обращается к еще не закрытому и недописанному файлу. Некритично, так как продолжает работать, но неприятно.
Может что посоветуете?
Последний индекс
 
Как узнать что индекс в OnCalculate(index) является последним?
Матлаб из Клуа
 
С Амиброкером не вышло, а вот с Матлабом похоже выходит:

Код
--require "w32" -- говорят что нужна, на практике не увидел
require "luacom"
local isrun = true

function OnStop(flag)
    isrun = false
end
function main()
--w32.CoInitialize(nil)

ML = luacom.CreateObject("matlab.application.single")
assert(ML)
ML.Visible = 1 -- не обязательно там все равно ничего в принципе не видно, но проще убить процесс если что

t = tos(0)
message("tos = " .. tostring(#t)) -- меньше 150 тк фильтр по "SPBFUT"

ML:PutWorkspaceData("C1", "base", t); -- отправляем в МЛ под именем С1
message("Put")
wd = ML:GetWorkspaceData('C1', 'base') -- а вот так получаем обратно
message("C1(1,1) = " .. tostring(wd[1][1]))
ML:Execute("r = TST;") -- в МЛ у меня эта функция пишет данные в файл и возвращает "1", если все гладко
r = ML:GetWorkspaceData('r', 'base') -- на прямую результат возвращает криво, так наверно удобнее
message("Execute TST = " .. tostring(r))

ML:Quit()
ML = nil
--w32.CoUninitialize(nil)
message("end COM ML")
end

function tos(n) -- читает ТОС  в матрицу начиная с "n"
   local outcell = {}
   local cnt = 0
   nn = getNumberOf("all_trades")
   for i = n, 150 do -- для примера хватит 150 строчек, но максимум 1500 * 5
                                 -- приходится ограничить - у LuaVM случается грыжа при передаче в МЛ более чем 2000*5
      trade = getItem("all_trades", i)
      cc = trade["class_code"]
      if cc == "SPBFUT" then
         cnt = cnt + 1
         dt = trade["datetime"]
         dt = dt.hour*10000 + dt.min*100 + dt.sec
         outcell[cnt] = {trade.trade_num, trade.sec_code, trade.qty, trade.price, dt}
      end
   end
   return outcell
end
Amibroker из Клуа
 
Пытался подключиться к Ами
Код
require "luacom"
ami = luacom.CreateObject("Broker.Application")
ami.Visible = true
aa = ami:LoadDatabase("D:\\PF\\AmiBroker\\DB\\trade")
Работает. Но дальше облом...
Код
qq = ami:Import(0, "c:\\valg\\rt.txt")
Ошибки не выдает, но и ничего не делает (в логах импорта Ами просто пусто).
Код
st = ami.Stocks:Add("RTSI")
Ошибка - attempt to index field 'Stocks' (a function value)

Может кто что подскажет? :what:
Глюк БКС
 
Таблица Позиции по счетам Вар. маржа обнулена. В таблице параметров все нормально, а при обращении из купайла Пред. оценка, шаг цены и его стоимость обнулены.
позиции по фьючам
 
Раньше в таблице позиции по фьчам в столбце стоимость позиции после дневного клиринга показывалась вариационка дообеденная, а сейчас нули?
Страницы: 1
Наверх