Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
5.5 Импорт транзакций
(Дилер | Загружать транзакции динамически из файла)
5.5.1 Назначение
Автоматический ввод в торговую систему подготовленных какой-либо внешней программой транзакций. Получение отчета о результате ввода транзакции.
5.5.2 Использование
Для обмена информацией между QUIK и внешней программой используются текстовые файлы фиксированной структуры:
*.tri – файл с параметрами транзакций,
*.tro – файл с результатами посылки транзакций в торговую систему,
*.trr – файл, содержащий журнал обработки транзакций.
Схема взаимодействия между программами выглядит следующим образом:
1. Внешняя программа формирует транзакцию с заданными параметрами и записывает ее в виде новой строки в .tri-файл. Транзакции идентифицируются по дополнительному целочисленному параметру TRANS_ID, содержащему уникальный номер.
2. Система QUIK опрашивает с определенной периодичностью .tri-файл с параметрами транзакций и передает в торговую систему ранее не обработанные транзакции. Если описание транзакции не соответствует принятому формату, то она отвергается.
3. Результат действий записывается в .tro-файл в формате, приемлемом для чтения внешней программой. Каждая строка файла содержит информацию об обработке отдельной транзакции, различаемые по параметру TRANS_ID.
4. При обработке внешней программой результатов операции (на ММВБ), выводимых в .tro-файл, регистрационный номер заявки в торговой системе указывается в текстовом сообщении, возвращаемом торговой системой (поле «DESCRIPTION»).
ЗАМЕЧАНИЕ: Перед первым чтением .tri-файла QUIK обращается к .tro-файлу и считывает обработанные заявки. Заявки, содержащиеся в .tro-файле считаются обработанными, и строки в .tri-файле с тем же параметром TRANS_ID игнорируются. Если внешняя программа при каждом запуске начинает нумеровать заявки сначала, то перед ее запуском необходимо удалить .tro-файл из рабочей директории.
5.5.3 Формат. tri-файла с параметрами транзакций
Файл представляет собой последовательность строк, каждая из которых содержит информацию по отдельной транзакции. Параметры транзакции описываются в виде «НАЗВАНИЕ_ПАРАМЕТРА=значение_параметра» и разделяются символом «;».
Параметры и принимаемые ими значения:
Параметр | Значение |
CLASSCODE | Код класса, по которому выполняется транзакция, например EQBR. Обязательный параметр |
SECCODE | Код инструмента, по которому выполняется транзакция, например RU |
ACTION | Вид транзакции, имеющий одно из следующих значений: ·§ NEW_ORDER - новая заявка, ·§ NEW_NEG_DEAL - новая заявка на внебиржевую сделку, ·§ NEW_STOP_ORDER - новая стоп-заявка, ·§ KILL_ORDER - снять заявку, ·§ KILL_NEG_DEAL - снять заявку на внебиржевую сделку, § KILL_STOP_ORDER - снять стоп-заявку. |
ACCOUNT | номер счета Трейдера, обязательный параметр |
CLIENT_CODE | 12-ти символьный код клиента, необязательный параметр |
TYPE | Тип заявки, необязательный параметр. Возможные значения: ·§ L – лимитированная, ·§ M – рыночная. |
OPERATION | Направление заявки, обязательный параметр. Возможные значения: ·§ S – продать, ·§ B – купить. |
PRICE | Цена заявки, за единицу инструмента. Обязательный параметр. Если в региональных настройках Windows установлен разделитель «,», то разделителем целой и дробной части цены может быть указана и «.» и «,». Если в региональных настройках Windows установлен разделитель «.», то разделителем в цене может быть только «.» |
STOPPRICE | Стоп-цена, за единицу инструмента. Используется только при ACTION=NEW_STOP_ORDER |
QUANTITY | Количество лотов в заявке, обязательный параметр |
PARTNER | Код организации – партнера по внебиржевой сделке Применяется только при ACTION=NEW_NEG_ORDER |
ORDER_KEY | Номер заявки, снимаемой из торговой системы Применяется при ACTION=KILL_ORDER или ACTION=KILL_NEG_DEAL |
STOP_ORER_KEY | Номер стоп-заявки, снимаемой из торговой системы Применяется только при ACTION=KILL_STOP_ORDER |
TRANS_ID | Уникальный идентификационный номер заявки |
SETTLE_CODE | Код расчетов при исполнении внебиржевых заявок |
PRICE2 | Цена второй части РЕПО |
REPORATE | Ставка РЕПО, в процентах |
REFUNDRATE | Ставка фиксированного возмещения, выплачиваемого в случае неисполнения второй части РЕПО, в процентах |
Примеры строк, которые могут содержаться в файле:
Транзакция | Строка |
Заявка на продажу (Ростелеком, лимитированная, 3 лота по 253.3 руб.) | ACCOUNT=NL; CLIENT_CODE=467; TYPE=L; TRANS_ID=1; CLASSCODE=EQBR; SECCODE=RU; ACTION=NEW_ORDER; OPERATION=S; PRICE=43,21; QUANTITY=3; |
Заявка на покупку (ЛУКОЙЛ, лимитированная, 3 лота по 253.3 руб.) | ACCOUNT=NL; CLIENT_CODE=467; TYPE=L; TRANS_ID=2; CLASSCODE=EQBR; SECCODE=RU; ACTION=NEW_ORDER; OPERATION=B; PRICE=253,3; QUANTITY=3; |
Внебиржевая заявка на покупку (Ростелеком, лимитированная, 1 лот по 42.81 руб.) | ACCOUNT=NL; CLIENT_CODE=467; TYPE=L; TRANS_ID=3; CLASSCODE=PSEQ; SECCODE=RU; ACTION= NEW_NEG_DEAL; OPERATION=B; PRICE=42,81; QUANTITY=1; |
Внебиржевая заявка на продажу (РАО ЕЭС-п, лимитированная, 3 лота по 1.113 руб.) | ACCOUNT=NL; CLIENT_CODE=467; TYPE=L; TRANS_ID=4; CLASSCODE=PSEQ; SECCODE=RU; ACTION=NEW_NEG_DEAL; OPERATION=S; PRICE=1,113; QUANTITY=3; |
Снятие заявки с номером 503983 | CLASSCODE=EQBR; SECCODE=RU; TRANS_ID=5; ACTION=KILL_ORDER; ORDER_KEY=503983; |
Снятие внебиржевой заявки с номером 503984 | CLASSCODE=EQBR; TRANS_ID=6; ACTION=KILL_NEG_DEAL; ORDER_KEY=503984; |
5.5.4 Формат. tro-файла с результатами обработки транзакций
Файл представляет собой последовательность строк, каждая из которых содержит информацию по отдельной транзакции. Параметры транзакции описываются в виде «НАЗВАНИЕ_ПАРАМЕТРА=значение_параметра» и разделяются символом «;».
Параметры и принимаемые ими значения:
Параметр | Значение |
TRANS_ID | Уникальный идентификационный номер заявки |
STATUS | Результат выполнения операции. Может принимать одно из следующих значений: § 0 - транзакция отправлена серверу, § 1 - транзакция получена на сервер QUIK от клиента, § 2 - ошибка при передачи транзакции в шлюз с торговой системой ММВБ, § 3 - транзакция выполнена, § 4 - транзакция не выполнена торговой системой, § 5 - транзакция не прошла проверку сервера QUIK, § 6 - транзакция не прошла проверку лимитов сервера QUIK, § 7 - транзакция клиента, работающего с подтверждением, подтверждена менеджером фирмы, § 8 - транзакция клиента, работающего с подтверждением, не подтверждена менеджером фирмы, § 9 - транзакция клиента, работающего с подтверждением, снята менеджером фирмы, § 10 - транзакция не поддерживается, § 11 - транзакция не прошла проверку правильности электронной подписи. |
TRANS_DESCRIPTION | Описание выполняемой транзакции, например «Ввод заявки» |
DESCRIPTION | Текстовый комментарий к полю STATUS, содержащий ответ сервера QUIK или торговой системы. |
Пример строки .tro-файла:
TRANS_ID=1;STATUS=0;TRANS_DESCRIPTION="Ввод заявки"; DESCRIPTION="Отправлена транзакция";
5.5.5 Настройка
1. Из пункта меню Дилер | Загружать транзакции динамически из файла откройте окно настройки импорта транзакций.
2. В поле «Файл с исходными данными о транзакциях» введите полный путь к .tri-файлу c транзакциями, например «C:\quikdata\input. tri».
3. В поле «Обрабатывать через.. секунд» укажите периодичность чтения файла. Рекомендуемый интервал – 5 секунд.
4. Если установлен флажок «Оповещать об обработке файла звуковым сигналом», то при каждом обращении к файлу программа будет подавать звуковой сигнал. Используйте
его при необходимости для контроля над функционированием процесса импорта транзакций.
5. В поле «Файл с данными об успешно отправленных транзакциях» введите полный путь к .tro-файлу, например «C:\quikdata\output. tro».
6. В поле «Файл с журналом отправляемых транзакциях» введите полный путь к .trr-файлу, например «C:\quikdata\log. trr».
7. Если установлен флажок «Вести журнал отправляемых транзакций», то в .trr-файл будет записываться информация об обработанных транзакциях.
8. Следующие параметры («Число обращений сделанных к файлу» и т. д.) используются как статистика процесса импорта транзакций.
9. Нажатие кнопки «Начать обработку» приводит к старту процесса импорта транзакций. Нажатием кнопки «Прекратить обработку» процесс импорта останавливается.
10. Нажмите кнопку «Закрыть» для закрытия окна настройки с сохранением выполненных настроек. Если процесс импорта начат, он будет осуществляться автоматически в фоновом режиме.
РЕКОМЕНДАЦИИ: Запись данных о транзакции в текстовый файл должна осуществляться целой строкой. Если запись параметров одной сделки будет производиться несколькими обращениями к файлу, то возможна ситуация, когда QUIK начнет чтение не полностью сформированной транзакции и она будет неправильно обработана либо отвергнута.
5.6 Приложения
5.6.1 Форматы данных для настройки экспорта через ODBC
Таблица | Параметр | Формат |
Таблица текущих значений параметров | Бумага | VARCHAR(200) |
Полное название бумаги | VARCHAR(150) | |
Код бумаги | VARCHAR(12) | |
Класс | VARCHAR(128) | |
Код класса | VARCHAR(12) | |
Погашение | VARCHAR(15) | |
До погашения | INTEGER | |
Статус | VARCHAR(32) | |
Размер лота | INTEGER | |
Лучшая цена спроса | DECIMAL(15,6) | |
Спрос по лучшей цене | INTEGER | |
Суммарный спрос | INTEGER | |
Количество заявок на покупку | INTEGER | |
Лучшая цена предложения | DECIMAL(15,6) | |
Предложение по лучшей цене | INTEGER | |
Суммарное предложение | INTEGER | |
Количество заявок на продажу | INTEGER | |
Цена открытия | DECIMAL(15,6) | |
Максимальная цена сделки | DECIMAL(15,6) | |
Минимальная цена сделки | DECIMAL(15,6) | |
Цена последней сделки | DECIMAL(15,6) | |
Разница цены последней к предыдущей сессии | DECIMAL(15,6) | |
Количество контрактов в последней сделке | INTEGER | |
Время последней сделки | VARCHAR(15) | |
Бумаг во всех сделках | INTEGER | |
Оборот в деньгах | DECIMAL(15,0) | |
Состояние сессии | VARCHAR(32) | |
Оборот в деньгах последней сделки | DECIMAL(15,6) | |
Средневзвешенная цена | DECIMAL(15,6) | |
Лучшая цена спроса сегодня | DECIMAL(15,6) | |
Лучшая цена предложения сегодня | DECIMAL(15,6) | |
Количество сделок за сегодня | INTEGER | |
Цена закрытия | DECIMAL(15,6) | |
Предыдущая оценка | DECIMAL(15,6) | |
Размещение | VARCHAR(32) | |
Накопленный купонный доход | DECIMAL(15,2) | |
Доходность последней сделки | DECIMAL(15,2) | |
Размер купона | DECIMAL(15,2) | |
Доходность по предыдущей оценке | DECIMAL(15,2) | |
Доходность по оценке | DECIMAL(15,2) | |
Цена второй части РЕПО | DECIMAL(15,6) | |
Разница цены последней к предыдущей оценке | DECIMAL(15,6) | |
Цена периода закрытия | DECIMAL(15,6) | |
Доходность закрытия | DECIMAL(15,2) | |
Гарантийное обеспечение продавца | DECIMAL(15,6) | |
Гарантийное обеспечение покупателя | DECIMAL(15,6) | |
Разница цены последней к предыдущей сессии | DECIMAL(15,6) | |
Предыдущая расчетная цена | DECIMAL(15,6) | |
Лимит изменения цены | DECIMAL(15,6) | |
Лимит изменения цены T+1 | DECIMAL(15,6) | |
Лимит объема активных заявок (в контрактах) | DECIMAL(15,2) | |
Максимальная цена | DECIMAL(15,6) | |
Минимальная цена | DECIMAL(15,6) | |
Оборот внесистемных в деньгах | DECIMAL(15,0) | |
Количество внесистемных сделок за сегодня | INTEGER | |
Количество открытых позиций | INTEGER | |
Доходность продажи | DECIMAL(15,6) | |
Доходность покупки | DECIMAL(15,6) | |
БГО по покрытым поз. | DECIMAL(15,6) | |
БГО по непокрытым поз. | DECIMAL(15,6) | |
Таблица всех сделок | Номер сделки | DECIMAL(15,0) |
Время | VARCHAR(15) | |
Бумага | VARCHAR(150) | |
Класс | VARCHAR(130) | |
Цена | DECIMAL(15,6) | |
Количество | INTEGER | |
Объем | DECIMAL(15,2) | |
Код расчетов | VARCHAR(5) | |
Доходность | DECIMAL(15,2) | |
Купонный доход | DECIMAL(15,2) | |
Период | VARCHAR(5) | |
Таблица заявок | Номер заявки | DECIMAL(15,0) |
Время заявки | VARCHAR(15) | |
Бумага | VARCHAR(150) | |
Код бумаги | VARCHAR(12) | |
Класс | VARCHAR(130) | |
Код класса | VARCHAR(12) | |
Направленность | VARCHAR(10) | |
Счет | VARCHAR(12) | |
Цена | DECIMAL(15,6) | |
Количество | INTEGER | |
Скрытое кол-во | INTEGER | |
Остаток | INTEGER | |
Объем | DECIMAL(15,2) | |
Доходность | DECIMAL(15,2) | |
Купонный процент | DECIMAL(15,2) | |
Трейдер | VARCHAR(12) | |
Код фирмы | VARCHAR(12) | |
Комментарий | VARCHAR(20) | |
Исходный номер | DECIMAL(15,0) | |
Срок действия | VARCHAR(15) | |
Тип | VARCHAR(10) | |
Состояние | VARCHAR(10) | |
Таблица сделок | Номер сделки | DECIMAL(15,0) |
Время | VARCHAR(15) | |
Номер заявки | DECIMAL(15,0) | |
Бумага | VARCHAR(150) | |
Код бумаги | VARCHAR(12) | |
Класс | VARCHAR(130) | |
Код класса | VARCHAR(12) | |
Направленность | VARCHAR(10) | |
Счет | VARCHAR(12) | |
Цена | DECIMAL(15,6) | |
Количество | INTEGER | |
Объем | DECIMAL(15,2) | |
Код расчетов | VARCHAR(5) | |
Доходность | DECIMAL(15,2) | |
Купонный процент | DECIMAL(15,2) | |
Трейдер | VARCHAR(12) | |
Код фирмы | VARCHAR(12) | |
Комментарий | VARCHAR(20) | |
Таблица лимитов по деньгам | Фирма | VARCHAR(12) |
Валюта | VARCHAR(5) | |
Группа | VARCHAR(5) | |
Код клиента | VARCHAR(12) | |
Входящий остаток | DECIMAL(15,2) | |
Входящий лимит | DECIMAL(15,2) | |
Текущий остаток | DECIMAL(15,2) | |
Текущий лимит | DECIMAL(15,2) | |
Заблокировано | DECIMAL(15,2) | |
Всего | DECIMAL(15,2) | |
Доступно | DECIMAL(15,2) | |
Баланс | DECIMAL(15,2) | |
Таблица лимитов по бумагам | Фирма | VARCHAR(12) |
Название бумаги | VARCHAR(150) | |
Код бумаги | VARCHAR(12) | |
Счет депо | VARCHAR(12) | |
Код клиента | VARCHAR(12) | |
Входящий остаток | INTEGER | |
Входящий лимит | INTEGER | |
Текущий остаток | INTEGER | |
Текущий лимит | INTEGER | |
Заблокировано | INTEGER | |
Всего | INTEGER | |
Доступно | INTEGER | |
Баланс | INTEGER | |
Таблица позиций по клиентским счетам (фьючерсы) | Фирма | VARCHAR(12) |
Торговый счет | VARCHAR(12) | |
Код инструмента | VARCHAR(12) | |
Краткое название | VARCHAR(150) | |
Тип | VARCHAR(35) | |
Длинные позиции на начало торгов | INTEGER | |
Короткие позиции на начало торгов | INTEGER | |
Чистые позиции на начало торгов | INTEGER | |
Текущие открытые длинные позиции | INTEGER | |
Текущие открытые короткие позиции | INTEGER | |
Текущие чистые позиции | INTEGER | |
Активные на покупку | INTEGER | |
Активные на продажу | INTEGER | |
Оценка текущих чистых позиций | DECIMAL(15,2) | |
Планируемые чистые позиции | DECIMAL(15,2) | |
Вариационная маржа по позициям | DECIMAL(15,2) | |
Текущая доля на рынке в % | DECIMAL(15,2) | |
Плановая доля на рынке в % | DECIMAL(15,2) | |
Эффективная цена позиций | DECIMAL(15,4) | |
Таблица ограничений по клиентским счетам (фьючерсы) | Фирма | VARCHAR(12) |
Торговый счет | VARCHAR(12) | |
Тип лимита | VARCHAR(20) | |
Коэфф. ликвидности | DECIMAL(15,2) | |
Предыдущий лимит открытых позиций | DECIMAL(15,2) | |
Лимит открытых позиций | DECIMAL(15,2) | |
Текущие чистые позиции | DECIMAL(15,2) | |
Планируемые чистые позиции | DECIMAL(15,2) | |
Вариационная маржа по позициям | DECIMAL(15,2) | |
Накопленный доход | DECIMAL(15,2) |
5.6.2 Пример импорта транзакций.
В качестве примера приведена реализация стоп-приказов, обрабатываемых макросом в MS Excel. Подобным образом можно программировать и другие условия выполнения заявок.
Пример использует такие функции QUIK, как экспорт таблиц в MS Excel и импорт транзакций.
Общая схема функционирования стоп-заявок может выглядеть так:
1. Имеется список бумаг, которые необходимо отслеживать. Для каждой бумаги заданы граничные значения цен последней сделки по этому инструменту. Необходимо продать имеющиеся бумаги, в том случае, если цена последней сделки меньше или равна заданной граничной цене для определенной бумаги.
2. QUIK выводит данные из Таблицы сделок и Таблицы текущих значений параметров в Excel. Данные в таблицах отфильтрованы только по интересующим инструментам и набору параметров.
Таблица | Параметры |
Таблица текущих значений параметров | Код бумаги, Код класса, Цена последней сделки, Сессия |
Таблица заявок | Комментарий, Операция, Цена, Количество, Остаток, Объем, Состояние, Бумага, Код бумаги, Номер, Код класса, Счет |
Данные из Таблицы текущих значений параметров выводятся на лист «ТекПарам». Данные из Таблицы заявок выводятся на лист «Заявки» без заголовков строк.
3. В Excel’е к Таблице текущих значений параметров добавляются дополнительные столбцы, в которых указываются условия для выполнения заявки:
§ Порог цены – значение стоп-цены, при достижении которой инструмент будет выставлен на продажу,
§ Продавать по рыночной – условие для формирования заявки, для рыночной заявки принимается равным «1», для лимитированной – «0»,
§ Цена продажи – цена продажи инструмента (для лимитированной заявки),
§ Сколько продавать? – объем заявки, выраженный в лотах.

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

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

В этой функции просматриваются все бумаги в Таблице текущих значений параметров, начиная со второй строки (т. к. первая – заголовок таблицы) и кончая последней (UsedRange.Rows.Count). В том случае, если сессия открыта и цена последней сделки меньше либо равна указанной нами пороговой цены, макрос формирует строку с параметрами заявки на продажу и добавляет ее в конец .tri-файла. Код функции SaveTransaction можно посмотреть в примере StopLoss. xls.
6. QUIK проверяет наличие новых строк в .tri-файле, и обрабатывает их в случае поступления, осуществляет проверки как и при ручном вводе заявки и посылает в торговую систему. Результаты выводятся в файл сообщений <имя_файла>.tro, определенный пользователем.
5.6.3 Дополнительная информация к примеру:
http://www. *****/depot/trimp. zip - архив, содержащий примеры используемых файлов .tri, .tro, .trr и файл с примером макроса StopLoss.xls.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 |


