- •Раздел 8. Алгоритмический язык qpile
- •Общие положения
- •Назначение
- •Как работает qpile
- •Основные возможности
- •Функциональные ограничения
- •Работа с таблицами qpile
- •Загрузка программы
- •Настройка параметров программы
- •Создание таблицы
- •Функции, доступные в таблице
- •Структура файла программы
- •Заголовок файла
- •Тело программы
- •Определение столбцов таблицы
- •Конструкции языка qpile
- •Типы данных
- •Приведение типов
- •Выражения
- •Условия
- •Функции
- •Общие функции
- •New_global
- •Message
- •Функции для работы с коллекциями объектов (collection)
- •Функции для работы с ассоциативными массивами (map)
- •Create_map
- •Set_value
- •Get_value
- •Функции для обращения к строкам произвольных таблиц quik
- •Get_item
- •Get_number_of
- •Описания таблиц и параметров
- •Функции для обращения к спискам доступных параметров
- •Get_classes_list
- •Get_class_securities
- •Get_security_info
- •Функции для работы с программируемой таблицей
- •Set_row_color
- •Set_row_color_ex
- •Функции для получения значений Таблицы текущих значений параметров
- •Get_param
- •Get_param_ex
- •Значения параметров функций
- •Функции для получения значений Таблицы лимитов по бумагам
- •Функции для получения значений Таблицы лимитов по денежным средствам
- •Функции расчета маржинальных позиций
- •Short_value
- •Long_value
- •Функции получения значений таблиц «Клиентский портфель» и «Купить/Продать»
- •Get_client_marginal_portfolio_info
- •Get_client_marginal_buy_sell_info
- •Функции для работы с файлами
- •Clear_file
- •Writeln
- •Get_file_len
- •Функции для работы с заявками
- •Send_transaction
- •Сервисные функции
- •Get_trade_date
- •Get_datetime
- •Apply_scale
- •Приложение1. Синтаксис команд языка qpile
- •Приложение2. Рекомендации к составлению программ наQpile
Get_file_len
Возвращает количество строк в файле «target_file». Если такого файла не существует, возвращает «-1».
DOUBLE GET_FILE_LEN (STRING target_file)
READ_LINE
Функция считывает из файла «target_file» и возвращает строку под номером «line».
STRING READ_LINE (STRING target_file, DOUBLE line, DOUBLE error)
«error» - возвращаемый результат выполнения операции. Если значение равно «0», то чтение прошло успешно; «1» - произошла ошибка, «2» - достигнут конец файла.
Пример:
‘
WRITELN (“new.log”,“Hello, world“)
msg = READ_LINE ("new.log", GET_FILE_LEN("new.log"), error))
MESSAGE (msg,1)
‘
Функции для работы со строками
LEN
Возвращает длину строковой переменной «value».
DOUBLE LEN (STRING value)
TRIM
Обрезает пробелы в конце строки.
STRING TRIM (STRING value)
Функция возвращает строку без пустых символов в конце строки.
SUBSTR
Возвращает подстроку из строки «value», начиная с символа с номером «start» и длиной «len».
STRING SUBSTR (STRING value, DOUBLE start, DOUBLE len)
FIND
Ищет вхождение подстроки в заданную строку.
DOUBLE FIND (STRING value, DOUBLE start, DOUBLE sub)
Функция возвращает позицию первого вхождения подстроки «sub» в строке «value», начиная с позиции «start». Если подстрока не найдена, функция возвращает результат «-1».
Пример:
‘
stroka="anymessage"
stroka2=SUBSTR(stroka, FIND(stroka, 1, "message"), LEN("message"))
MESSAGE (stroka2,2)
‘
Функции для работы с графиками
GETCANDLE
Функция для обращения к данным «свечек» на графике, а также к значениям индикаторов технического анализа.
MAP GET_CANDLE (STRING class_code, STRING sec_code, STRING parameter_name, STRING interval, STRING graph_type, DOUBLE Date, DOUBLE Time)
Функция возвращает ассоциативный массив (MAP), содержащий информацию о ценах в момент времени «Date»«Time», для графика, построенного по бумаге с кодом «sec_code» из класса с кодом «class_code» с временным интервалом «interval». Если «class_code» равен «», то функция ищет «sec_code» по всем классам до первого нахождения.
Тип графика указывается следующим кодом:
Тип графика |
Код |
|
Тип графика |
Код |
|
Тип графика |
Код |
PRICE |
1 |
|
PARABOLIC SAR |
10 |
|
CUM AD |
21 |
VOLUME |
2 |
|
SROC |
11 |
|
CHAIKIN OSCILLATOR |
22 |
MOVING AVERAGE |
3 |
|
MOM |
12 |
|
CUM WAD |
23 |
PRICE OSCILLATOR |
4 |
|
ROC |
13 |
|
ELDER FI |
24 |
MACD |
5 |
|
MFI |
16 |
|
ELDER RAY |
25 |
STANDARD DEV |
6 |
|
WILLIAMS %R |
17 |
|
VERTICAL HORIZONTAL FILTER |
26 |
BOLLINGER LINES |
7 |
|
ENVELOPS |
18 |
|
CHAIKIN VOLATILITY |
27 |
STOCHASTIC |
8 |
|
VOLUME OSCILLATOR |
19 |
|
|
|
RSI |
9 |
|
BALANCE VOLUME |
20 |
|
|
|
Значение временного интервала «interval» можно задавать следующими числовыми величинами:
Величина интервала |
Значение |
|
Величина интервала |
Значение |
|
Величина интервала |
Значение |
Месячный |
month |
|
Тиковый |
0 |
|
20 минут |
20 |
-3 |
|
1 минута |
1 |
|
30 минут |
30 | |
Недельный |
week |
|
5 минут |
5 |
|
60 минут |
60 |
-2 |
|
6 минут |
6 |
|
|
| |
Дневной |
day |
|
10 минут |
10 |
|
|
|
-1 |
|
15 минут |
15 |
|
|
|
Значение «parameter_name» должно соответствовать одному из значений имени параметра из Таблицы текущих значений параметров. Их перечень см. п. 8.12. Если «parameter_name» указан как «», то поиск осуществляется по данным Таблицы всех сделок.
Значение даты «Date» нужно указывать в формате «YYYYMMDD». Например, «20050527» означает 27 мая 2005 г. Значение времени «Time» нужно указывать в формате «hhmmss». Например, «163500» означает16 ч. 35 мин.
Функция возвращает ассоциативный массив (MAP), содержащий параметры:
№ |
Параметр |
Тип |
Описание |
1. |
Open |
DOUBLE |
Цена открытия (первой сделки) в данном интервале времени |
2. |
Close |
DOUBLE |
Цена закрытия (последней сделки) в интервале |
3. |
High |
DOUBLE |
Наибольшая цена сделки в интервале |
4. |
Low |
DOUBLE |
Наименьшая цена сделки в интервале |
5. |
Volume |
DOUBLE |
Суммарный объем сделок в интервале |
Пример:
‘
msg = GET_CANDLE("EQBR", "EESR", "", "5", "PRICE", 20051130, 103500)
MESSAGE(msg, 2)
‘