ZdenniZ (Все сообщения пользователя)

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

Страницы: 1
Работа с экранной таблицей - нужна помощь
 
Спасибо, все так и сделал, все работает )). Теперь вот задался вопросом, можно ли по клику на строку в этой экранной таблице открывать окно квика "покупка/продажа", передав в него необходимый тикер? Я понимаю, что есть функционал подачи заявок программно, и так впоследствии и сделаю, но пока хочу научиться работать с мышиными евентами. Нигде пока нужной информации не нашел...
Работа с экранной таблицей - нужна помощь
 
Все получилось в версии скрипта ниже, оказалось проще, чем я думал. Едем дальше )). Единственное, с учебным квиком 8.2.1.13 какая-то ерунда, если оставить эту табличку на экране на некоторое время, квик начинает глючить и помогает только его полный перезапуск...
Код
IsRun = true
class_code="QJSIM"
 
function main()
   t_id = AllocTable()  
     
   AddColumn(t_id, 1, "Оборот",       true, QTABLE_STRING_TYPE, 20)
   AddColumn(t_id, 2, "Бумага", true, QTABLE_DOUBLE_TYPE,   14)
   t = CreateWindow(t_id)
         
  local seclist = {}
  local valtod = {}
  local secstring = ""
  local iRowInOutTable = 1
  local list = {}
  local val = 0
  local sorttable = {}
  local i=1  
  
 --list = getClassesList()
 --message(list)
  seclist = getClassSecurities(class_code)
 
 mt = {}

  for SecCode in string.gmatch(seclist, "([^,]+)") do

  --InsertRow(t_id, 1)
 
 valtod = getParamEx(class_code, SecCode, "VALTODAY").param_value
  seccode = SecCode
  val = tonumber(valtod)
   mt[i] = {}     -- create a new row
      mt[i][1] = val
      mt[i][2] = seccode
  i=i+1
   end

table.sort(mt, function(a,b) return a[1] > b[1] end) 
for i=1, 32, 1 do
InsertRow(t_id, 1)
SetCell(t_id, iRowInOutTable, 1,  tostring(math_round(mt[i][1])), 1)
SetCell(t_id, iRowInOutTable, 2, mt[i][2], 0)  
  end
   
message(mt[1][1])
end

function math_round (num, idp)
   local mult = 10^(idp or 0)
   return math.floor(num * mult + 0.5) / mult  
end
Работа с экранной таблицей - нужна помощь
 
Цитата
Anton написал:
Цитата
ZdenniZ написал:
по какому критерию он ликвиды выбирает
В этом вся и суть. Если отбирать "тупо по обороту", на дистанции выдавливается максимум 8% без проскальзываний, комиссий и налогов, плюс просадочки нерадостные, лучше в банк отнести и не париться.
Мне кажется проблема его системы в неиспользовании трейлинг стопа, он все время в убыток уходит, когда по стопу продает. Я хочу посмотреть что будет с трейлинг-стопом.

А насчет мучения, код сортировки нормально не могу написать, может подскажете? )
Работа с экранной таблицей - нужна помощь
 
Цитата
Anton написал:
А зачем вы вообще в экранную таблицу это все пихаете? Сразу в массив, сортировка, потом выбираете свои 32 бумаги и уже их на экран.

PS. Ежли кодите чудодейственную систему со смартлабика с ежедневными скринами, держите спойлер: фигня эта система. Попробуйте выяснить у аффтара, как у него мосэнерго в наиболее ликвидные попало.

Пробовал выяснить по какому критерию он ликвиды выбирает, молчит )). Экранная таблица - это так, для наглядности. В массив уже все запихал, теперь вот мучаюсь с сортировкой этого массива )).
Работа с экранной таблицей - нужна помощь
 
Всем привет. Я в квике и в луа новичок, но твердо решил разобраться и написать несколько скриптов. Начать решил со скрипта, который из всех торгующихся бумаг выбирает наиболее ликвидные. На данный момент пока получилось только вытащить в экранную таблицу все бумаги и их текущий оборот (VALTODAY), скрипт ниже. Теперь мне необходимо отсортировать полученную таблицу программно по полю "Оборот" от наибольшего значения к наименьшему и выбрать оттуда первые 32 бумаги (т.е. наиболее ликвидные). Как реализовать эту сортировку - ума не приложу. Читал, что нужно сделать отдельную таблицу в виде массива и его уже сортировать через table.sort, но как опросить эту экранную таблицу тоже непонятно и в хелпе ничего такого не нашел... Помогите пожалуйста )).
Код
IsRun = true
class_code="QJSIM"
 
function main()

      t_id = AllocTable()  
     
   AddColumn(t_id, 1, "Бумага",       true, QTABLE_STRING_TYPE, 20)
   AddColumn(t_id, 2, "Оборот", true, QTABLE_DOUBLE_TYPE,   14)
   t = CreateWindow(t_id)
 
        
  local seclist = {}
  local valtod = {}
  local secstring = ""
  local iRowInOutTable = 1
  local list = {}
  local val = 0
  local sorttable = {}
  
 --list = getClassesList()
 --message(list)
  seclist = getClassSecurities(class_code)
   
  for SecCode in string.gmatch(seclist, "([^,]+)") do
  i=1
  InsertRow(t_id, i)
 valtod = getParamEx(class_code, SecCode, "VALTODAY").param_value
  seccode = SecCode
  val = tonumber(valtod)
  --message(tostring(val))
   SetCell(t_id, iRowInOutTable, 1, seccode)
   SetCell(t_id, iRowInOutTable, 2, tostring(math_round(val, 0) ) )
   i=i+1
 
  end
end

function math_round (num, idp)
   local mult = 10^(idp or 0)
   return math.floor(num * mult + 0.5) / mult  
end

end
Страницы: 1
Наверх