Предложения касаются дополнений к программному интерфейсу QLUA.
1)
Реализовать функцию, создающую окно ввода новых заявок. В функцию в качестве параметра должна передаваться таблица, аналогичная таблице, передаваемой в качестве параметра в функцию sendTransaction(). Таким образом можно будет в скрипте заранее заполнить нужные параметры.
Справка по функции:
Функция предназначена для Открытия окна ввода новой заявки.
Формат вызова:
Код |
---|
NUMBER openNewOrderWindow(TABLE transaction) |
Функция возвращает 1, если пользователь нажал "ОК", 0 - в ином случае
Параметр transaction - таблица, аналогичная по составу таблице, передаваемой в функцию sendTransaction().
Пример:
Код |
---|
openNewOrderWindow ({ ["CLIENT_CODE"]="777777", ["ACCOUNT"]="MB0007777777", ["EXECUTION_CONDITION"]="PUT_IN_QUEUE" ["TRANS_ID"]="777777" ["CLASSCODE"]="CETS" ["SECCODE"]="USD000UTSTOM" ["ACTION"]="NEW_ORDER" ["OPERATION"]="B" ["TYPE"]="L" ["PRICE"]="63.3000" ["QUANTITY"]="12"}) |
2)
Реализовать возможность добавления пользовательского пункта меню в контекстное меню каждого вида стандартных таблиц QUIK. При выборе пользователем этого пункта меню должен вызывается callback в пользовательском скрипте, в который должно передаваться имя класса окна (например, “quotes”, ”trades” и т.п.), идентификатор пользовательского пункта меню и таблица, содержащая значения текущей строки стандартной таблицы интерфейса QUIK. Регистрация callback пользовательского скрипта может производиться одновременно с регистрацией в QUIK параметров пункта меню.
Пример:
Где-то в коде инициализации:
Код |
---|
registerUserMenuItem("quotes", "Создать заявку и стоп заявку", USER_MAKE_ORDER_AND_STOP_ORDER, UserMenuItemCallback) |
В результате вызова этой функции в контекстное меню всех таблиц котировок должен добавиться пункт меню "Создать заявку и стоп-заявку". При выборе пользователем этого пункта меню должен вызваться callback:
Код |
---|
function UserMenuItemCallback(table_class, menu_item_id, table_line) if (table_class == "quotes") then if (menu_item_id == USER_MAKE_ORDER_AND_STOP_ORDER) then trans1 = PrepareOrderTransaction(table_line) --подготовить данные для заявки trans2 = PrepareOrderTransaction(table_line) --подготовить данные для заявки ProcessOrders({trans1, trans2}) elseif (menu_menu_item_id == USER_ANOTHER_FUNCTION) then --сделать ещё что-нибудь полезное else message("Не реализовано") end elseif (table_class == "orders") then --что-то сделать на радость всем endend |
Примерные прототипы функций:
Код |
---|
NUMBER registerUserMenuItem(STRING table_class, STRING menu_item_text, NUMBER menu_item_id, FUNCTION callback)UserMenuItemCallback(STRING table_class, NUMBER menu_item_id, TABLE table_line) |
Реализация этих двух пунктов позволит существенно разнообразить возможности и увеличить гибкость пользовательского интерфейса QUIK с помощью скриптов QLUA.