[ Видео QuikOrdersDOM >> ]

1) Назначение

2) Настройка

3) Порядок запуска, стаканы

4) Базовый функционал скальперского привода: стакан QuikOrdersDOM, отправка/снятие заявок

5) Стоп-заявки и скользящие стоп-заявки

6) Горячие клавиши, визуальные изменения настроек, сохранение

7) Расширенный функционал скальперского привода: дополнительные функции

8) Напоминания

9) Автостарт

10) Модули автотрейдинга и QuikOrdersDOM SDK

11) Файл протокола QuikOrdersDOM.log

12) Возможные проблемы


1) Назначение

Программа предназначена для работы профессиональных трейдеров на фондовых биржах, совершающих большое количество сделок с большой скоростью. Программы такого класса получили название “скальперский привод” в трейдерской среде Программа расширяет стандартный функционал торгового терминала QUIK (ARQA Technologies, www.quik.ru) в направлениях быстрой (до нескольких сотен сделок в минуту), полуавтоматизированной, а также полностью автоматизированной торговли на биржах ММВБ и РТС. QuikOrdersDOM представлят собой скальперский привод с расширенным функционалом. Кроме того, QuikOrdersDOM является платформой для разработки пользовательских механических торговых систем.

Наверх


2) Настройка

Все изменения в настройки программы можно внести с помощью любого текстового редактора в файл настроек QuikOrdersDOM.ini, который находится в каталоге программы. Все изменения должны быть внесены до запуска программы. Изменения, внесенные в файл настроек после запуска программы
вступят в силу только после ее следующего запуска. Некоторые настройки программы можно изменить после запуска программы, средствами ее
интерфейса (такие как положение, размер окна, ширины столбцов стакана и проч.). Сохранить изменения, внесенные средствами интерфейса можно
с помощью кнопки “сохранить настройки”(рис1.#1). Файл настройки программы имеет структуру стандартного ini-файла: Каждая строка содержит строки вида
<Имя параметра>=<Значение параметра> для параметров настройки либо имя секции настроек в квадратных скобках, либо любую другую строковую
информацию, которая игнорируется программой, но может быть использована в качестве комментария. Любой символ (или символы), добавленный
вначале строки настройки параметра делают эту настройку строкой, игнорируемой программой при загрузке файла настроек.
В QuikOrdersDOM.ini для комментирования используются два символа слэш (”//”). Назначение всех настроек описано в этом файле, в строках
комментариев.

Основные настройки, без которых невозможна нормальная работа программы, это:

1. Путь к QUIK

2. Идентификатор счета ММВБ (если есть), идентификатор счета FORTS (если есть)

Эти настройки можно установить в режиме диалога(рис.1#2) при первом запуске QuikOrdersDOM, или с помощью соответствующих параметров файла настроек
QuikOrdersDOM.ini. Также диалог первого запуска можно вызвать в любой момент из интерфейса программы (Кнопка “Быстрые настройки”)(рис.1#3)

Наверх

3) Порядок запуска, стаканы.

Если значение настройки QuikOrdersDOM “Конфигурировать QUIK” установлено в “1″(ConfigureQUIK=1) и производится первый запуск программы, либо были изменены настройки,
связанные со способом импорта транзакций, то необходимо запускать QuikOrdersDOM первым. В остальных случаях порядок запуска QuikOrdersDOM и QUIK не имеет значения.
После успешного запуска обеих программ в выпадающем списке доступных инструментов в правой панели QuikOrdersDOM(рис2.#1) можно будет увидеть тикеры всех инструментов, для которых открыты стаканы в QUIK. После выбора необходимого инструмента в выпадающем списке QuikOrdersDOM в правой панели – в левой панели будет отображен котировальный стакан по этому инструменту(рис2.#2). С его помощью можно будет выставлять и снимать заявки и стоп-заявки.

Наверх

4) Базовый функционал скальперского привода: стакан QuikOrdersDOM, отправка/снятие заявок.

Стакан QuikOrdersDOM представляет из себя таблицу, включающую следующие столбцы (слева направо):

1. Собственный объем на продажу

2. Объем на продажу

3. Цена

4. Объем на покупку

5. Собственный объем на покупку

6. Стоп-заявки

Красным фоном подсвечиваются заявки на продажу, зеленым – на покупку.

Выставить заявку на покупку можно двумя способами:

1) Щелчком левой кнопки мыши в столбце “Объем на продажу” стакана(рис2.#9). Количество контрактов (лотов) будет определяться значением, указанным в поле “Количество контрактов” в правой панели QuikOrdersDOM. Цена, по которой будет отправлена заявка, будет определяться ценой в строке стакана, на которой произведен щелчок(рис2.#10), и указанным в правой панели QuikOrdersDOM, значением. Значение смещения(рис2.#11) будет прибавлено к значению цены(рис2.#10). Ненулевое смещение может быть использовано для выставления заявки по цене на несколько пунктов лучше, чем лучшая цена покупки.

2) Вбить цену покупки в поле “Цена” в правой панели QuikOrdersDOM и нажать кнопку “Купить“(рис2.#12). Щелчок левой кнопкой мыши в колонке “Цена” приведет к появлению соответствующего значения цены в поле “Цена” в правой панели QuikOrdersDOM.

Выставить заявку на продажу можно двумя способами:

1) Щелчком левой кнопки мыши в столбце “Объем на покупку” стакана(рис2.#14). Количество контрактов (лотов) будет определяться значением, указанным в поле “Количество контрактов” в правой панели QuikOrdersDOM. Цена, по которой будет отправлена заявка(рис2.#15), будет определяться ценой в строке стакана, на которой произведен щелчок, и указанным в правой панели QuikOrdersDOM, значением. Значение цены будет уменьшено на значение смещения(рис2.#11). Ненулевое смещение может быть использовано для отправки заявки по цене на несколько пунктов лучше, чем лучшая цена продажи.

2) Вбить цену продажи в поле “Цена” в правой панели QuikOrdersDOM и нажать кнопку “Продать“(рис2.#13).

Таким образом, клики левой кнопкой мыши в столбцах “Объем на покупку” или “Объем на продажу” приводят к формированию заявки “по рынку”(рис2.#17), если в столбце объема имеется ненулевое значение.Клики левой кнопкой мыши в столбцах “Объем на покупку” или “Объем на продажу” приводят к формированию заявки по цене(заявка типа “встать в стакан” (рис2.#16)), указанной в строке, на которой произведен клик, если в столбце объема пустое значение.
Выставить заявки на покупку и на продажу “по рынку” можно с помощью кнопок “Куп. рын“, “Прод. рын“(рис2.#19) и соответствующих им горячих клавиш. При этом выставляются лимитные заявки по лучшей цене предложения (или спроса) с поправкой на значение настройки “Рыночный спрэд”( MarketSpread=5).
Выставить заявки на покупку и на продажу по цене, на один или несколько пунктов лучше, чем лучшая цена покупки (лучшая цена продажи) можно с помощью кнопок “Куп. рын+“, “Прод. рын.+“(рис2.#20) и соответствующих им горячих клавиш. При этом выставляются лимитные заявки по лучшей цене предложения (или спроса) с поправкой на значение настройки “Смещение значения цены при отправке лимитных заявок(рис2.#11)”
Количество контрактов, выставляемых заявкой можно задать в поле “Количество контрактов” в режиме полного отображения окна программы. Регулировать количество контрактов в режиме компактного отображения можно нажимая цифровые клавиши, в этом случае режим отображения будет переведен в полную форму на 1 секунду, а введенные цифры будут приняты в качестве нового объёма количества контрактов.
Снять неисполненную лимитную заявку, выставленную в QuikOrdersDOM можно кликом правой кнопки мыши в столбце колонке заявки на уровне цены заявки, либо в колонке “свой” на уровне цены заявки.
Снять все неисполненные заявки можно с помощью кнопки “Снять все заявки”(рис2.#18), или соответствующей ей горячей клавишей.

Наверх

5) Стоп-заявки и скользящие стоп-заявки.

В QuikOrdersDOM предусмотрен механизм локальных стоп-заявок, аналогичных заявкам “стоп-лосс” в QUIK: Стоп-заявка форминует лимитную рыночную заявку на покупку или продажу при достижении определенного уровня цены по инструменту.

Стоп-заявка на покупку формирует рыночную заявку на покупку при достижении значения цены по торгуемому инструменту выше определенного уровня(стоп-цены) .

Стоп-заявка на продажу формирует рыночную заявку на продажу при достижении значения цены по торгуемому инструменту значения ниже стоп-цены.

С помощью настройки “SendSimpleStopsToQUIK” в файле QuikOrdersDOM.ini, или опции “Выставлять стопы в QUIK” в программе QuikOrdersDOM на закладке “Настройки”(рис.3#1)
можно указать, будут ли стоп-заявки передаваться на сервер QUIK брокера, либо храниться и исполняються средствами клиентской локальной стороны.

Установить стоп-заявку можно щелчком левой кнопки мыши в 6й колонке стакана QuikOrdersDOM(рис.3#2), с заголовком “стоп”. Количество контрактов (лотов) будет определяться значением, указанным в поле “Количество контрактов” в правой панели QuikOrdersDOM. Стоп-цена, по которой будет сформирована стоп-заявка, будет определяться ценой в строке стакана, на которой произведен щелчок. В 6й колонке стакана будет отображаться суммарное количество контрактов(лотов) по всем установленным стоп-заявкам по ценам в промежутке от текущей до следующей цены в стакане. Красным фоном подсвечиваются стоп-заявки на продажу, зеленым – на покупку(рис.3#4 и рис.3#3).Чтобы установить стоп заявку по определенной цене другим способом можно также вбить цену в поле “Цена” в правой панели QuikOrdersDOM и нажать кнопку “Стоп”.

Лимитная заявка по стоп-заявке формируется и отправляется в систему только в случае, если стоп-цена, или большая(в случае продажи меньшая) оказалась в противоположной области стакана (для покупок – в области продаж, для продаж – в области покупок). Пока цена находится в области, противоположной стоп-заявке, или внутри спрэда спрос-предложение, лимитная заявка сформирована и отправлена в систему не будет.

Снять стоп-заявку можно щелчком правой кнопки мыши на соответствующей стоп-заявке. Если между ценой снимаемой стоп-заявки и следующей ценой установленно несколько стоп-заявок, то снята будет только стоп-заявка, установленная первой. Снять все неисполненные стоп-заявки можно с помощью кнопки “Снять все стопы”(рис.3#5), или соответствующей ей горячей клавишей.
В QuikOrdersDOM предусмотренна функция одновременного выставления связки заявки и стоп-заявки. Использовать эту функцию можно с помощью клика правой кнопки в колонку объёма покупок или продаж стакана QuikOrdersDOM с зажатой клавишей shift. При этом заявка будет отправлена по цене, указанной в колонке “цена” строки, на которой произведен клик с поправкой на настройку “Смещение значения цены при отправке лимитных заявок в пунктах цены”(рис.2#11)(DefaultLimitOrderShift) в направлении к границе покупок и продаж стакана, а стоп заявка будет выставлена по цене, указанной в колонке “цена” строки, на которой произведен клик с поправкой на настройку “Смещение значения цены при отправке лимитных заявок c одновременным стопом в пунктах цены”(рис.2#21)(DefaultLimitStopShift) в направлении “вглубь” стакана.
Скользящие стоп-заявки – это такие стоп-заявки, стоп-цена которых перемещается за ценой инструмента так, чтобы разница между ценой инструмента и уровнем стоп цены всегда была не более заданной величины, которая задается (в шагах цены по инструменту) в окне редактирования “Отступ при скольжении”(рис.3#6) на закладке “Настройки” программы или настройкой “SlidingIndent” в файле QuikOrdersDOM.ini. Кроме того, стоп-цена скольящей заявки может иметь собственную скорость перемещения в направлении цены инструмента, на случай, если цена инструмента не перемещается в направлении от стоп-заявки в течении длительного времени. Этот параметр настраивается в окне редактирования “Скор, ï/час” на закладке “Настройки”(рис.3#7) программы или настройкой “SlidingSpeed” в файле QuikOrdersDOM.ini. Скорость устанавливается в пунктах цены в час. Выставить скользящую стоп-заявку можно, совершив клик в колонке “стоп”(рис.3#2) и зажав клавишу SHIFT, либо кнопкой “Ск ст” на закладке “Основное” программы, предварительно выставив стоп-цену в окне ввода “Цена”. Визуально скользящие стоп-заявки отличаются от обычных наличием мигающего символа “.” рядом со значением объёма.

С помощью настройки “SendSlidingStopsToQUIK” в файле QuikOrdersDOM.ini, или опции “Выставлять скольз. стопы в QUIK” в программе QuikOrdersDOM на закладке “Настройки” можно указать, будут ли стоп-заявки отправляться на сервер QUIK брокера, либо храниться и исполняються средствами клиентской локальной стороны(рис.3#8).

Иногда уровни стоп-заявок выходят из зоны видимости стакана. Для того, чтобы было возможно определить, имеются ли стоп заявки в системе по данному инструменту, К заголовку колонки “Стоп”(рис.2#6) добавляется символ “!“, если стоп-заявки в системе выставлены.

Наверх

6) Горячие клавиши, визуальные изменения настроек, сохранение.

Для таких функций, как “Купить по рынку“, “продать по рынку“, “Купить по рынку+“, “Продать по рынку+“, “Снять все заявки“, “Снять все стопы” можно назначить горячие клавиши(рис.4#3). Сделать это можно в правой панели QuikOrdersDOM, на закладке “Настройки”. Горячие клавиши работают только когда окно программы находится в фокусе, а активная закладка в правой панели QuikOrdersDOM – “Основное”

Кроме горячих клавиш средствами интерфейса можно изменять и другие, визуальные настройки интерфейса, такие как положение окна программы, высота, ширина в полном и коротком варианте, положение “поверх всех окон”(рис.4#1), Ширина панели стакана, ширина столбцов стакана. Все эти параметры можно сохранить в файл настроек QuikOrdersDOM.ini нажатием кнопки “Сохранить текущие настройки”(рис.4#2) (или комбинацией клавиш Ctrl+S)

Наверх

7) Расширенный функционал скальперского привода: дополнительные функции

Включить дополнительные функции можно на закладке “Настройки” в правой панели окна QuikOrdersDOM в полном(широком) формате, либо в файле QuikOrdersDOM.ini установить настройку “ON” раздела [EXTFUNCTIONS] в 1. В этом разделе ini-файла настраиваются все параметры дополнительных функций.

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

Дополнительных функций три:

1) TakeSpread.

Функция предназначена для отправки сразу двух заявок: на покупку и на продажу. Очень часто волатильность рынка позволяет получать прибыль таким приёмом меньше, чем за 1 секунду. Иногда заявки, когда они приходят в QUIK, можно увидеть уже исполненными. Параметр функции “Отступ тейк спрэд” позволяет настроить в шагах цены положение заявок относительно текущих лучших спроса и предложения: 0 – заявки по лучшей цене спроса и предложения;1 заявки на 1 шаг цены в направлении от границы текущих bid и ask; -1 – заявки на 1 шаг внутри текущего спрэда и ò.ä.

Если включена настройка “тейк спрэд стоп”, то одновременно с заявками выставляются 2 стоп-заявки. Положение стоп-заявок определяется настройкой “Смещение цены для стоп заявок”. Чтобы применить функцию, необходимо щелкнуть на кнопку “тейк спрэд” на панели дополнительных функций

2) TakeSpreadBot.

Функция работает аналогично TakeSpread, но полностью в автономном режиме. Пара заявок выставляется в случае, если спрэд между лучшей покупкой и лучшей продажей больше или равен заданного в настройке “Спрэд для TSBot” (значение в шагах цены). Активизируется работа TakeSpreadBot кнопкой “Активность TakeSpreadBot” в верхней панели дополнительных функций (над стаканом котировок)

3) FrontRunBot.

Эта функция в полуавтоматическом режиме реализует скальперскую технологию “FRONT RUN”. Технология состоит в следующем: как только у границы bid/ask стакана появляется заявка на большой объём,автоматически перед ней выставляется своя заявка, в рассчете на то, что крупная заявка будет “съедена” сразу с малой вероятностью и от нее скорее всего, произойдет отскок, на котором можно зафиксировать прибыль. Либо закрыть убыток об эту же большую заявку, если в процессе развития событий отскок не наблюдается.

Параметры:

FR контр. объём” – Объём, который считается необходимым для входа в позицию

FR стоп” – если опция установленна, то при входе в позицию сразу будет выставлена стоп-заявка.Положение стоп-заявок определяется настройкой “Смещение цены для стоп заявок”

FR конт. задержка” Задержка (в циклах программы) перед входом в позицию. Вход будет произведен, если за это время контрольный объём останется. Параметр введен для защиты от больших заявок, которые выставляются и быстро снимаются

FR пауза после вх“. Задержка (в циклах программы) после входа в позицию, в течении которой новые входы выполняться не будут, даже в случае выполнения условий входа.

FR тейк профит” – если опция включена – будет одновременно выставлена лимитная заявка на закрытие позиции с прибылью, указанной в этой настройке (в шагах цены), с отступом от “большой” заявки, на количество шагов цены, указанное в настройке

FR глубина стакана” – глубина стакана в шагах цены, в которой будет учитываться критический объём для входа в позицию.

Кнопки на панели управления дополнительными функциями:

Разрешить FR-покупки” – если кнопка утоплена, автомат следит за объёмом на покупку

Разрешить FR-продажи” – если кнопка утоплена, автомат следит за объёмом на продажу

Звук при FR заявках” – если кнопка утоплена, автомат сопровождает звуковым сигналом ситуацию для входа в позицию по разрешенным направлениям (покупка è/или продажа)

FR-активность” – если кнопка утоплена, автомат выставляет заявки (и стоп заявки, если настроено) по сигналам на вход по разрешенным направлениям (покупка è/или продажа)

Вход не будет выполнен, если контрольный объём наблюдается на обоих границах стакана
Заявка на вход в позицию отправляется со смещением цены, указанным в настройке “Смещение цены для лим. заявок”

В настройках дополнительных функций FrontRunBot, TakeSpread и TakeSpreadBot имеется опция “связные заявки“. Если эта опция выбрана и лимитные заявки выставляются одновременно со стоп-заявками, тогда, в случае исполнения стоп-заявки лимитная заявка будет снята, и наоборот, в случае исполнения лимитной заявки, стоп-заявка будет снята.

4) Индикатор баланса объёмов.

Индикатор отображает процентное соотношение объёмов рыночных покупок и продаж в заданном настройками периоде. Рыночная покупка или продажа – это ответная заявка на заявку из “стакана”. Движение цены создается фактически этими заявками. Соотношение объемов этих заявок в краткосрочном периоде сигнализирует о том, находятся ли покупающие участники в балансе сил с продающими, либо одна из сторон доминирует, что с большой долей вероятности создает соответствующее движение.
Настройки индикатора находятся в панели дополнительных функций, на закладке “VBalance”. Для старта работы индикатора необходимо выбрать опцию “Вкл”. Если все настроено верно, отображение индикатора будет динамически изменяться.

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

Параметр “Объёмы за мс” отвечает за период времени, в миллисекундах, объёмы в котором будут анализироваться. Например, значение 60000 (что соответствует 60 сек.), приведет к анализу объёмов для индикации за последнюю минуту.
Параметр “Пороговый процент” задает отклонение баланса в процентах от 50, для которого индикатор, в зависимости от направления отклонения сигнализирует красным (дисбаланс в сторону продаж), либо зеленым (дисбаланс в сторону покупок). Поля под окном параметра “Пороговый процент” отвечают за динамическое отображение соотношения объёмов рыночных покупок/продаж в процентах и абсолютных значениях.

Внимание!!! Для того, чтобы работа функции была возможна, необходимо, чтобы инструмент на закладке “Основное” QuikOrdersDOM был выбран, а в QUIK была открыта “Таблица всех сделок”

Наверх

8) Напоминания.

В QuikOrdersDOM имеется функция “Напоминания” – короткие сообщения, которые появляются в заданные промежутки времени. Настроить список напоминаний можно в файле настроек QuikOrdersDOM.INI в разделе [ALARMS]. Формат напоминания :

ALARM<номер напоминания>=”<время начала напоминания ЧЧ:ММ>-<время окончания напоминания ЧЧ:ММ> Текст напоминания”

ALARM<номер напоминания>=”<время начала напоминания ЧЧ:ММ>-<время окончания напоминания ЧЧ:ММ> Текст напоминания”

Пример: ALARM1=”13:58-14:00 Дневной клиринг”

Для отображения напоминания используется время локального компьютера.

Наверх

9) Автостарт.

Существует возможность автоматически запускать QUIK вместе с QuikOrdersDOM или отложенно, в назначенное время. Чтобы запускать QUIK вместе с QuikOrdersDOM,необходимо выбрать опцию “Автостарт QUIK” в программе QuikOrdersDOM на закладке “Настройки”, или установить в “1″ значение настройки “AutoStartQuik” в файле QuikOrdersDOM.ini.

Также, можно указать время старта QUIK в окне ввода рядом с опцией “Автостарт QUIK” в программе QuikOrdersDOM на закладке “Настройки”, или установить время в формате “ЧЧ:ММ” в настройке “AutoStartQuikAt” в файле QuikOrdersDOM.ini. В этом случае QUIK будет запущен не ранее этого времени по локальным часам компьютера, на котором установлена программа: Если QuikOrdersDOM запущен до установленного времени – программа встанет в режим ожидания до настроенного времени, а потом произойдёт запуск QUIK. Если QuikOrdersDOM запущен после установленного времени – автостарт QUIK произойдет сразу.

Кроме того, при автозапуске QUIK имеется возможность автоматического ввода имени пользователя и пароля в QUIK и соединение с сервером. Если на закладке ввода “Имя” и “Пароль” будут указаны имя пользователя и пароль в QUIK,
то при автозапуске QUIK будет произведено соединение QUIK с сервером по указанным имени пользователя и паролю. Настроить эти параметры также можно в файле login.ini в папке QUIK в настройках “UserName” и “Password” в разделе [LOgin].

[С помощью опции "Автостарт QuikOrdersDOM" также можно установить автозапуск QuikOrdersDOM вместе с запуском операционной системы. Все эти настройки ссовокупностью с использованием модулей автотрейдинга позволяют использовать QuikOrdersDOM как автономную механическую торговую систему.]

ВНИМАНИЕ! Функция “Автостарт QuikOrdersDOM” отключена в пользовательской версии программы из-за конфликта этой функции с антивирусной программой ESET NOD32. Для автоматического запуска QuikOrdersDOM одновременно с запуском операционной системы необходимо самостоятельно создать ярлык для программы и поместить его в раздел “Автозагрузка” меню “Пуск”

Наверх

10) Модули автотрейдинга и QuikOrdersDOM SDK.

QuikOrdersDOM позволяет использовать модули автотрейдинга автоматизированной торговли. Модули могут быть реализованны на любом языке программирования для Windows. Чтобы использовать модуль автотрейдинга, необходимо, чтобы библиотека автотрейдинга была помещена в подпапку lib каталога программы. имя библиотеки автотрейдинга должно быть указано в настройке “LibName” файла QuikOrdersDOM.ini, либо выбрано через интерфейс в закладке “Настройка” в окне ввода “библиотека автотрейдинга”.

Для того, чтобы создать библиотеку автотрейдинга необходимо на любом языке программирования скомпилировать dll библиотеку, экспортирующую по имени 3 обязательных и 2 необязательных функции. Здесь и далее будет использоваться синтаксис языка Object Pascal, используемый в Borland Delphi (7+), для программистов на других языках не составит труда перевести в синтаксис своего языка.

AT_LIB_INIT name ‘AT_LIB_INIT‘ ;

AT_LIB_CYCLE name ‘AT_LIB_CYCLE‘;

AT_LIB_DONE name ‘AT_LIB_DONE‘;

function AT_LIB_INIT (T : TLibInitialRecord): Cardinal; stdcall;

function AT_LIB_CYCLE: Cardinal ; stdcall;

function AT_LIB_DONE: Cardinal ; stdcall;

AT_LIB_INIT функция получает управление 1 раз, при инициализации библиотеки, в функции предполагается инициализация переменных и объектов, выделение памяти.

AT_LIB_CYCLE функция получает управление каждый цикл опроса памяти QUIK, в функции предполагается анализ рыночных данных, принятие торговых решений, генерация торговых сигналов

AT_LIB_DONE функция получает управление при завершении работы программы, в функции предполагается освобождение памяти, процедуры финализации.

Небязательные функции :

AT_LIB_SETUP name ‘AT_LIB_SETUP‘;

AT_LIB_ABOUT name ‘AT_LIB_ABOUT‘;

function AT_LIB_SETUP: Cardinal ; stdcall;

function AT_LIB_ABOUT: Cardinal; stdcall;

AT_LIB_SETUP функция получает управление при нажатии кнопки “Настройка” в закладке “Настройки” интерфейса QuikOrdersDOM, в функции предполагается реализация интерфейса настройки параметров системы автотрейдинга

AT_LIB_ABOUT функция получает управление при нажатии кнопки “О модуле” в закладке “Настройки” интерфейса QuikOrdersDOM, в функции предполагается реализация информационного интерфейса о модуле и о его авторе.

Для реализации модуля автотрейдинга необходимо в раздел uses подключить модуль uATLibrary.pas, в котором описаны структуры и функции для работы. Для других языков модуль придется переписать под соответствующий синтаксис.

Структуры, описанные в uATLibrary.pas

TLibInitialRecord – структура, содержащая описание данных и функций, доступных для работы с QuikOrdersDOM. Переменная такой структуры при инициализации в функцию AT_LIB_INIT. Доступ ко всем функциям и данным QuikOrdersDOM можно получить через эту переменную.

Эта структура состоит из:

CycleNumPtr : PCardinal - указатель на номер цикла. Циклы отсчитываются с нуля с момента запуска QuikOrdersDOM
PPath : PChar ; - путь до QuikOrdersDOM
QuotesArrayPtr : PAtQuoteArray ; - указатель на массив котировки текущего инструмента в QuikOrdersDOM (стакан заявок)
BestBuyQuotePP : PPAtQuote ; - указатель котировку лучшей покупки в этом стакане
BestSellQuotePP : PPAtQuote ; - указатель котировку лучшей продажи в этом стакане
QuotesCntPtr : PCardinal ; - указатель на количество заявок в стакане
fATLibLog : TATLibLog ; - функция записи строки в log-файл
fATLibSendOrder : TATLibSendOrder ; - функция отправки заявки по текущему инструменту
fATLibClearAllOrders : TATLibClearAllOrders ; - функция отмены всех заявок
fATLibSendStopOrder : TATLibSendStopOrder ; - функция отправки стоп-заявки
fATLibClearAllStopOrders : TATLibClearAllStopOrders ; - функция отмены всех стоп-заявок
fATLibNextVal : TATLibNextVal ; - функция, возвращающая уникальный, монотонно возрастающий номер
fATLibQuikIsOnline : TLibSimpleFunc ; - функция проверки соединения QUIK с сервером
fATLibGetQuotesCount : TATLibGetQuotesCount ; - функция получения кол заявок в стакане по любому инструменту из тех,по которым открыт стакан
fATLibGetQuotes : TATLibGetQuotes ; - функция получения заявок в стакане по любому инструменту из тех, по которым открыт стакан QUIK
fATLibGetOrderInfo : TATLibGetOrderInfo ; - функция получения информации о своей заявке по индексу
fATLibGetOrdersCount : TATLibGetOrdersCount ; - функция получения количества заявок
fATLibGetSecInfo : TATLibGetSecInfo ; - функция получения информации о любой бумаге, по которой открыт стакан QUIK
fATLibGetSecCount : TATLibGetSecCount ; - функция получения количества бумаг, по которым открыт стакан
fATLibSendOrderEx : TATLibSendOrderEx; - функция отправки заявки по любой бумаге
fATLibClearOrderById : TATLibClearOrderById; - функция снятия заявки по Id
fATLibGetCustomSecInfo : TATLibGetCustomSecInfo ; - функция получения информации о любой бумаге, включая те, по которым стакан QUIK не открыт
fATLibGetCurrentSecInfo : TATLibGetCurrentSecInfo ; - функция получения информации о текущей бумаге, выбранной в QuikOrdersDOM в текущий момент
fATLibSecIdxByTicker : TATLibSecIdxByTicker ; - функция получения индекса бумаги в QUIK по её текстовому тикеру.
fATLibGetServerDate : TATLibGetServerDT ; - функция получения текущей даты
fATLibGetServerTime : TATLibGetServerDT ; - функция получения текущего времени
fATLibGetFormRect : TATLibGetFormRect ; - функция получения координат и размеров окна QuikOrdersDOM
fATLibRefreshOrders : TLibSimpleFunc ; - функция обновления данных о заявках в QUIK
fATLibGetAllTradesCount : TLibSimpleFunc ; - функция получения количества всех сделок
fATLibGetTradeInfo : TATLibGetTradeInfo ; - функция получения информации о сделке
fATLibGetFORTSPosCount : TLibSimpleFunc ; - функция получения количества записей о инструментах в портфеле FORTS
fATLibGetFORTSPos : TATLibGetFORTSPos ; - функция получения информации о иснструменте FORTS в портфеле по номеру
fATLibGetFORTSPosByTicker : TATLibGetFORTSPosByTicker; - функция получения информации о иснструменте FORTS в портфеле по тикеру
fATLibSendSlidingStopOrder : TATLibSendStopOrder ; - функция отправки скользящего стопа
fATLibSendCustomOrder : TATLibSendCustomOrder ; - функция отправки заявки с указанием торгового счета и дополнительных параметров транзакции
fATLibGetSecTableInfo : TATLibGetSecTableInfo ; - функция получения динамических параметров об инструменте
fATLibDown : TATLibDown ; - функция прекращения работы
fATLibGetOwnTradesCount : TATLibGetOwnTradesCount ; - функция возвращает количество собственных сделок
fATLibGetOwnTrade : TATLibGetOwnTrade ; - функция возвращает информацию о собственной сделке
fATLibRegisterObject : TATLibRegisterObject ; - функция регистрирует указатель на объект
fATLibUnRegisterObject : TATLibUnRegisterObject ; - функция снимает с регистрации ранее зарегистрированный рбъект
fATLibGetRegisteredObject : TATLibGetRegisteredObject ; - функция возвращает указатель на ранее зарегистртрованный объект
fATLibGetFORTSLimitsCount :TATLibGetFORTSLimitsCount ; - Функция возвращает количество строк в таблице лимитов
fATLibGetFORTSLimitInfo TATLibGetFORTSLimitInfo ; - функция возвращает информацию о лимитах
wReserved : array [0..968] of byte ; - зарезервировано

Другие важные структуры в uATLibrary.pas:

TSecInfo = packed record // информация о бумаге

Idx : integer ; индекс бумаги в QUIK.Не изменяется в одной сессии QUIK
SecTicker : TCharArr20; тикер
SecClass : TCharArr20; класс
SecBaseActive : TCharArr20; базовый актив
SecISIN : TCharArr20; ISIN-код
PriceStep : Cardinal ; шаг цны
Precision : Cardinal ; точность
Expiration : TCharArr20 ; дата экспирации
LotSize : Cardinal ; размер лота

TOrderInfo = packed record // информация о заявке (своей)

Id : Cardinal ; для заявок, отправленных из ATLib
State : byte ; Состояние для лимитных заявок
OrderDirection : TATOrderDirection ; направление (покупка/продажа)
SecIdx : integer ; номер бумаги (по нумерации QUIK)
SecTicker : TCharArr20; тикер бумаги
SecClass : TCharArr20; класс бумаги
Price : double ; цена
Quantity : integer; количество
TRANS_ID : Cardinal ; номер транзакции
OrderNum : Cardinal ; номер заявки
Rest : Cardinal ; остаток

TSecTableInfo=packed record // информация о динамических параметрах бумаги

BidPrice : double ; Лучшая цена спроса
OfferPrice : double ; Лучшая цена предложения
BidQuantity : Cardinal ; Количество контрактов по лучшему спросу
OfferQuantity : Cardinal ; Количество контрактов по лучшему предложению
Volume Cardinal Количество контрактов (оборот)
LastTradeTime : TDateTime Время последней сделки
UpperLimit : double ; Максимальное возможное значение цены
LowerLimit : double ; Минимальное возможное значение цены
LastPrice : double ; цена последней сделки
LastTradeQuantity : Cardinal ; количествово контрактов по посл. цене
OpenedQuantity : Cardinal ; открытый интерес
StepPriceT : double ; Стоимость шага цены в рублях

TATQuote=packed record // информация о заявке (в стакане)

Price : double ; цена
Quantity : Cardinal ; количество
SelfQuantity : Cardinal ; свой объём (транслируется, только если в стакане QUIK по инструменту присутствует колонка “свой объём”)
Direction : TATOrderDirection ; направление (покупка или продажа)

TTradeInfo = packed record // информация о сделке

N :Cardinal ; номер сделки
SecIdx : Cardinal ; индекс бумаги в QUIK
TradeDT : TDateTime; время сделки
Price : double ; цена
Quantity : Cardinal ; количество
OrderDirection : TATOrderDirection ; направление
Volume : Double ; объём в рублях

TATQuoteArray = array[0..1048576] of TATQuote ; // весь стакан

Детальное описание данных и функций структуры TLibInitialRecord

QuotesArrayPtr : PAtQuoteArray; указатель на массив котировки текущего инструмента в QuikOrdersDOM (стакан заявок) по инструменту(бумаге,фьючерсу или опциону),
который выбран в QuikOrdersDOM в настоящий момент. Стакан заявок по этому инструменту доступен через этот массив, без вызова
специальных функций. Память под этот массив выделяется и освобождается средствами QuikOrdersDOM. Для работы с другими
мнструментами необходимо пользоваться функциями GetQuotesCnt и GetQuotes. Память под данные должна выделяться и
освобождаться модулем автотрейдинга
BestBuyQuotePP - указатель котировку лучшей покупки в этом стакане
BestSellQuotePP : PPAtQuote ; - указатель котировку лучшей продажи в этом стакане
QuotesCntPtr : PCardinal ; - указатель на количество заявок в стакане
fATLibLog : TATLibLog ; - функция записи строки в log-файл

тип TATLibLog описан как

TATLibLog = function (aMessage : PChar;aLoglevel : integer) : Cardinal ; stdcall;

aMessage – сообщение для записи в лог файл QuikOrdersDOM.log

aLogLevel – уровень важности сообщения (0-макс. важность). Если в настройках QuikOrdersDOM.ini указан LogLevel меньше, чем при вызове функции, то сообщение добавлено не будет.

fATLibSendOrder : TATLibSendOrder ; – функция отправки заявки по текущему инструменту
тип описан как

TATLibSendOrder =function (aOD : TATOrderDirection; aPrice : double; aCnt : integer) : Cardinal; stdcall;

aOD – направление сделки (OdBuy – покупка, odSell – продажа)

aPrice – цена заявки или 0. При отправке в систему цена заявки автоматически выравнивается по шагу цены инструмента.

aCnt – количество контрактов (лотов) или 0

Возвращаемое значение – Id заявки

Функция выставляет заявку по выбранному в текущий момент инструменту в QuikOrdersDOM.ini (при старте, это инструмент, указанный в настройке DefaultContract в QuikOrdersDOM.ini)

Если aPrice=0, то выставляется рыночная заявка, с запасом проскальзывания, установленном в настройке MarketSpread в файле QuikOrdersDOM.ini

Если aCnt=0, то выставляется количество, указанное в QuikOrdersDOM по умолчанию (настройка DefaultContractCnt при старте)

Возвращаемое значение – Id заявки. Это идентификатор, который присваивается заявке в момент вызова функции. В структуре информации о заявке о храниться в TOrderInfo.Id. По этому идентификатору можно в дальнейшем найти заявку и отслеживать её состояние, или отменить. Номер этой заявки в системе можно будет узнать позже, когда будет получен отклик о статусе и номере заявки.

fATLibClearAllOrders : TATLibClearAllOrders ; – функция отмены всех заявок, тип описан как:

TLibSimpleFunc = function : Cardinal; stdcall;

Снимает все активные лимитные заявки. Возвращаемое значение игнорируется

fATLibSendStopOrder : TATLibSendStopOrder ; – функция отправки стоп-заявки по текущему инструменту тип описан как:

TATLibSendStopOrder = function (aOD : TATOrderDirection; aPrice : double; aCnt : integer) : Cardinal; stdcall;
aOD – направление сделки (OdBuy – покупка, odSell – продажа)

aPrice - цена заявки. При отправке в систему цена заявки автоматически выравнивается по шагу цены инструмента.

aCnt – количество контрактов (лотов) или 0

Возвращаемое значение – Id стоп-заявки

fATLibClearAllStopOrders : TATLibClearAllStopOrders ; – функция отмены всех стоп-заявок тип описан как

TLibSimpleFunc = function : Cardinal; stdcall;

Снимает все активные стоп-заявки. Возвращаемое значение игнорируется

fATLibNextVal : TATLibNextVal ; – функция, возвращающая уникальный, монотонно возрастающий номер тип описан как

TLibSimpleFunc = function : Cardinal; stdcall;

fATLibQuikIsOnline : TLibSimpleFunc ; – функция проверки соединения QUIK с сервером тип описан как

TLibSimpleFunc = function : Cardinal; stdcall;

Возвращаемое значение 1, если QUIK соединен с сервером, 0 если соединение не установленно

fATLibGetQuotesCount : TATLibGetQuotesCount ; – функция получения кол заявок в стакане по любому инструменту из тех,по которым открыт стакан тип описан как

TATLibGetQuotesCount = function ( aSecIdx : integer) : Cardinal; stdcall;

aSecIdx – индекс инструмента в QUIK. В структуре SecInfo храниться в поле Idx.

Возращаемое значение – количество заявок в стакане по инструменту

fATLibGetQuotes : TATLibGetQuotes ; – функция получения заявок в стакане по любому инструменту из тех, по которым открыт стакан QUIK тип описан как

TATLibGetQuotes = function (aSecIdx : integer ; aQuotesCount : integer; var aBestBuyP : PATQuote ; var aBestSellP : PATQuote ;var aQuoteArrayP: PAtQuoteArray):Cardinal;stdcall;

aSecIdx – индекс инструмента в QUIK

aQuotesCount – количество заявок для получения

aBestBuyP – этой переменной будет присвоен указатель на лучшую покупку в массиве aQuoteArrayP

aBestSellP – этой переменной будет присвоен указатель на лучшую продажу в массиве aQuoteArrayP

aQuoteArrayP - буфер, куда будет помещен массив заявок в стакане (память должна быть выделена)

Возвращаемое значение – если операция выполнена успешно=0, если нет – отличное от 0 значение.

fATLibGetOrdersCount : TATLibGetOrdersCount ; – функция получения количества заявок
тип описан как

TLibSimpleFunc = function : Cardinal; stdcall;

Возвращаемое значение – количество заявок (своих) в списке QuikOrdersDOM (включая исполненные и измененные)

fATLibGetOrderInfo : TATLibGetOrderInfo ; – функция получения информации о своей заявке по индексу в списке QuikOrdersDOM
тип описан как

TATLibGetOrderInfo= function (aIndex : integer;
aOrderInfo : POrderInfo ) : Cardinal; stdcall;

aIndex – индекс заявки в списке QuikOrdersDOM

aOrdersInfo – указатель на структуру TOrderInfo, в которую будет помещена информация о заявке с индексом в списке QuikOrdersDOM aIndex

Возвращаемое значение – если операция выполнена успешно=0, если нет – отличное от 0 значение.

fATLibGetSecCount : TATLibGetSecCount ; – функция получения количества бумаг, по которым открыт стакан
тип описан как

TLibSimpleFunc = function : Cardinal; stdcall;

Возвращаемое значение – количество инструментов, по которым открыт стакан в QUIK

fATLibGetSecInfo : TATLibGetSecInfo ; – функция получения информации о любой бумаге, по которой открыт стакан QUIK
тип описан как

TATLibGetSecInfo = function(aSecNum : integer;
apSecInfo : PSecInfo) : Cardinal; stdcall;

aSecNum – индекс инструмента в списке QuikOrdersDOM

apSecInfo – указатель на структуру TSecInfo, в которую будет помещена информация о бумаге с индексом в списке QuikOrdersDOM

fATLibSendOrderEx : TATLibSendOrderEx; – функция отправки заявки по любой бумаге

тип описан как

TATLibSendOrderEx =function (aSecIdx : integer;
aOD : TATOrderDirection;
aPrice : double;
aCnt : integer) : Cardinal; stdcall;

Функция выставляет лимитную заявку в QUIK по инструменту с индексом в QUIK aSecIdx по цене aPrice, количеством aCnt, направлением aOD

aSecIdx – индекс инструмента в QUIK

aOD – направление сделки (OdBuy – покупка, odSell – продажа)

aPrice – цена заявки. при отправке в систему цена заявки автоматически выравнивается по шагу цены инструмента.

aCnt – количество контрактов

Возвращаемое значение – Id заявки

fATLibClearOrderById : TATLibClearOrderById; – функция снятия заявки по Id
тип описан как

TATLibClearOrderById = function (aID : Cardinal) : Cardinal; stdcall;

Функция снимает лимитную заявку с идентификатором Id, полученном при выставлении заявки

aID – идентификатор заявки

Возвращаемое значение – успешное исполнение=0, отличное от 0 значение – заявка не найдена

fATLibGetCustomSecInfo : TATLibGetCustomSecInfo ;
тип описан как

TATLibGetCustomSecInfo = function(aSecIdx : integer;
apSecInfo : PSecInfo) : Cardinal; stdcall;

возвращает информацию о торговом инструменте по его индексу в QUIK. Открытый котировальный стакан по инструменту не является обязательным.

aSecIdx – индекс инструмента в QUIK

apSecInfo – указатель на переменную, куда будет помещена информация о инструменте

Возвращаемое значение – успешное исполнение=0, иное значение – ошибка в процессе исполнения

fATLibGetCurrentSecInfo : TATLibGetCurrentSecInfo ;
тип описан как

TATLibGetCurrentSecInfo = function(apSecInfo : PSecInfo) : Cardinal; stdcall;

возвращает информацию о текущем торговом инструменте, выбранном в QuikOrdersDOM.

apSecInfo – указатель на переменную, куда будет помещена информация о инструменте

Возвращаемое значение – успешное исполнение=0, иное значение – ошибка в процессе исполнения
fATLibSecIdxByTicker : TATLibSecIdxByTicker ;
тип описан как

TATLibSecIdxByTicker = function(aTicker : PChar;
aIdxFrom : Cardinal) : Cardinal; stdcall;

возвращает QUIK индекс инструмента по тикеру.

aTicker – тикер инструмента

aIdxFrom – с какого индекса начинать поиск

Возвращаемое значение – успешное исполнение= индекс QUIK инструмента, $FFFFFFFF- инструмент не найден,
$FFFFFFF0-$FFFFFFFE – ошибка при исполнении

fATLibGetServerDate : TATLibGetServerDT ;
тип описан как

TATLibGetServerDT = function(var aDT : TDateTime) : Cardinal; stdcall ;

Возвращает текущую дату сервера

aDT – возвращаемая дата

Возвращаемое значение – успешное исполнение=0, иное значение – ошибка в процессе исполнения

fATLibGetServerTime : TATLibGetServerDT ;
тип описан как

TATLibGetServerDT = function(var aDT : TDateTime) : Cardinal; stdcall ;

Возвращает текущее время сервера

aDT – возвращаемое время

Возвращаемое значение – успешное исполнение=0, иное значение – ошибка в процессе исполнения

fATLibGetFormRect : TATLibGetFormRect ;
тип описан как

TATLibGetFormRect = function (var aLeft: integer;
var aTop : integer;
var aHeight : integer ;
var aWidth : integer) : Cardinal; stdcall;

Возвращает координаты, высоту и ширину окна программы

aLeft, aTop – координаты левого верхнего угла окна программы

aHeight – высота окна

aWidth – ширина окна

Возвращаемое значение – успешное исполнение=0, иное значение – ошибка в процессе исполнения

fATLibRefreshOrders : TLibSimpleFunc ;
тип описан как

TLibSimpleFunc = function : Cardinal; stdcall;

Функция обновления информации о заявках QUIK. Информация о заявках QUIK считывается при старте QuikOrdersDOM. Заявки, выставленные в квик вручную в процессе работы QuikOrdersDOM не считываются из памяти QUIK по умолчанию. Чтобы данные о заявках, введенных в QUIK вручную попали в QuikOrdersDOM необходимо вызвать функцию fATLibRefreshOrders.

Возвращаемое значение – успешное исполнение=0, иное значение – ошибка в процессе исполнения

fATLibGetAllTradesCount : TLibSimpleFunc ;
тип описан как

TLibSimpleFunc = function : Cardinal; stdcall;

Возвращает общее количество сделок. Для работы функции необходимо, чтобы в QUIK была открыта “Таблица всех сделок”. В случае ошибки в процессе исполнения возвращаемое значение $FFFFFFFF

fATLibGetTradeInfo : TATLibGetTradeInfo ;
тип описан как

TATLibGetTradeInfo = function (aTradeIdx : Cardinal;
aTradeInfo : PTradeInfo) : Cardinal; stdcall;

Возвращает информацию о сделке по ее номеру в QUIK

aTradeIdx – номер сделки в QUIK

aTradeInfo – возвращаемая информация о сделке

Для работы функции необходимо, чтобы в QUIK была открыта “Таблица всех сделок”
Возвращаемое значение – успешное исполнение=0, иное значение – ошибка в процессе исполнения

fATLibGetFORTSPosCount : TLibSimpleFunc ;
тип описан как

TLibSimpleFunc = function : Cardinal; stdcall;

Возвращает общее количество записей о инструментах FORTS в портфеле
В случае ошибки в процессе исполнения возвращает $FFFFFFFF

fATLibGetFORTSPos : TATLibGetFORTSPos ;
тип описан как

TATLibGetFORTSPos = function (aPosIdx : integer;
aTicker : PCharArr20;
aAccount : PCharArr20;
var aInPosSize : integer;
var aPosSize : integer) : Cardinal ; stdcall;

Возвращает информацию о инструменте FORTS в портфеле

aPosIdx – Номер записи

aTicker – возвращаемый тикер инструмента

aAccout – возвращаемый код счета

aInPosSize – размер входящей чистой позиции по инструменту (в контрактах)

aPosSize – размер позиции по инструменту (в контрактах)

Возвращаемое значение – успешное исполнение=0, иное значение – ошибка в процессе исполнения

fATLibGetFORTSPosByTicker : TATLibGetFORTSPosByTicker ;
тип описан как

TATLibGetFORTSPosByTicker = function
( aFrom : Cardinal;
aTicker : PCharArr20;
aAccount : PCharArr20;
var aInPosSize : integer;
var aPosSize : integer) : Cardinal ; stdcall;

Возвращает информацию о инструменте FORTS в портфеле по его тикеру

aFrom – с какого номера записи начинать поиск

aTicker – тикер инструмента

aAccout – возвращаемый код счета

aInPosSize – размер входящей чистой позиции по инструменту (в контрактах)

aPosSize – размер текущей чистой позиции по инструменту (в контрактах)

Возвращаемое значение – успешное исполнение=0, иное значение – ошибка в процессе исполнения

fATLibSendSlidingStopOrder : TATLibSendStopOrder ;
тип описан как

TATLibSendStopOrder =
function (aOD : TATOrderDirection;
aPrice : double;
aCnt : integer) : Cardinal; stdcall;

функция отправки стоп-заявки по текущему инструменту в QuikOrdersDOM. Параметры скользящей стоп-заявки указаны в настройках QuikOrdersDOM

aOD – направление сделки (OdBuy – покупка, odSell – продажа)

aPrice - цена заявки. При отправке в систему цена заявки автоматически выравнивается по шагу цены инструмента.

aCnt – количество контрактов (лотов) или 0

Возвращаемое значение – Id скользящей стоп-заявки
fATLibSendCustomOrder : TATLibSendCustomOrder ;

тип описан как

TATLibSendCustomOrder =function (
aSecIdx : integer;
aOD : TATOrderDirection;
aPrice : double;
aCnt : integer;
aAccount,
aAdditional : PChar) : Cardinal; stdcall;

расширенная функция отправки заявки в QuikOrdersDOM.

aSecIdx – код(номер) бумаги в QUIK

aOD – направление сделки (OdBuy – покупка, odSell – продажа)

aPrice – цена заявки. При отправке в систему цена заявки автоматически выравнивается по шагу цены инструмента.

aCnt – количество контрактов (лотов)

aAccount – номер счета, с которого будет отправляться заявка. Если значение пустая строка или nil – используется счет, указанный в настройках QuikOrdersDOM

aAdditional – дополнительные параметры транзакции. Используется, если необходимо указать дополнительные параметры транзакции,
такие как код клиента (CLIENT_CODE) или условие исполнения, например параметр может иметь значение
“,EXECUTION_CONDITION=FILL_OR_KILL”. Если значение пустая строка или nil – игнорироуется.
Возвращаемое значение – Id заявки
fATLibGetSecTableInfo : TATLibGetSecTableInfo ;

тип описан как

TATLibGetSecTableInfo = function (aSecIdx : Cardinal;
aSecTableInfo : PSecTableInfo
) : Cardinal ; stdcall;
функция получения динамических параметров инструмента FORTS из текущей таблицы значений QUIK.

aSecIdx – код(номер) бумаги в QUIK

aSecTableInfo – возвращаемый набор параметров
Возвращаемое значение – 0=выполнено успешно, другое значение – ошибка выполнения
fATLibDown : TATLibDown ;

тип описан как

TATLibDown = function (aMode : byte) : Cardinal; stdcall ;
функция прекращения работы

aMode – код режима завершения работы:

aMode =0 -> финализировать и выгрузить библиотеку автотрейдинга;

aMode =1 -> финализировать и выгрузить библиотеку автотрейдинга, остановить QuikOrdersDOM;

aMode =2 -> финализировать и выгрузить библиотеку автотрейдинга, остановить QuikOrdersDOM, перезагрузить Windows

Возвращаемое значение – 0=выполнено успешно, другое значение – ошибка выполнения
В дистрибутиве QuikOrdersDOM приведены 2 примера модуля автотрейдинга с исходным кодом: sample.dll и sample2.dll, которые помогут легко и быстро сориентироваться в процессе разработки торговых систем с применением QuikOrdersDOM. Также в дистрибутиве содержится шаблон проекта механической торговой системы с применением QuikOrdersDOM.

Наверх

11) Файл протокола QuikOrdersDOM.log

Для диагностики нестандартных ситуаций в QuikOrdersDOM ведется файл протокола. Файл протокола ведется для каждого запуска программы новый. Уровень детализации протокола регулируется настройкой LogLevel в файле протокола QuikOrdersDOM.ini

Наверх

12)Возможные проблемы.

Если в процессе запуска/работы программы возникают проблемы сделайте следущее:

1. Убедитесь, что у вас последняя версия программы, если это не так – скачайте последнюю версию с сайта ttools.ru, возможно ваша проблема уже решена.

2. В файле настроек QuikOrdersDOM измените значение параметра LogLevel на “5″ и запустите QuikOrdersDOM заново,
повторите все действия до момента сбоя программы.

ВНИМАНИЕ! после того, как ваша проблема будет решена, верните эту настройку в значение “2″ или меньше.

Режим Loglevel “5″ выводит большое количество сообщений в log-файл, что может привести к значительным затратам процессорного времени, замедлению работы и миганиям области DOM. Используйте этот режим только для отладки.

3. Посмотрите файл протокола QuikOrdersDOM.log, возможно причина неполадки вам станет ясна и вы сможете устранить её самостоятельно.

4. Попробуйте найти описание свой неполадки на форуме сайта программы ttools.ru/forum и применить рекомендуемые меры устранения.

5. Если не удается устранить или найти описание вашего сбоя напишите письмо на ttools@ttools.ru с указанием вашей версии QUIK, подробным описанием неисправности, ваши файлы QuikOrdersDom.log, QuikOrdersDom.elf (если есть), trans.log (желательно сжать с помощью архиватора), ваш файл QuikOrdersDom.ini (удалите из него номер вашего счета).

Эта инструкция описывает функции программы QuikOrdersDOM версии 2.0.4.4. Новые версии и поддержку программы можно получить на сайте http://ttools.ru

Приятного использования и больших профитов ;)