Как создать робота для торговли на бирже

Как создать робота для торговли на бирже

Пишем торгового робота на C#. Часть 1. Базы языка программирования и сообщение с терминалом

+20 17 сентября 2013, 08:11 • Максим Милованов

Сейчас всё чаще слышу от многих трейдеров заявления, что весьма здорово знать язык программирования и самому писать роботов. Многие усиленно пробуют изучать актуальный сейчас язык C#. Но новичку с нуля написать какое-либо стоящее приложение будет достаточно сложно.

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

Сходу хотелось бы подчернуть, что эта статья более всего ориентирована на новичков в программировании, знания которых ограничиваются школьной/университетской опытом и программой программирования на языках типа Pascal, Basic. В качестве литературы по языку C# оптимальнее подойдут книги Шилдта и справка Микрософт.

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

1)      Инструменты встроенные в терминал

  1. Qpile – встроенный язык в самый популярный терминал для торговли QUIK, язык достаточно легко. Но у данной простоты кроме очевидного плюса в легком освоении, имеется очевидные минусы, как ограниченный функционал, сложность отладки.
  2. LUA – еще один несложный язык для терминала QUIK. Имеет больший функционал, чем Qpile. Но громадную популярность еще не купил. Сам код трудится конкретно в терминале QUIK.

2)      Внешние коробочные продукты – весьма схожие по функционалу:  возможность тестирования на исторических данных, написание торговых систем на языке платформы .NET (в большинстве случаев C#), интеграция с торговым терминалом.

  1. TradeMatic — совокупность для торговых систем со встроенным механизмом тестирования на истории.
  2. TSLab – совокупность подобная TradeMatic. Имеет визуальный редактор для проектирования торговой стратегии.
  3. LiveTrade RobotLab – визуальный конструктор и терминал роботов с возможностью написания кода самому.

3)      Внешние программы, созданные самостоятельно. В этом случае возможно применять любой язык программирования, что знает человек.  Пара лет назад была популярна связка терминала QUIK и Excel с роботом, написанным на Visual Basic.

На данный момент возможно воспользоваться достаточно замечательной и эластичной библиотекой для написания роботов Stock#, но не программисту будет достаточно сложно в ней разобраться.

Для разработки собственного робота «с нуля» определимся со перечнем задач:

1)      Реализация импорта данных из терминала QUIK в отечественную программу

2)      Программирование торгового метода

3)      Создание механизма отправки заявок на совершение торговых операций в терминал

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

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

лишь для разработки программы.

В C# имеется два метода построения интерфейсов клиентских приложений. Первый – применять Windows Forms – разработка построения приложений, которая уже более 10 лет используется при проектировании визуального интерфейса. Второй — Windows Presentation Foundation (WPF) – достаточно новая совокупность для построения интерфейса, имеет возможность создавать привлекательный элементы с применением 3D-графики, применяет MVC-подход, но требует громадных ресурсов компьютера, чем WinForms.

Потому, что Windows Forms несложнее и менее требователен к ресурсам, мы будем применять как раз эту разработку.

Начнем с создания приложения. Для этого нужно запустить Visual Studio 2010 и создать проект «Приложение Windows Forms» (Рис. 1).

создание приложения Windows Forms

получить информацию из терминала QUIK. Из QUIK эти возможно взять тремя методами:

1) экспортировать эти через ODBC

2) экспортировать эти через DDE

3) брать эти из памяти

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

Настроим сразу же QUIK для вывода данных (Рис. 7). Для этого необходимо выделить нужную таблицу и надавить в меню Экспорт данных – Вывод по DDE.

В качестве DDE сервера необходимо указать имя «DDEServer». В качестве рабочей книги необходимо указать следующее:

1)      для таблицы исторических свечей – «candles»

2)      для инструментов и таблицы котировок – «quotes»

3)      для таблицы заявок – «orders»

Не забудьте установить галочку «Вывод при нажатии Ctrl+Shift+L».

Настройка вывода таблицы по DDE

В итоге окно QUIK будет выглядеть следующим образом:

QUIK

Для импорта по DDE нам потребуется:

В этом классе должны быть предусмотрен минимальный комплект функции:

1)      Регистрация сервера

2)      Разрегистрация сервера

3)      Событие срабатывания таймера чтобы получить новые данных

4)      Способ для обработки принятия данных

На форму приложения я кроме этого добавил визуальные объекты для отображения пришедших данных. В следствии компиляции (F5)  запуска и приложения импорта по DDE оказалось следующее (Рис. 11):

Импорт данных их QUIK в окно приложения

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

Структура архива :

1)      NDde.dll — динамическая библиотека, в которой реализованы функции для работы с DDE сервером

2)      XLTable.cs – класс для обработки данных из QUIK в приложение

3)      charts.qpl – портфель для QUIK на языке Qplie для создания исторических счевек

4)      INFO.wnd – настройки QUIK

5)      Robot – код робота на C#

Источник: smart-lab.ru

Алготрейдинг #2 — Как быстро создать торгового робота без навыков программирования

Важное на сайте:

Самые интересные результаты статей, подобранные именно по Вашим интересам: