Превращение формулы Амиброкера в робот

Опубликовано в FAQ AmiBroker

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

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

Амиброкер изначально создавался как программа исключительно для технического анализа. У него имеется большой и универсальный интерфейс для получения данных из всевозможнейших источников, начиная от простейших текстовых файлов, кончая сложными real-time источниками котировок. Амиброкер имеет великолепный пользовательский интерфейс для полноценной работы. В конце концов, созданы большие сообщества пользователей, где можно найти практически любую интересующую информацию и получить ответ на вопрос произвольной сложности. Однако встроенного набора средств для осуществления реальной торговли (а не генерации сигналов) в Амиброкере нет.

Тем не менее, перспектива превратить готовую стратегию Амиброкера в робот с минимальными затратами выглядит все равно весьма заманчиво. Я решил использовать терминал QUIK, как наиболее распространённый на текущий момент на российском рынке. Попробовал поискать в сети информацию на эту тему. Оказывается, не один я озабочен такой идеей. Из более-менее осмысленного я выделю 2 способа:

  1. Выставление заявок через механизм tri/tro файлов терминала QUIK. Способ простой, однако все, чего можно добиться с его помощью - это разместить заявку в торговой системе. Получить информацию о ее исполнении (не говоря уже о деталях - себестоимости и остальном) этот способ не позволяет. Способ был забракован.
  2. Второй вариант - это использование стандартного интерфейса выставления заявок терминала QUIK. Использование этого способа по своим возможностям принципиально не намного отличается от предыдущего, хотя и шире. Здесь уже можно получить часть информации о результатах исполнения торговых ордеров. Однако и эта информация по-прежнему неполна и недостаточна для построения робота.
Для того, чтобы располагать всей информацией, робот должен иметь доступ ко всем таблицам терминала. Эти таблицы терминала можно экспортировать при помощи протокола DDE. Для этого необходимо иметь DDE сервер (такого же свойства, как и реализованный в MS Excel).
 
Таким образом, требуется инструмент для осуществления двух недостающих функций: получения информации из терминала QUIK посредством протокола DDE и отправки транзакций из амиброкера в QUIK. Этот инструмент был написан и успешно опробован.
 
Как технологически выглядит процесс превращения Вашего скрипта в робот?
 
У Вас должен быть готовый скрипт, который работает (как минимум) в режиме индикатора. То есть рисует все необходимые Вам графики, рассчитывает сигналы (Buy/Sell/Short/Cover), расставляет метки и все остальное, что Вам необходимо.
 
Существуют различные подходы в способах выставления заявок - по рынку, лимитированным ордером либо используются условные заявки и так далее. Нюансы работы с торговый системой должны быть четко оговорены.
 
В результате Вы получите измененный скрипт на языке AFL плюс AmiSharp. Ваш скрипт будет дополнен текстом в объеме 500-2000 строк взависимости от требований, которые Вы предъявляете к операционной части. Таким образом, он будет содержать две части - расчетную (написанную Вами) и операционную (написанную мной).
 
Вы сможете легко менять расчетную часть в рамках изначально написанного Вами и робот по прежнему будет работать. В принципе, Вы можете его полностью изменить - таким образом Вы можете самостоятельно собирать различных роботов. Я помогу Вам с установкой и подключением робота.
 
Текст операционной части выполняется на языке AFL и в основном является обеспечением функционирования AmiSharp. Он открыт и Вы можете при необходимости вносить в него любые требуемые Вам изменения. Интерфейс к AmiSharp полностью описан на этом сайте. Однако делайте это только в том случае, если знаете, зачем это Вам нужно: в случае каких - либо изменений в операционном блоке я уже не смогу гарантировать правильность его работы.
 
Дополнительно к расчетным сигналам Buy/Sell/Short/Cover робот выведет на график Амиброкера свои реальные сделки, которые будут показывать себестоимость полученных позиций. При необходимости можно также выводить на экран линии уровней стоимости позиций, полученные из таблицы сделок терминала QUIK, зоны, где позиция была положительной, отрицательной либо отсутствовала и так далее.
 
Робот будет иметь защиту от некорректных сигналов. Таким образом, если по какой-то причине формула генерирует сигнал Cover, а мы в реальности находимся в любой позиции, кроме Short, сигнал будет проигнорирован. Такое возможно (в частности) при изменении параметров робота "на лету".
 
В любой момент реальную торговлю роботом можно остановить и снова продолжить. Достигается простым нажатием соответствующей кнопки в рабочей области индикатора. При необходимости можно добавить ручное открытие/закрытие позиций, которое будет действовать параллельно расчету сигналов формулой. Осуществляется тоже путем нажатия на кнопки в рабочем поле индикатора робота. При этом не возникнет никаких конфликтов с основным алгоритмом.
 
Можно будет запускать параллельно произвольное количество различных копий роботов, каждый из которых работает с разными (или одними и теми же) инструментами, таймфреймами, счетами. Например, внутри одного счета один робот может быть в длинной позиции, другой в короткой по одному и тому же инструменту. Возможна работа с разными терминалами QUIK одновременно. Перенастройка параметров робота не требует остановок, изменения его исходных текстов и т.п.
 
Поскольку весь функционал для решения задачи отработан, реализация задачи занимает крайне малое время. Полноценный функционал  (на текущий момент) имеется для:
  • торговли одним инструментом
  • парного арбитража
  • торговли корзинами инструментов
  • различного рода хеджевых стратегий
  • реализация торговых приводов
 
Если задача не попадает в любую из этих категорий - это лишний повод ее реализовать.
 
Пример (видео) реализации Фреймворк для Амиброкера

Комментарии   

# RomaNick 29.01.2013 10:58
Добрый день. После прочтения сразу возникает вопрос. Где можно увидеть операционную часть или сколько это будет стоить?
# admin 29.01.2013 12:02
Роман, здравствуйте. Сам AmiSharp распространяетс я (пока) свободно. Операционная часть - это обертка для него - пишется на языке AFL и является частью Вашего скрипта. Существуют группы алгоритмов, для которых у меня уже есть универсальные операционные части, написанные ранее и используемые повторно в разных роботах.. В то же время, при выдвижении специальных требований их придется адаптировать.

Пример простейшей оперчасти для амишарп описан в www.bot4sale.ru/.../208-amisharp-how-to-make.html Конечно это только иллюстрация, боевые варианты значительно сложнее.

Стоимость - вопрос сугубо индивидуальный. Он решается после прояснения деталей. Свяжитесь со мной для уточнений.

Недостаточно прав для комментирования