Руководство пользователя TAutoTrader DLL

 

Содержание

1. Подготовка к работе  2

1.1 Установка программы  2

1.2 Создание источника данных 2

1.3 Настройка QUIK для импорта транзакций  4

1.4 Настройка QUIK для экспорта данных о состоянии портфеля  4

1.5 Настройка QUIK для экспорта данных о денежных средствах 6

2. Работа с программой  6

2.1 Поддерживаемые функции  6

Функция MSPushOrder 7

Функция MSGetCurrentPortfolio  8

Функция MSGetCurrentPortfolioFORTS  9

Функция MSGetFreeMoney  9

Функция MSGetTotalMoney  9

2.2 Пример. Простейший индикатор  10

2.3 Пример. Продажа всех бумаг из портфеля  11


Введение

TAutoTrader.dll – программа, предназначенная для отправки заявок из Metastock в терминал QUIK. Программа реализована в виде динамической библиотеки (.dll)

Функции, входящие в состав

1.       Оптравка заявок в QUIK. Нет ограничений на число инструментов и торговых площадок с которыми можно работать.

2.       Получение текущего портфеля по бумаге. Кроме фьючерсов.

3.       Ведение журнала работы

 

1. Подготовка к работе

 

В дистрибутив входит три файла:

TAutoTrader.dll  - сама программа

TAutoTrader.reg – ключи реестра

TAutoTrader.mdb – база данных

TRANS2QUIK.dllAPI импорта транзакций, разработанный создателями QUIK (http://quik.ru/user/download/ )

1.       Поместить файл TRANS2QUIK.dll в системную папку Windows. Для Windows 95/98 это папка windows\system. Для более поздних – windows\system32

2.       Поместить файл TAutoTrader.dll в папку внешних функций Metastock. Если Metastock установлен в директорию “по умолчанию”, то полный путь к папке будет: “C:\Program Files\Equis\MetaStock\External Function DLLs

3.       Открыть для редактирования файл TAutoTrader.reg и задать пути к QUIK и файлу журнала.

ВНИМАНИЕ! Файл журнала должен существовать, создайте его сами.

ВНИМАНИЕ! Обратите внимание - пути указываются с двойными слешами

4.       Выполнить файл TAutoTrader.reg

5.       ОБЯЗАТЕЛЬНО перезапустить Metastock (если запущен) – иначе программа не “подхватится”, т.к Metastock загружает информацию о внешних функциях только при запуске.

1.2 Создание источника данных

Откройте панель управления (Control panel). Для этого выберите пункт меню Пуск->Настройки->Панель управления (Start->Settings->Control panel) Windows.

Запустите менеджер источников данных. Для этого зайдите в раздел Администрирование (Administrative tools) панели управления и выберите пункт Источники данных (Data sources ODBC).

На вкладке Пользовательские DSN (User DSN) нажмите кнопку Добавить (Add...)

Откроется окно выбора драйвера источника данных. Выберите драйвер Microsoft Access (как на рисунке ниже) и нажмите кнопку Finish.

Откроется окно добавления источника данных.

В поле Название источника данных (Data Source Name) напишите TAutoTrader.

В разделе База данных (Database) нажмите кнопку Выбрать (Select...) и укажите путь к файлу TAutoTrader.mdb

Нажмите кнопку OK.

1.3 Настройка QUIK для импорта транзакций

Для того, чтобы посылаемые программой заявки обрабатывались в Quik необходимо включить импрорт транзакций. Сделать это нужно в меню Quik  Торговля/Внешние транзакции

Установките галочку “Запускать процесс…”, чтобы не возиться с этим каждый раз при запуске Quik и нажмите кнопку “Начать обработку”. После этого окно можно закрывать, теперь при каждом старте Quik будет включать обработку внешних транзакций автоматически.

 

Для того, чтобы TAutoTrader мог получать данные о состоянии портфеля в Quik необходимо организовать экспорт таблицы лимитов по бумагам через ODBC в базу данных TAutoTrader.mdb.

ВНИМАНИЕ! Прежде чем приступать к настройке экспорта данных необходимо выполнить пункт “1.2 Создание источника данных”.

  • Создайте таблицу лимитов по бумагам вызвав пункт меню Лимиты/Лимиты по бумагам.
  • Отредактируйте таблицу, оставив в ней поля: Фирма, Код клиента, Счет депо, Код бумаги, Текущий остаток.
  • Настройте экспорт таблицы через ODBC. В качестве имени источника данных выберите TAutoTrader (Если п. 1.2 выполнен это имя должно быть в списке. Если нет – выполните пункт 1.2). Таблица для экспорта – Portfolio. Сопоставление полей: Фирма = Firm, Код клиента = ClientCode, Счет депо = Account, Код бумаги = Seccode, Текущий остаток = CurrentPortfolio.

Установите флажки “Чистить таблицу перед выводом” и “Вывод после создания”.

 

Для того, чтобы TAutoTrader мог получать данные о денежных средствах необходимо организовать экспорт таблицы “Клиентский портфель” через ODBC в базу данных TAutoTrader.mdb.

ВНИМАНИЕ! Прежде чем приступать к настройке экспорта данных необходимо выполнить пункт “1.2 Создание источника данных”.

  • Создайте таблицу лимитов по бумагам вызвав пункт меню Лимиты/Клиентский портфель.
  • Отредактируйте таблицу, оставив в ней поля: Фирма, Код клиента, Сумма денежных остатков, Текущие средства.
  • Настройте экспорт таблицы через ODBC. В качестве имени источника данных выберите TAutoTrader (Если п. 1.2 выполнен это имя должно быть в списке. Если нет – выполните пункт 1.2). Таблица для экспорта – Money. Сопоставление полей: Фирма = Firm, Код клиента = ClientCode, Сумма денежных остатков = FreeMoney, Текущие средства = TotalMoney.

Установите флажки “Чистить таблицу перед выводом” и “Вывод после создания”.

 

 

2. Работа с программой

2.1 Поддерживаемые функции

Программа написана таким образом, что разобраться с поддерживаемыми ей функциями будет не сложнее чем с встроенными производителем Metastock функциями – программа полностью интегрируется в него.

Если установка программы произведена правильно, то в окне списка функций (вызвать окно можно например из Indicator builder, нажав кнопку functions в редакторе формул) появится название TAutoTrader, выбор которого приведет к открытию списка поддерживаемых программой функций.

При выборе функции в нижней части окна приводится ее полное описание с указанием параметров. Расшифрофка значений параметров приводится в этом описании.

Функция MSPushOrder

Предназначена для отправки заявок из  Metastock в QUIK.

Параметры функции:

Название параметра

Описание

Account

Счет, с которого выставляется заявка. Посмотреть свой счет можно в QUIK. Например, в окне выставления заявки поле “Торговый счет”.

SecBoard

Код торговой площадки. В QUIK это поле называется “Код класса”.  Посмотреть можно например в таблице заявок (или сделок, или текущих параметров инструментов).

SecCode

Код инструмента. В QUIK это поле называется “Код бумаги”.  Посмотреть можно например в таблице заявок (или сделок, или текущих параметров инструментов).

Type

Тип заявки. В QUIK сейчас всегда все заявки лимитированные. В поле необходимо передавать “L

Price

Цена.

Quantity

Количество

Precision

Точность цены. (у всех бумаг разная точность – какие-то имеют точность 2 знака после запятой. Какие-то 3. у каких-то вообще нет дробной части. QUIK очень щепетильно относится к точности указания числа знаков в дробной части и не пропустит заявку с тремя знаками после запятой в цене, если установлено ограничение всего в два знака. Поэтому в этом поле необходимо передавать число знаков после запятой, установленное для инструмента, по которому выставляется заявка). Посмотреть точность цены для инструмента можно в текущей таблице параметров, поле “Точность”.

BuySell

Признак покупки или продажи. Для заявкина покупку должен быть равен 1. Для заявки на продажу равен -1.

Во всех остальных случаях – ноль.

ClientCode

Идентификатор клиента

 

Пример использования

ExtFml( "TAutoTrader.PushOrder", "SPBFUT00Z00", "SPBFUT", "GDH9", "L",  920.11, 1, 1,1)

Покупка одного контракта на золото на FORTS для счета SPBFUT00Z00. Обратите внимание, что поле Precision установлено в 1, тогда как в поле Price цена указана с точностью двух знаков после запятой. Лишние знаки программа отрежет автоматически, приведя формат цены в соответствие с требованием QUIK.

Функция MSGetCurrentPortfolio

Предназначена для получения значения текущего портфеля по инструменту (кроме FORTS) из QUIK.

Параметры функции:

Название параметра

Описание

Account

Счет, с которого выставляется заявка. Посмотреть свой счет можно в QUIK. Например, в окне выставления заявки поле “Торговый счет”.

SecCode

Код инструмента. В QUIK это поле называется “Код бумаги”.  Посмотреть можно в таблице заявок (или сделок, или текущих параметров инструментов).

ClientCode

Идентификатор клиента

 

Пример использования

CurrentPortfolio := ExtFml( "TAutoTrader.MSGetCurrentPortfolio","L01-00000F00" ,"FEES",”5678” );

Получение текущего количества в портфеле бумаги ФСК ЕЭС для счета L01-00000F00. Обратите внимание (ВАЖНО) – значение возвращается В БУМАГАХ (НЕ В ЛОТАХ) и для последующего использования требует коррекции на размер лота:

CurrentPortfolio := CurrentPortfolio / 100;

Функция MSGetCurrentPortfolioFORTS

Предназначена для получения значения текущего портфеля по инструменту для FORTS из QUIK.

Параметры функции:

Название параметра

Описание

Account

Счет, с которого выставляется заявка. Посмотреть свой счет можно в QUIK. Например, в окне выставления заявки поле “Торговый счет”.

SecCode

Код инструмента. В QUIK это поле называется “Код бумаги”.  Посмотреть можно в таблице заявок (или сделок, или текущих параметров инструментов).

 

Пример использования

CurrentPortfolio := ExtFml( "TAutoTrader.MSGetCurrentPortfolioFORTS","SPBFUT77Z78" ,"RIZ0" );

Получение текущего количества в портфеле фьючерса на индекс РТС для счета SPBFUT77Z78. Обратите внимание (ВАЖНО) – значение возвращается В БУМАГАХ.

Функция MSGetFreeMoney

Предназначена для получения значения свободных денежных редств из QUIK

Параметры функции:

Название параметра

Описание

Account

Номер счета. Посмотреть свой счет можно в QUIK. Например, в окне выставления заявки поле “Торговый счет”.

ClientCode

Идентификатор клиента

 

Пример использования

CurrentPortfolio := ExtFml( "TAutoTrader.MSGetFreeMoney","L01-00000F00" ,"5678" );

Функция MSGetTotalMoney

Предназначена для получения значения текущей денежной оценки размера счета из QUIK (рублевая оценка открытых позиций плюс свободные денежные средства). 

Параметры функции:

Название параметра

Описание

Account

Номер счета. Посмотреть свой счет можно в QUIK. Например, в окне выставления заявки поле “Торговый счет”.

ClientCode

Идентификатор клиента

 

Пример использования

CurrentPortfolio := ExtFml( "TAutoTrader.MSGetTotalMoney","L01-00000F00" ,"5678" );

 

2.2 Пример. Простейший индикатор

 

Сначала определяется условие покупки – последний бар и пересечение снизу вверх однопериодной просто скользящей средней двухпериодной.

BS := If(Cross(Mov(C,1,S),Mov(C,2,S)) AND Year()=LastValue(Year()) AND Month()=LastValue(Month()) AND  DayOfMonth()=LastValue( DayOfMonth())AND  Hour()=LastValue(Hour()) AND Minute()=LastValue(Minute()),

1,0);

 

Затем выставляется заявка на покупку.

ExtFml( "TAutoTrader.MSPushOrder","acc" ,"secb" ,"secc" ,"L" ,20.55 ,1 ,1, LastValue(BS),”000”);

 

 

Получаем значение портфеля по бумаге.

CurrentPortfolio := ExtFml( "TAutoTrader.MSGetCurrentPortfolio","L01-00000F00" ,"SBER03",”000” );

CurrentPortfolio := CurrentPortfolio / 1; (Это преобразование можно не делать когда размер лота равен единице, естественно. В остальных случаях оно необходимо).

Отправляем заявку на продажу всех бумаг.

ExtFml( "TAutoTrader.MSPushOrder","acc" ,"secb" ,"secc" ,"L" ,20.55 , CurrentPortfolio ,1,-1,”000”);