стр. 1
(из 13 стр.)

ОГЛАВЛЕНИЕ

Следующая >>

Раздел 7. Алгоритмический язык QPILE
7.1 Общие положения 223
7.2 Работа с таблицами QPILE 225
7.3 Структура файла программы 229
7.4 Конструкции языка QPILE 231
7.5 Общие функции 237
7.6 Математические функции 238
7.7 Функции для работы с коллекциями объектов (COLLECTION) 240
7.8 Функции для работы с ассоциативными массивами (MAP) 241
7.9 Функции для обращения к строкам произвольных таблиц QUIK 242
7.10 Функции для обращения к спискам доступных параметров 251
7.11 Функции для работы с программируемой таблицей 252
7.12 Функции для получения значений Таблицы текущих значений параметров 254
7.13 Функции для получения значений Таблицы лимитов по бумагам 256
7.14 Функции для получения значений Таблицы лимитов по денежным средствам 258
7.15 Функции расчета маржинальных позиций 260
7.16 Функции получения значений таблиц «Клиентский портфель» и «Купить/Продать» 261
7.17 Функции для работы с файлами 263
7.18 Функции для работы с заявками 264
7.19 Сервисные функции 264
ПРИЛОЖЕНИЕ1. Синтаксис команд языка QPILE 266
ПРИЛОЖЕНИЕ2. Рекомендации к составлению программ на QPILE 267

Раздел описывает применение алгоритмического языка QPILE, встроенного в рабочее место системы QUIK. В начале раздела рассматривается базовый функционал клиентского места, предназначенный для работы с программируемыми таблицами. Для пользователей, заинтересованных в разработке собственных программ в документации приводится описание конструкций языка QPILE и встроенных функций языка, а также пример реализации - расчет показателей маржинального кредитования по методике ФКЦБ.
Общие положения
Назначение
Язык QPILE (QUIK Programmable Interface and Logic Environment) представляет собой набор команд, интерпретируемых рабочим местом QUIK.
Областью применения QPILE является создание новых таблиц для расчета в режиме реального времени собственных показателей на основе информации из других таблиц.
Данный функционал удобен, прежде всего, для брокера, так как у каждого брокера существует своя собственная стратегия расчета показателей клиентской позиции. Применение встроенного языка позволяет реализовать практически любой алгоритм.
Примеры использования QPILE:
Динамический пересчет стоимости активов клиентов на рабочем месте брокера.
Динамический пересчет стоимости активов в портфеле клиента и его суммарной стоимости.
Вычисление показателей, отсутствующих в системе QUIK либо торговой системе биржи, на основе собственных алгоритмов.
Расчет параметров маржинального кредитования в соответствии с принятыми нормативами.
Программирование торговой стратегии, генерирующей сигналы на изменение позиций по инструментам.
Основной областью применения языка QPILE является расчет стоимости портфелей ценных бумаг, поэтому в терминологии описания типов таблиц часто используется определение «Портфели».
Как работает QPILE
Структура таблицы (назначение столбцов, строк, и формулы для вычисления параметров) описывается в виде программы на языке QPILE. Для вычисления в формулах можно использовать стандартные математические и логические операции, использовать переменные и массивы данных, запрашивать информацию из других таблиц системы QUIK.
Код программы может быть получен с сервера QUIK (серверный) или загружен с диска на компьютере пользователя (локальный). Полученный код обрабатывается интерпретатором языка QPILE на рабочем месте QUIK, который производит пересчет значений в формулах с заданной периодичностью. Таким образом формируется внутренний источник данных для отображения полученных значений в таблицах. Несколько таблиц на основе одной и той же программы используют общий источник данных, при этом вычисления не будут дублироваться и снижать производительность системы.
На основе программы можно создавать таблицы, обладающие стандартными функциями при работе с таблицами в системе QUIK.
Основные возможности
Основные функции языка QPILE:
Описание новых таблиц произвольной структуры,
Вычисление полей таблиц на основе математических формул и логических выражений,
Выделение ячеек таблицы цветом в зависимости от значений какого-либо показателя,
Уведомление пользователя звуковым сигналом и текстовыми сообщениями.
Таблица на языке QPILE поддерживает основные действия с таблицами в системе QUIK:
Редактирование, в том числе выбор параметров для отображения и настройку их очередности,
Управление «горячими клавишами»,
Размещение на «экранных закладках»,
Поиск значения в ячейках таблицы,
Печать таблицы с предварительным просмотром,
Копирование данных в Буфер Обмена Windows (Clipboard),
Экспорт данных в Excel,
Экспорт данных по ODBC.
В качестве исходных данных для расчетов параметров таблиц может использоваться информация из следующих типов таблиц QUIK:

Таблица


Таблица
1.
Таблица текущих значений параметров

9.
Ограничения по клиентским счетам
2.
Таблица всех сделок

10.
Таблица заявок на внебиржевые сделки
3.
Таблица заявок

11.
Таблица сделок для исполнения
4.
Таблица стоп-заявок

12.
Таблица заявок-отчетов на сделки РПС
5.
Таблица сделок

13.
Таблица "Клиентский портфель"
6.
Таблица лимитов по бумагам

14.
Таблица «Купить/Продать»
7.
Таблица лимитов по денежным средствам

15.
Таблица, создаваемая при расчете программы
8.
Позиции по клиентским счетам




Функциональные ограничения
Текущая версия языка QPILE и созданные на его основе таблицы не поддерживают следующих операций:
Сортировку в таблицах,
Применение фильтров,
Использование таблицы в качестве источника данных для построения графиков,
Сохранение данных из таблицы в текстовый файл через контекстное меню,
Экспорт данных в системы технического анализа.
Работа с таблицами QPILE
Загрузка программы
Этот этап добавляет описания собственных таблиц в список доступных типов. Если предполагается работа с описаниями таблиц на сервере, его можно пропустить.

Загрузка кода программы выполняется выбором пункта меню программы Таблицы/ Портфели/Задать портфель, или нажатие клавиш «Ctrl»+«F10».
Нажмите кнопку «Прочитать из файла» и выберите файл, загружаемый с диска. Файлы имеют стандартные расширения «.QPL». Название таблицы появится в списке «Доступные портфели».
При чтении файла осуществляется проверка правильности программы. Если программа содержит ошибки, система уведомит об этом в «Окне сообщений».
Если файл прочитан успешно, то в полях отобразятся соответствующие параметры:
Поле
Назначение
Текущий портфель
Название таблицы
Всего параметров
Число параметров (столбцов), описанных в структуре таблицы
Всего клиентов
Количество доступных кодов клиентов, из числа перечисленных в структуре таблицы.
В новой версии языка параметр не актуален.
Фирмы
Перечень идентификаторов фирмы в торговой системе (значения, соответствующие полю «Дилер» в Таблице заявок или Таблице сделок)
Клиенты
Перечень идентификаторов клиентов для отображения в таблице
Параметры портфеля
Перечень описанных параметров и расширенные сведения по ним
Формула расчета
Исходный код программы на языке QPILE
Для загрузки прочитанной из файла таблицы нажмите кнопку «Загрузить локально».
Кнопка «Загрузить на сервер» позволяет загрузить программу на сервер, которая станет доступна всем его пользователям. Право загрузки программ на сервер назначается администратором системы QUIK.
При локальной загрузке код исполняется на текущем рабочем месте и просмотр таблицы на его основе доступен тоже только на этом месте.
РЕКОМЕНДАЦИИ: Первую загрузку каждого нового описания настоятельно рекомендуется производить локально, а уже после просмотра и проверки корректности его работы и расчета параметров – загружать на сервер.
Настройка параметров программы
Этот этап определяет список обрабатываемых программ и определяет периодичность вычислений. Если программы были загружены локально, то они автоматически помечаются выбранными.

Выбор доступных программ с описаниями типов таблиц выполняется выбором пункта меню программы Таблицы/Портфели/Доступные портфели, или нажатием клавиш «Ctrl»+«F11».
В списке «Доступные портфели» приведены все программы, доступные пользователю для создания таблиц, как загруженные локально, так и серверные. Выберите программу из числа доступных, установив на ней флажок. В полях диалога отобразятся параметры, относящиеся к структуре программируемой таблицы.
Установите период расчета значений таблицы. Для исполнения программ с большим количеством вычислений период расчета значений рекомендуется устанавливать не менее 5-10 секунд.
Нажмите кнопку «Сохранить» для сохранения настроек.
Нажатие кнопки «Удалить» приводит к удалению из списка выбранной строки. Серверные типы таблиц удалить нельзя.
Нажатием кнопки «Формула» открывается окно с исходным кодом программы и описанием таблицы (справочно).
Чтобы закрыть окно с сохранением настроек, нажмите кнопку «Применить». Нажатие кнопки «Отмена» закрывает окно без сохранения изменений.
РЕКОМЕНДАЦИИ: Настройки данного этапа распространяются и на ранее созданные программируемые таблицы. Этот этап можно использовать для включения/отключения вычислений в таблицах, а также для регулирования частоты обновления данных в них.
Применение настроек к существующим таблицам:
Как отключить пересчет значений в таблице?
Выберите пункт контекстного меню «Приостановить расчет» либо нажмите «Ctrl»+«F11» и снимите флажок с требуемого типа таблицы. При этом в таблице будут отображены последние вычисленные значения.
Если по одной программе было сформировано несколько таблиц, то расчет приостановится во всех этих таблицах.
Для отключения пересчета во всех таблицах нужно нажать «Ctrl»+«F11» и снять все флажки.
Как изменить период расчета в существующей таблице?
Выберите пункт контекстного меню «Параметры портфеля» или нажмите «Ctrl»+«F11», затем измените значение параметра «Период расчета (сек)» и нажмите кнопку «Применить».
Создание таблицы
Этот этап формирует таблицу на основании программы. На базе одной программы можно создать несколько таблиц для удобства их расположения на экране.
Создание программируемой таблицы выполняется выбором пункта меню программы Таблицы/Портфели/Просмотр портфеля, или нажатием клавиш «Ctrl»+«F12».
Выберите программу в списке «Доступные портфели». В полях раздела «Текущий портфель» отобразятся данные по структуре таблицы.
Если необходимо, ограничьте количество отображаемых строк в таблице с помощью фильтра «Фильтр клиентов».


Сформируйте список столбцов таблицы из числа доступных параметров и последовательность их отображения в таблице. В поле «Описание параметра» справочно приводится расширенное описание выделенного параметра.
Нажатием кнопки «Да» создается таблица.
ПРИМЕЧАНИЕ: Полученная таблица имеет такие же функции управления, как и другие таблицы системы QUIK. Например, для редактирования таблицы можно нажать кнопку на панели инструментов, или клавиши «Ctrl»+«E».
РЕКОМЕНДАЦИИ: Расчет параметров таблицы ведется в том числе на основе Таблицы текущих значений параметров. Убедитесь, что необходимые для расчета параметров данные принимаются с сервера (не отключены фильтром в списке принимаемых параметров и бумаг).
Функции, доступные в таблице
Данные таблицы доступны для копирования, экспорта в Excel, экспорта через ODBC.
Функции, доступные из контекстного меню таблицы:
«Приостановить расчет» – остановить вычисление параметров таблицы (при этом в таблице отображаются последние вычисленные данные),
«Возобновить расчет» – возобновить вычисление параметров таблицы,
«Начать расчет заново» – сбросить все значения и начать расчет заново,
«Сохранить описание в файл» – сохранить в текстовый файл программу, описывающую данную таблицу,
«Посмотреть формулу» – показать в окне код программы данной таблицы,
«Параметры портфеля» – открыть окно с параметрами программы, в том числе период расчета в секундах.
ПРИМЕР. Локальная загрузка файла программы с расчетом показателей маржинального кредитования по методике ФСФР. Пример находится в одном архиве с этим Руководством пользователя, в папке «qpile».
ЗАМЕЧАНИЕ: Перед загрузкой файла, приведенного в примере, измените код участника торгов в строках 4 и 60 на код фирмы Вашего брокера.
Нажатием клавиш «Ctrl»+«F10» открывается окно, в котором выбираем требуемый файл на диске (в примере это fkcb.qpl) и нажимаем кнопку «Открыть».
Нажимаем кнопку «Загрузить локально». В окне сообщений появляется уведомление о прочтении файла. Нажимаем кнопку «Выход».
Следующий этап пропускаем, потому что загруженные локально описания таблиц автоматически отмечаются доступными для создания таблиц.
Нажатием клавиш «Ctrl»+«F12» открывается окно создания таблицы. Формируем список «Заголовки столбцов» выбором параметров из числа доступных.
Нажатием кнопки «Да» создается таблица, в строках которой перечислены доступные счета клиентов, со следующими параметрами в столбцах:
Название поля
Значение
Задолженность брокеру
Сумма задолженности клиента брокеру по деньгам и бумагам, в денежном выражении
Только деньги клиента
Сумма всех текущих остатков клиента по деньгам
Оценка
Сумма всех текущих положительных остатков клиента по бумагам, в денежном выражении
Средства в рублях
Доступные собственные средства клиента
Все средства
Текущая стоимость средств клиента, сумма параметров «Оценка» и «Средства в рублях»
Уровень маржи
Текущий уровень маржи, рассчитанный по методике ФКЦБ
Состояние
Текстовый комментарий, поясняющий значение уровня маржи
В ячейках таблицы появятся данные, пересчитываемые с заданной регулярностью.
Если данные в таблице отсутствуют, то, скорее всего, в коде программы указаны недоступные идентификатор фирмы, коды инструментов или коды клиентов.
При необходимости можно изменить периодичность расчета или сократить список кодов клиентов с помощью фильтра, выбрав пункт контекстного меню «Параметры портфеля» или нажав «Ctrl»+«F11».
Структура файла программы
Файл с кодом программы представляет собой текстовый файл в кодировке CP-1251 (Windows). Один файл служит для описания одного типа таблицы. Используются стандартные расширения имени файлов «.QPL».
Описание состоит из трех частей:
«Заголовок» – наименование таблицы и определение основных параметров,
«Тело программы» – собственно код программы,
«Описание столбцов таблицы» – определение названий столбцов и формата соответствующих им ячеек таблицы,
Все разделы являются обязательными и должны следовать строго друг за другом. Файл всегда начинается с заголовка и заканчивается строкой «END_PORTFOLIO» (в новой версии языка должно применяться «END_PORTFOLIO_EX»).
Пример файла см. /qpile/available_money.qpl в папке с Руководством пользователя.
Заголовок файла
Заголовок файла содержит основные параметры таблицы:
Параметр
Назначение
PORTFOLIO
PORTFOLIO_EX
Название таблицы – символьный идентификатор латинскими буквами без пробелов.
«PORTFOLIO» – параметр, применявшийся в первой версии языка, «PORTFOLIO_EX» - обозначение программы на расширенной версии языка (начиная с версии QUIK 4.09)
DESCRIPTION
Текстовое описание таблицы
* CLIENTS_LIST
Список кодов клиентов через запятую, для которых вычисляются значения в таблице.
Значение «ALL_CLIENTS» соответствует выбору всех кодов клиентов.
Значения по каждому счету клиента формируют новую строку таблицы.
FIRMS_LIST
Список идентификаторов фирм (участников торгов) через запятую, клиентам которых будет доступна данная таблица
* - параметр предыдущей версии языка, в текущей версии является необязательным.
Каждый параметр должен быть описан на отдельной строке и заканчиваться символом «;».
Пример заголовка:
PORTFOLIO AVAILABLE_MONEY;
DESCRIPTION Доступные деньги клиента;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST MC0012300000;
Данная таблица будет отображаться в списке доступных с именем «AVAILABLE_MONEY». При выборе доступных описаний таблиц в поле «Текущий портфель» отобразится «Доступные деньги клиента». Это же наименование будет являться заголовком таблицы, принимаемым по умолчанию. Расчет параметров осуществляется по всем счетам клиентов, доступных пользователю в таблицах лимитов и имеющих код фирмы «MC0012300000».
Тело программы
Раздел содержит код программы для расчета значений в ячейках таблицы. Начало раздела обозначается строкой «PROGRAM», окончание - строкой «END_PROGRAM».
ЗАМЕЧАНИЯ:
Регистр символов (верхний или нижний) в командах игнорируется интерпретатором.
Множественные пробелы также игнорируются интерпретатором, за исключением пробелов внутри строковых переменных.
Для переноса длинных строк используется комбинация «<пробел>_» в конце строки. Например:
CLIENTS_LIST 0001, 0002, 0003, 0004, 0005, 0006, 0007, 0008, 0009, 0010, _
0011, 0012, 0013, 0014, 0015;
Символ «’» является комментарием. Комментарий распространяется до конца строки.
Разделителем операторов служит перевод строки, т.е. каждый оператор описывается отдельной строкой.
Пример программы:
PROGRAM
FirmCode = “MC0012300000”
CurrentBalance = MONEY_CURRENT_BALANCE(ROWNAME, FirmCode, "EQTV", "SUR")
CurrentLimit = MONEY_CURRENT_LIMIT(ROWNAME, FirmCode, "EQTV", "SUR")
Locked = MONEY_LIMIT_LOCKED(ROWNAME, FirmCode, "EQTV", "SUR")
AvailableMoney = MoneyCurrentBalance + MoneyCurrentLimit – MoneyLocked

If AvailableMoney > 0
Status = “Заявки доступны”
Else
Status = “Заявки недоступны”
SET_ROW_COLOR(ROWNAME, "RGB(255,138,138)", "DEFAULT_COLOR")
End If
END_PROGRAM
Пример относится к формированию таблицы «Доступные деньги клиента». Создаваемая таблица будет частично дублировать поля Таблицы лимитов по денежным средствам, а также содержать два вычисляемых поля.
Определение столбцов таблицы
Для отображения в таблице вычисленных значений необходимо описать ее столбцы и формат соответствующих им ячеек таблицы. Для этого предназначен данный раздел файла.
Каждый столбец таблицы описывается следующим набором параметров:
Параметр
Назначение
PARAMETER
Название переменной в программе, значение которой будет отображаться в данном столбце.
PARAMETER_TITLE

стр. 1
(из 13 стр.)

ОГЛАВЛЕНИЕ

Следующая >>