Способ строительства роботов

23 ноября, 2012

В данной заметке кратко расскажу мой способ строительства простых, но надежных и быстродействующих роботов на основе торгового терминала QUIK

Данный способ разработан на основе анализа и реализации всех возможных вариантов создания автоматических систем торговли на основе торгового терминала QUIK

            Постановка задачи:

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

Считается , что задержка в принятии решения  до 10 секунд не имеет значения.

 

Описание способа:

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

Выбор программы тех анализа не является критичным.

Можно взять любую из любимых или создать внешнее приложение.

В данном способе я отказался от какого-либо экспорта таблиц и не использую API для передачи транзакций.

При этом существенно упрощается связка программ, отсутствует необходимость специальной настройки таблиц.

В целом созданный программный комплекс включает  следующее программное обеспечение.

Программа технического анализа ( например, Амиброкер ).

В амиброкере на встроенном скриптовом языке AFL реализуется алгоритм генерации сигналов.

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

Для повышения быстродействия и применения различных алгоритмов вычислительной математики ( например, нейронные сети) , я подключаю к Амиброкеру библиотеки (dll), которые разрабатываю с использованием С++.

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

Данные истории сделок в Амиброкер получаем встроенными в QUIK средствами экспорта данных в программы тех анализа. Никаких специальных поделок для этого не требуется.

~~~~~~~~~~~~~~~~~~~~~~~

Cледующая составная часть включает программу на QPILE, которая загружается в торговый терминал QUIK и исполняется периодически с интервалом 1 секунда плюс время ее исполнения.

Дело в том, что программа на QPILE имеет прямой доступ ко всем таблицам торгового терминала QUIK, поэтому нет необходимости создавать какой-либо экспорт информации во внешнее приложение.

Программа на QPILE реализует контроль связи с сервером, выставление заявок, контроль позиции, управление риском.

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

Иначе говоря, программа на QPILE реализует все, кроме торгового алгоритма, который реализуется внешним приложением, в данном случае Амиброкером.

 

Кроме того, в настоящее время в качестве внешнего генератора торговых сигналов может применяться не только программа теханализа на этом же компьютере, но и любая другая программа, установленная на удаленном компьютере.

В частности возможна рассылка сигналов многим торговым терминалам.

~~~~~~~~~~~~~~~~~~~~~~~~~

Взаимодействие программы QPILE и программы тех анализа происходит через файл сообщений.

Программа тех анализа передает код инструмента , сигнал и его время.

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

Знакомьтесь РоботПетя

20 ноября, 2012

В данной заметке я хочу представить нового робота Петю.

Как говорят в народе:  » Иногда шаг вперед, есть результат пинка под зад»

На днях произошел сбой по питанию и робот Вася попал в реанимацию.

Размышляя над превратностями судьбы , я решил немного отвлечься и как писал ранее создать робота на основе ФНЧ.

Задача была двояка.

Во-первых, создать робота, который можно было бы повторить на скриптовых языках, типа QPILE.

Во-вторых, создать робота без использования DLL библиотек на C++, т е лишь на основе AFL Амиброкера.

Но получилось, как в старой сказке про кашу из топора. Топор в данном случае — это ФНЧ.

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

В настоящее время, в  роботе, для определенности я назвал его Петя, применяются следующие фильтры(индикаторы) — линейная регрессия, медианный, ATR,параболик,  внутридневные и дневные уровни поддержки и сопротивления.

Конечно, при создании Робота Петя я использую уже отработанные в Роботе Вася алгоритмы, но реализую их на скриптовом языке AFL.

Хотя Робот Петя использует большее число фильтров (добавлены  линейная регрессия, медианный, ATR), но он имеет более простую программу и легче обучается.

Сейчас меня интересует ответ на вопрос:

Будет ли робот Петя при той же доходности проще,чем Робот Вася.

Вот результаты РоботПетя:

Условия тестирования:

торговля на постоянный депозит, без реинвестирования,без плеч, комиссия 0.025%.

 

 

 

 

 

 

 

 

All trades Long trades Short trades
Initial capital 100000 100000 100000
Net Profit% 1472.00% 759.18% 712.82%
Exposure% 21.60% 10.33% 11.27%
Net Risk Adjusted Return% 6815.28% 7351.59% 6323.93%
Annual Return% 59.91% 44.27% 42.91%
Risk Adjusted Return% 277.38% 428.67% 380.69%
All trades 3566 1782 (49.97%) 1784 (50.03%)
 Avg. Profit/Loss% 0.41% 0.43% 0.40%
Winners 1497 (41.98%) 733 (20.56%) 764 (21.42%)
 Avg. Profit% 1.92% 2.01% 1.83%
Losers 2069 (58.02%) 1049 (29.42%) 1020 (28.60%)
 Avg. Loss% -0.68% -0.68% -0.67%
Max. trade% drawdown -7.87% -7.87% -7.49%
Max. system% drawdown -12.64% -8.99% -13.26%
Recovery Factor 74.74 44.59 34.63
CAR/MaxDD 4.74 4.93 3.24
RAR/MaxDD 21.94 47.7 28.7
Profit Factor 2.05 2.07 2.04
Payoff Ratio 2.84 2.96 2.72
Risk-Reward Ratio 1.55 1.69 1.35
Ulcer Index 1.79 1.45 2.41
Ulcer Performance Index 30.44 26.82 15.58
Sharpe Ratio of trades 4.06 4.22 3.86
K-Ratio 0.007 0.0076 0.0061

До результатов Васи еще далеко.

Для справки:  сейчас робот Петя весит  800 операторов на языке AFL.