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

стр. 5
(из 5 стр.)

ОГЛАВЛЕНИЕ

DECIMAL(15,2)




Пример импорта транзакций
В качестве примера приведена реализация стоп-приказов, обрабатываемых макросом в MS Excel. Подобным образом можно программировать и другие условия выполнения заявок.
Пример использует такие функции QUIK, как экспорт таблиц в MS Excel и импорт транзакций.
Общая схема функционирования стоп-заявок может выглядеть так:
Имеется список бумаг, которые необходимо отслеживать. Для каждой бумаги заданы граничные значения цен последней сделки по этому инструменту. Необходимо продать имеющиеся бумаги, в том случае, если цена последней сделки меньше или равна заданной граничной цене для определенной бумаги.
QUIK выводит данные из Таблицы сделок и Таблицы текущих значений параметров в Excel. Данные в таблицах отфильтрованы только по интересующим инструментам и набору параметров.
Таблица
Параметры
Таблица текущих значений параметров
«Код бумаги», «Код класса», «Цена последней сделки», «Сессия»
Таблица заявок
«Комментарий», «Операция», «Цена», «Количество», «Остаток», «Объем», «Состояние», «Бумага», «Код бумаги», «Номер», «Код класса», «Счет»
Данные из Таблицы текущих значений параметров выводятся на лист «ТекПарам». Данные из Таблицы заявок выводятся на лист «Заявки» без заголовков строк.
В Excel’е к Таблице текущих значений параметров добавляются дополнительные столбцы, в которых указываются условия для выполнения заявки:
«Порог цены» – значение стоп-цены, при достижении которой инструмент будет выставлен на продажу,
«Продавать по рыночной» – условие для формирования заявки, для рыночной заявки принимается равным «1», для лимитированной – «0»,
«Цена продажи» – цена продажи инструмента (для лимитированной заявки),
«Сколько продавать?» – объем заявки, выраженный в лотах.

Дополнительно создается лист «Настройки», на котором будут помещены сведения о расположении файлов, счете клиента и его идентификаторе, используемые при формировании заявки. Также этот лист можно применить для управления процессом импорта транзакций.

Для обработки поступающих данных нужно создать макрос на языке Visual Basic, который будет отслеживать изменение цены последней сделки, и в зависимости от ее состояния производить определенные действия.
Выберите какую-нибудь ячейку на листе «ТекПарам» за пределами основного используемого диапазона и напишите в ней формулу вида «=СУММ(D2:D1000)». Данная формула будет отображать в ячейке сумму всех чисел в колонке «Цена последней сделки». Макрос будет начинать обработку данных, реагируя на изменение значения в ячейке.
После этого открыть редактор VisualBasic (пункт меню Сервис/Макрос/Редактор VisualBasic) и написать обработчик события «Worksheet_Calculate()» такого вида:

В этой функции просматриваются все бумаги в Таблице текущих значений параметров, начиная со второй строки (т.к. первая – заголовок таблицы) и кончая последней («UsedRange.Rows.Count»). В том случае, если сессия открыта и цена последней сделки меньше либо равна указанной нами пороговой цены, макрос формирует строку с параметрами заявки на продажу и добавляет ее в конец .tri-файла. Код функции «SaveTransaction» можно посмотреть в примере StopLoss.xls.
QUIK проверяет наличие новых строк в .tri-файле, и обрабатывает их в случае поступления, осуществляет проверки как и при ручном вводе заявки и посылает в торговую систему. Результаты выводятся в файл сообщений <имя_файла>.tro, определенный пользователем.
Дополнительная информация к примеру:
Директория import в пакете документации содержит примеры используемых файлов .tri, .tro, .trr и файл с примером макроса StopLoss.xls.

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

стр. 5
(из 5 стр.)

ОГЛАВЛЕНИЕ