1 (2019-02-16 22:57:43 отредактировано Владимир =)

Тема: Данные из "нестандартных" таблиц QUIK

Можно ли средствами quik lua вытащить данные из "нестандартных" таблиц терминала (типа таблицы транзакций, таблицы обязательств маркет-мейкера, таблицы сообщений и т.д.). Про часто используемые таблицы (заявки, сделки и т.д.) всё есть, но как выдернуть нужную инфо из остальных?..

Средствами библиотеки w32, например.
Найти нужное окно по заголовку окна - могу найти. Как из него вытащить значение в n-й строке, m колонке?

w32.GetWindowText на хэндле таблицы всегда выдает пустую строку, хотя таблица не пустая.

Спасибо!

2

Re: Данные из "нестандартных" таблиц QUIK

Нет такой возможности, к сожалению.
И w32 тут не поможет.

Только оставлять запросы на добавление функционала на форуме разработчика QUIK, но обещанного, как известно, 7 лет ждут.

Re: Данные из "нестандартных" таблиц QUIK

Жаль конечно, но не до конца понятно, всё же.
Это такие же таблицы, как и все остальные - заявок, сделок и т.д, к одним обращаться можно, к другим - вообще нет никакой технической возможности.

Логично же с помощью луа иметь возможность достать вообще любую дату, что есть в терминале.
А сейчас приходится работать с костылями в виде экспорта по DDE в эксель и обратным засасыванием в луа через просто периодическое чтение файла или luacom. Явно не самый быстрый, удобный и стабильный вариант.

Может есть какие идеи с костылями, чтобы было попроще?

4

Re: Данные из "нестандартных" таблиц QUIK

Если требуемые таблицы экспортируются по DDE - то, думаю, доделать их передачу в Lua квиковцам должно быть не сложно.

5

Re: Данные из "нестандартных" таблиц QUIK

таблицы в quik реализованы в библиотеке qlist.dll, класс multilist. можно добывать данные прямо из них. можно получать данные из dde в lua, сделав в луа свой dde-клиент, это тоже не сложно. запускать экспорт автоматически, посылая нужные сообщения в окна тоже не так уж сложно.

и все это гораздо проще и действеннее, чем что-то просить у разработчиков квика. smile

6 (2019-11-03 02:29:20 отредактировано toxa)

Re: Данные из "нестандартных" таблиц QUIK

swerg пишет:

И w32 тут не поможет.

ну, как сказать. нашел в своих закромах пример.

[удалено]

7 (2019-11-03 02:46:08 отредактировано toxa)

Re: Данные из "нестандартных" таблиц QUIK

вот наваял либу для получения данных из таблиц multilist. проверено, работает с квиком 7.20 и 8.1. пользуйтесь.

вот ссылка: https://www.dropbox.com/s/7efuodbysetlx … t.zip?dl=0

пример скрипта:

package.cpath = getScriptPath() .. "\\lua_multilist.dll"
require "multilist"

function main()
  htable = multilist_find_table("Текущая таблица параметров")
  message("rowcount: " .. tostring(multilist_get_rowcount(htable)), 1)
  message("colcount: " .. tostring(multilist_get_colcount(htable)), 1)
  tmp = ""
  tbl = multilist_get_row(htable, 1)
  for k, v in pairs(tbl) do     
    tmp = tmp .. k .. "=" .. v .. ";  "
  end
  message(tmp, 1)
  message("CELL[1,1] = " .. multilist_get_cell(htable, 1, 1))

  htable = multilist_find_table("Системные сообщения")
  message("hTable = " .. tostring(htable) .. " CELL[4,3] = " .. tostring(multilist_get_cell(htable, 4, 3)))
end

ps: поставляется as is, использовать на свой страх и риск. теоретически, есть небольшая вероятность, что получение данных вклинится в запись данных в таблицу квиком, и тогда мы или можем получить не то значение, или квик запишет не в ту ячейку. но вероятность этого крайне мала. мое дело - предупредить. не знаю пока, можно ли с этим как-то бороться, и вообще, случается ли такое, это чисто теоретическое заключение.

8 (2019-11-03 12:12:18 отредактировано toxa)

Re: Данные из "нестандартных" таблиц QUIK

я тут подумал, можно исправить эту гипотетическую проблему, но не знаю, стоит ли ради этого морочиться (еще одна dll, хук на wndproc основного окна). если кто-то будет этим пользоваться и наткнется - пишите, усложним.