Автор: Николай Камынин
В данной заметке рассмотрены способы построения роботов на основе торгового терминал QUIK.
При создании торгового робота необходимо решить четыре основные задачи:
1) Генерация торговых сигналов
2) Отправка заявок торговому серверу
3) Анализ результатов исполнения заявок
4) Анализ состояния активов
Для решения указанных задач на основе торгового терминала QUIK , в нашем распоряжении имеются следующие средства:
1) Экспорт исторических данных в программы технического анализа
2) Экспорт таблиц QUIK во внешние приложения по протоколу DDE или ODBC
3) Отправка заявок и получение информации о заявках и сделках через API
4) Отправка заявок и получение информации о заявках и сделках через файл
5) Встроенный язык программирования QPILE
Теоретически наилучшим решением является использование встроенного языка.
Однако, в силу неразвитости QPILE и сравнительно медленного исполнения программ на его основе, такой способ решения не может быть рекомендован для разработки роботов на основе сложных генераторов сигналов.
Касалось бы решение очевидно.
Надо все данные из QUIK передать во внешнее приложение по протоколу DDE или ODBC и строить робота во внешнем приложении.
Однако данный способ не является наилучшим.
В этом случае нам приходится делать много лишней работы, связанной с созданием во внешнем приложении копии данных , уже имеющихся в QUIK, а также реализовывать сложный интерфейс обработки получаемых таблиц. Все это приводит к неоправданной сложности решений и лишним затратам вычислительных мощностей.
Если Вы не собираетесь делать по 100 сделок в секунду , и Вас вполне устраивает время реакции системы в одну секунду, то рекомендую, на мой взгляд, наиболее оптимальное решение, которое применяю сам:
1) Берем любую программу технического анализа. Омега, Метасток, Амиброкер и т д.
2) Используем экспорт исторических данных в программу технического анализа
3) В программе технического анализа решаем задачу №1 из приведенного в начале статьи списка
4) Используем QPILE для решения задач №2,3,4 из приведенного выше списка
5) Организуем передачу через файл торговых сигналов (не транзакций, а именно сигналов ) из программы технического анализа в программу на QPILE
Таким образом, все исследования эффективности алгоритмов торговли мы решаем в любимой нами программе технического анализа.
Реальную торговлю на основе генерируемых сигналов исполняет программа на встроенном языке QPILE. Эта программа отправляет заявки, проверяет их исполнение и управляет рисками и капиталом.
Таким способом мы достигаем следующего.
Сложные алгоритмы торговли реализует внешнее приложение, в котором мы можем применить любые языки программирования, параллельное и распределенное вычисление.
Для генерации сигналов нет необходимости знать состояние депозита, наличие тех или иных акций.
Генерация сигналов – это прогнозирование движение рыночных цен на основе исторических данных. Такое прогнозирование практически не зависит от индивидуальных особенностей торгового счета и депозита.
Вопросы, связанные с управлением капиталом и рисками решает программа на основе QPILE и она освобождена от расчета торговых сигналов и необходимости считывания с графиков исторических данных, что крайне медленно в ней реализовано.
Например, для прогнозирования рынка и генерации торговых сигналов я применяю Амиброкер ( раньше использовал Омегу ) с таймом исторических данных 5 минут.
Торговый сигнал генерируется в интервале 5 секунд до закрытия свечи, и этот сигнал передается через файл в QUIK с задержкой менее 1 секунды.
Программа на QPILE, по этому сигналу, выставляет заявку и контролирует ее исполнение, а также обеспечивает контроль рисков и распределение депозита по торгуемым инструментам в соответствии с заданными параметрами торговли.