Способ построения роботов на торговом терминале QUIK

16 ноября, 2011

Автор: Николай Камынин

В данной заметке рассмотрены способы построения роботов на основе торгового терминал 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, по этому сигналу,  выставляет заявку  и контролирует ее исполнение, а также обеспечивает контроль рисков и распределение  депозита  по торгуемым инструментам в соответствии с заданными параметрами торговли.

Игры нашего разума

10 ноября, 2011

Автор:Николай Камынин

Работая в прошлой жизни в научной лаборатории, я обратил внимание, на следующий факт.

Порой не удается решить какую-либо проблему целый день.

И вот, уходишь с работы, и едешь домой.

На это время мозг как бы отключается от проблемы.

Приходишь домой, либо на полпути к дому, вдруг решение проблемы становится очевидным.

В силу специфики своей деятельности  ( как тогда говорили, учил машины думать.

Т.е. занимался системами искусственного интеллекта.) , я размышлял над данным эффектом.

Естественно, зная классический пример Менделеева и его таблицы во сне,

я пришел к следующему объяснению этого феномена, который называют озарением.

Представим наш мозг в виде двух систем – верхней и нижней.

Верхняя система возникла сравнительно недавно и основана на вербальном ( словесном ) описании событий и явлений.

Вербальное описание проблемы – это способ последовательного решения задач.

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

Поэтому этот способ очень медленный, но он единственный – сознательный способ решения проблемы.

Вторая система, система объемного (параллельного) вычисления или решения задач,

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

Эта система управляет всеми органами внутри нас, но она вне нашего сознания.

Все идеи, которые приходят к нам внезапно, необъяснимо, по интуиции – это результат работы второй системы.

Мозг человека содержит десятки миллиардов нейронов – в современных вычислительных системах – их аналог транспьютер.

Именно вторая система позволяет человеку превосходить в своих решениях мощные вычислительные системы.

Так как же объяснить тот эффект решения задачи, с которого я начал данную статью.

В рамках приведенной модели,  происходит следующее.

Так как задачу мы способны осмыслить лишь вербально, то именно верхняя система  формулирует ее и пытается решить на сознательном уровне.

Это решение ищется последовательно, а значит медленно.

Если Вы отвлечетесь от задачи, то она будет перемещена во вторую систему на подсознательный уровень.

Эта система параллельного решения.

Возможно, при этом одновременно проверяется сразу тысячи вариантов и находится решение.

И это решение, вторая система, преобразуя в слова, передает вам на сознательный уровень.

И вот, эврика, Вы знаете решение.

Но, увы, Вы не знаете, как это решение получено, так как для описания всех вариантов поиска решения, второй системе потребуется в тысячи раз больше времени для перевода всех вариантов в слова – единственный способ понять или осознать эти решения нами.

Отчасти именно для очистки системы верхнего уровня мы спим.

При этом мозг переносит накопленную за день вербально-смысловую информацию во вторую систему.

Поэтому мы все помним, и в тоже время забываем.

Мы забываем на сознательном уровне.

Но помним на подсознательном.

Гипноз и внушение направлены на включение в действие трансляции информации из второй системы в первую — на сознательный уровень.

Поэтому, я считаю, что увы, нет никаких параллельных миров или инопланетного разума,

которые дают необъяснимые разгадки задач или видения будущего или прошлого.

Все это лишь игры нашего разума.

А как быть с созданием роботов для торговли на фондовом рынке.

Почему профессиональный трейдер способен успешно торговать, но не способен написать алгоритм собственной торговли?

Почему идеи, которые Вы пытаетесь воплотить в торговых роботах, на практике долго не живут?

Мне ответ очевиден.

А Вам?