<< Предыдущая

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

ОГЛАВЛЕНИЕ

Следующая >>

Название столбца, отображаемое в таблице
PARAMETER_DESCRIPTION
Расширенное описание параметра
PARAMETER_TYPE
Формат данных в ячейках таблицы, относящихся к столбцу. Возможны два типа данных:
NUMERIC(<размер_числа_в_символах>, <кол_во_знаков_после_запятой>) - двойные с плавающей точкой (double),
STRING(<длина_строки>) - строковые (string).
Описание каждого параметра завершается строкой «END».
После описания параметров в конце файла обязательно должна быть строка «END_PORTFOLIO» для первой версии языка, либо «END_PORTFOLIO_EX» для его новой версии.
Пример описания:
PARAMETER AvailableMoney;
PARAMETER_TITLE Доступно;
PARAMETER_DESCRIPTION Доступные деньги клиента;
PARAMETER_TYPE NUMERIC(10,2);
END
Значения переменной «AvailableMoney» будут отображаться в столбце таблицы «Доступно». При настройке таблицы в поле «Описание параметра» отображается текст «Доступные деньги клиента». Данные в столбце будут отображаться в виде числа с двумя знаками после запятой. Этот же формат данных рекомендуется указывать при настройке экспорта из таблицы по ODBC.
Конструкции языка QPILE
Типы данных
Различаются следующие типы данных:
«STRING» - строковый,
«Суммарный спрос»
«DOUBLE» - вещественный, или число с плавающей точкой,
1234567.89
«COLLECTION» - коллекция,
Коллекция является списком объектов, с индексацией по целочисленному ключу (начиная с 0).
0
1
2
3
«EESR»
12
7.890
«BUY»
«MAP» - ассоциативный массив,
Ассоциативный массив (MAP) является последовательностью пар (ключ, значение), которая обеспечивает получение значения по ключу. Каждому ключу соответствует максимум одно значение, иными словами, каждый ключ в ассоциативном массиве уникален. В качестве ключа всегда выступает строковое значение.
«NUMBER»
«TIME»
«OPERATION»
67890
«12:34:56»
«BUY»
Типы данных «COLLECTION» и «MAP» являются структурными. Они могут:
Быть неоднородными, т.е. содержать значения разных типов,
Содержать в качестве значений элементы любых типов, в том числе и переменные типов «COLLECTION» и «MAP».
Область видимости всех переменных, кроме формальных параметров, является глобальной и определяется контекстом исполнения. Если в процессе исполнения переменная была присвоена, то она считается определенной до конца исполнения программы.
Переменные, сохраняющие свои значения между периодами расчета программы, именуются глобальными. Глобальные переменные описываются специальной функцией «NEW_GLOBAL ()» (см. п. 7.5.1)
Приведение типов
Переменные языка не типизированы и могут изменять тип данных в процессе исполнения программы.
Применение операций «+», «-», «*», «/» к строковым переменным приводит их к вещественным значениям. Если такое приведение не возможно, то вещественное значение принимается равным «0.0». Для структурных переменных результат этих операций не определен.
Операция сравнения вещественных и строковых переменных допустима только для переменных со значениями одного типа. Для переменных структурных типов «COLLECTION» и «MAP» результат сравнения не определен.
Применение операции конкатенации строк «&» к вещественным переменным приводит их значения к строковым.
При вызове внешних функций всегда осуществляется приведение типов аргументов.
Изменение значений переменных структурных типов и обращение к их полям выполняется специальными функциями описанными в п. 7.7-7.8.
Выражения
Приоритет выполнения математических операций («+», «-», «*», «/», унарный «-») является стандартным.
Логические операции имеют одинаковый приоритет (за исключением «AND» и «OR») и исполняются слева направо. «AND» и «OR» исполняются в последнюю очередь, слева направо.
Например:
A < B or A = C равносильно (A < B) or (A = C)
В выражениях и сравнениях возможно использование скобок.
Допустимые выражения:
Операция
Значение
Математические
+
Сложение
-
Вычитание
*
Умножение
/
Деление
Унарный «-»
Смена знака в значении на противоположный
Логические
==
Равенство
=
Равенство, аналогично предыдущему
>
Больше
<
Меньше
>=
Больше или равно
<=
Меньше или равно
!=
Не равно
<>
Не равно , аналогично предыдущему
AND
Логическое «И»
OR
Логическое «ИЛИ»
Текстовые
&
Склейка (конкатенация) строк
Условия
Синтаксис оператора условия:
IF условие
последовательность инструкций
ELSE
последовательность инструкций
END IF
«Условием» является логическое выражение. Вложенность операторов условия не ограничена.
Пример:
IF DealerMoney = 0
Margin = 100
ELSE
Margin=0
END IF
Циклы
Синтаксис оператора цикла:
выполняет «последовательность инструкций» для каждого значения «переменной», входящего в «список значений». «Список значений» определяется переменной типа «STRING» со значениями, перечисленными через запятую.
FOR переменная IN список значений
последовательность инструкций
END FOR
выполняет последовательность инструкций для каждого значения переменной в диапазоне от «значение1» до «значение2» с шагом 1, в качестве которых могут выступать математические выражения. Если «значение2» < «значение1», цикл не обрабатывается.
FOR переменная FROM значение1 TO значение2
последовательность инструкций
END FOR
Вложенность операторов цикла не ограничена.
Пример:
FkcbSecsList = "EESR,SBER,MSNG,LKOH,YUKO,RTKM"

FOR Sec IN FkcbSecsList
DCPos = DEPO_CURRENT_BALANCE(ROWNAME, FirmList, Sec, DefDepoAcc)
DCLim = DEPO_CURRENT_LIMIT(ROWNAME, FirmList, Sec, DefDepoAcc)
DOLim = DEPO_OPEN_LIMIT(ROWNAME, FirmList, Sec, DefDepoAcc)
SecPos = DCPos + DCLim - DOLim
SecPos = SecPos * GET_PARAM(ClassCode, Sec, "LAST") * GET_PARAM(ClassCode, Sec, "LOTSIZE")
DepoPos = DepoPos + ignore_negative(SecPos)
DealerMoney = DealerMoney + dealer(SecPos)
END FOR
Данный цикл перебирает все бумаги их списка бумаг «FkcbSecsList» и по каждой бумаге обрабатывает лимит по этой бумаге для текущего рассчитываемого клиента.
Функции
Общие положения:
Описания функций могут находиться в любом месте программы.
Все функции должны иметь различные имена – перегрузка по типу параметров и их количеству не осуществляется.
Функции могут возвращать значение с помощью переменной с именем «RESULT».
Все параметры передаются в функции по значению.
Функция может являться процедурой. В этом случае в месте вызова такой функции не используется возвращаемое значение, и присваивание переменной с именем «RESULT» внутри такой функции не обязательно.
ЗАМЕЧАНИЯ:
В описании синтаксиса функций, возвращающих или принимающих переменную любого типа, для обозначения применяется тип «ANY».
Таблица, создаваемая при расчете программы, обозначается «OWN».
Функции, определенные пользователем, имеют следующий синтаксис:
FUNC функция (список аргументов)
последовательность инструкций
END FUNC
Пример:
FUNC ignore_negative(x)
If x > 0
RESULT = x
Else
RESULT = 0
End If
END FUNC
Функции языка QPILE
Стандартные функции языка QPILE предназначены для работы со структурными типами переменных и получения значений из таблиц QUIK.
Функция
Назначение
NEW_GLOBAL
Инициализация глобальной переменной
MESSAGE
Вывод текста в Окне сообщений
Математические функции
ACOS
Арккосинус
ASIN
Арксинус
ATAN
Арктангенс
CEIL
Округление вверх
COS
Косинус
EXP
Экспонент
FLOOR
Округление вниз
LOG
Логарифм
POW
Возведение в степень
RAND
Случайное число
SIN
Синус
SQRT
Квадратный корень числа
TAN
Тангенс
Функции для работы с коллекциями объектов
CREATE_COLLECTION
Определение коллекции
GET_COLLECTION_COUNT
Количество элементов в коллекции
REMOVE_COLLECTION_ITEM
Удаление элемента коллекции
INSERT_COLLECTION_ITEM
Вставка элемента коллекции
SET_COLLECTION_ITEM
Замена значения элемента коллекции
GET_COLLECTION_ITEM
Чтение значения элемента коллекции
Функции для работы с ассоциативными массивами
CREATE_MAP
Определение массива
SET_VALUE
Добавление нового элемента в массив
GET_VALUE
Чтение значения элемента из массива
Функции для обращения к строкам произвольных таблиц QUIK
GET_ITEM
Строка с указанным номером из таблицы QUIK
GET_NUMBER_OF
Количество записей в указанной таблице QUIK
Функции для обращения к спискам доступных параметров
GET_CLASSES_LIST
Список кодов классов, доступных в текущем сеансе связи
GET_CLASS_SECURITIES
Список кодов бумаг для заданного списка классов
GET_SECURITY_INFO
Информация по бумаге с определенным кодом из заданного класса
Функции для работы с программируемой таблицей
ADD_ITEM
Добавление новой строки в таблицу
MODIFY_ITEM
Изменение указанной строки таблицы
DELETE_ITEM
Удаление указанной строки таблицы
DELETE_ALL_ITEMS
Очистка всех значений таблицы
SET_ROW_COLOR
Указание цвета подсветки для строки таблицы
Функции для получения значений Таблицы текущих значений параметров*
GET_PARAM
Получение значений из Таблицы текущих значений параметров
Функции для получения значений Таблицы лимитов по бумагам*
DEPO_OPEN_BALANCE
Входящий остаток по бумагам
DEPO_OPEN_LIMIT
Входящий лимит по бумагам
DEPO_CURRENT_BALANCE
Текущий остаток по бумагам
DEPO_CURRENT_LIMIT
Текущий лимит по бумагам
DEPO_LIMIT_AVAILABLE
Доступное количество ценных бумаг
DEPO_LIMIT_LOCKED
Заблокированное Количество лотов ценных бумаг
DEPO_LIMIT_LOCKED_BUY
Количество лотов ценных бумаг, заблокированных на покупку
DEPO_LIMIT_LOCKED_BUY_VALUE
Стоимость ценных бумаг, заблокированных на покупку
Функции для получения значений Таблицы лимитов по денежным средствам*
MONEY_OPEN_BALANCE
Входящий остаток по денежным средствам
MONEY_OPEN_LIMIT
Входящий лимит по денежным средствам
MONEY_CURRENT_BALANCE
Текущий остаток по денежным средствам
MONEY_CURRENT_LIMIT
Текущий лимит по денежным средствам
MONEY_LIMIT_AVAILABLE
Доступное количество денежных средств
MONEY_LIMIT_LOCKED
Заблокированное в заявках на покупку количество денежных средств
MONEY_LIMIT_LOCKED_NONMARGINAL_VALUE
Стоимость немаржинальных бумаг в заявках на покупку

<< Предыдущая

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

ОГЛАВЛЕНИЕ

Следующая >>