Язык программирования для трейдера

Программирование форекс-роботов без знания языка MQL4

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Эта статья будет интересна в основном трейдерам, а также форекс-инвесторам для расширения кругозора. Как известно, сколько трейдеров – столько и стратегий. Причем множество интересных стратегий не смогли стать достоянием широкого трейдерского сообщества лишь по той причине, что не были автоматизированы. А не были автоматизированы они в связи с тем, что разработчики стратегии не владели навыками пользования языком программирования – в бум автоматизации многие стратегии становятся известными в виде торговых роботов.

Конечно, знание языка программирования MQL версий 4 или 5 – это значительный шаг вперед для трейдера. Язык программирования позволяет создать собственный индикатор технического анализа, написать скрипт или торговый советник. А преимущества автоматической торговли общеизвестны – это и отсутствие влияния эмоций, и большее количество свободного времени. В этой статье мы рассмотрим вопросы и различные подходы к программированию торговых роботов:

Создание программных кодов

Я веду этот блог уже более 6 лет. Все это время я регулярно публикую отчеты о результатах моих инвестиций. Сейчас публичный инвестпортфель составляет более 1 000 000 рублей.

Специально для читателей я разработал Курс ленивого инвестора, в котором пошагово показал, как наладить порядок в личных финансах и эффективно инвестировать свои сбережения в десятки активов. Рекомендую каждому читателю пройти, как минимум, первую неделю обучения (это бесплатно).

Хорошую базу для познания MQL создает владение языком программирования «С++», но и без этих знаний язык MQL хорошо поддается изучению. Многие рядовые трейдеры, изучающие язык самостоятельно, считают, что для написания несложных скриптов и программ достаточно самостоятельного изучения языка программирования в течение недели.

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

Программирование роботов, в большинстве случаев, производится в специальном разделе торгового терминала MetaTrader4 – MetaEditor. Это многофункциональный и удобный специализированный редактор, с помощью которого можно самостоятельно создавать любые торговые алгоритмы.

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Достоинством редактора является то, что созданные алгоритмы могут быть запущены сразу после создания, так как они автоматически появляются в торговой платформе. MetaEditor в МТ4 обладает такими характеристиками, как:

Помимо встроенного редактора МТ4 существует еще множество платформ для программирования советников с использованием языка С++. Например, платформы WealtLab, StockSharp и TSLab обеспечивают реализацию сразу всех этапов создания экспертов, включая их тестирование.

Платформа StockSharp является библиотекой торговых экспертов, написанных на языке С. Работа на базе этой платформы требует знания языка программирования, изучение которого может занять достаточно длительное время.

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Сервис копирования сделок RAMM от AMarkets

Что такое сервис RAMM и как в нём копировать сделки

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Платформа TSLab представляет собой визуальный редактор, собирающий торговый советник из функциональных блоков. Блоки написаны на языке С#, но их код в процессе программирования скрыт от пользователя. Существует и возможность использования языка C# и комбинирования программирования с визуальным редактором. Так можно дописывать отсутствующие в стандартном наборе элементы.

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Промежуточной по функционалу, между платформами StockSharp и TSLab является платформа WealtLab. Она имеет визуальный редактор, правда, не очень хорошо развитый, и возможность использования языка программирования. Достоинством является отличный тестер стратегий.

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдераМодификация советника

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

Программы для создания эксперта

Одним из способов программирования торгового советника является использование специализированных программ. Функционально они мало отличаются от описанной выше платформы TSLab и друг от друга и разработаны для снижения трудоемкости написания исходного кода. Создание самой торговой системы остается за трейдером.

Одной из таких программ является Forex EA Generator, реализующая блочную схему построения эксперта. Программа предполагает наличие минимальных знаний проектирования механических торговых систем.

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Программа Gordago Forex Optimizer разработана с функционалом, приближенным к торговой платформе. Помимо создания советника она позволяет тестировать разработку на истории, а так же осуществлять с ее помощью торговлю, в случае наличия доступа к торговым серверам. Работа с программой интуитивно понятна – начало работы начинается с задания условий входа в рынок и выхода из него, задания инструментов анализа рынка. Функционал программы позволяет использовать разработанные эксперты в МТ4.

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Сервис копирования сделок RAMM от AMarkets

Что такое сервис RAMM и как в нём копировать сделки

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Полностью в автоматическом режиме эксперты создаются в программе Hlaiman EA Generator. Программа работает с торговой платформой МТ4. Для создания эксперта необходимо добавить на график желаемые инструменты технического анализа и нанести на график стрелки, указывающие места и направления входа в рынок, где осуществил бы вход сам трейдер. После этого программа самостоятельно просчитывает заданные условия входа и разрабатывает алгоритм робота. При этом качество отработки условий входа зависит от качества и количества заданных точек – они должны расставляться строго в соответствии с разработанной стратегией и таких точек должно быть нанесено максимальное количество. К сожалению, программа отсутствует в свободном доступе, что не позволяет провести тестирование созданных с ее помощью советников.

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдераЗаключение

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

Источник

Создание торговых роботов: 11 инструментов разработки

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

В нашем блоге мы много внимания уделяем вопросам алгоритмической и автоматизированной торговли на бирже, рассматривая, как теоретические аспекты, вроде выбора языка программирования, так и практические — например, реализацию системы событийно-ориентированного бэктестинга на Python.

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

TradeScript (SMARTx)

В торговом терминале компании ITinvest под названием SmartX есть специальный плагин с конструктором торговых роботов TradeScript. С помощью простого, но довольно мощного скриптового языка трейдеры могут создавать механические системы различного уровня сложности.

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

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Язык TradeScript был изначально создан американской компанией Modulus FE специально для написания на нем торговых роботов. Он довольно прост в изучении, а многие алгоритмы схожи по написанию с Metastock, что облегчает работу пользователям, знакомым с этим программным пакетом.

Плюсом TradeScript по сравнению с Wealth-Lab и тем же Metastock является отсутствие необходимости создания сложных конструкций и использования различных коннекторов для передачи приказов в торговый терминал. Конструктор роботов встроен в SmartX, что позволяет добиваться значительно более высокой надежности и быстродействия.

Ниже представлен код торговой стратегии на TradeScript:

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

Более подробно вопрос написания торговых роботов на TradeScript мы рассматривали в наших предыдущих материалах (первый, второй).

CQG Integrated Client

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

Wealth-Lab

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

TSLab

Инструмент TSLab позволяет торговцам создавать механические системы разной степени сложности. Существуют возможности создания торгового робота и его тестирования на исторических данных. Существуют различные модули программы, например модуль управления риска, который прежде чем отправить заявку на биржу, проверяет ее на соответствие заданным условиям. Если ордер им не удовлетворяет, то будет отклонен. Таким образом можно ввести дополнительный контроль за работой скрипта.

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

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

LiveTrade (CoFiTe)

Программный комплекс LiveTrade создан разработчиками петербуржской компании CoFiTe. Помимо прочего он включает в себя программное решение для создания торговых роботов — Robotlab. Этот инструмент, как и TSLab, позволяет трейдерам создавать автоматизированные торговые системы с помощью блок-схем в визуальном конструкторе:

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

После того, как торговая логика приложения реализована с помощью блок-схемы, ее можно запустить в терминале.

TradeMatic

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

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

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

SmartCOM

Открытый интерфейс торговой системы ITinvest также позволяет трейдерам создавать торговых роботов разной степени сложности и подключать внешние среды разработки и уже созданные в них торговые системы. Использование компонентной объектной модели позволяет подключать к торговым серверам брокера механические торговые системы, написанные на самых разных языках программирования. Например, C++, любой из.NET языков (C#, VB.NET и другие), Visual Basic, Visual Basic for Application (в частности из Microsoft Excel) и многих других.

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

MetaStock

Также популярный зарубежный продукт. Система MetaStock содержит обширную библиотеку индикаторов и средств для создания собственных формул. Также предусмотрен простой язык программирования, с помощью дополнительных модулей можно генерировать приказы на покупку и продажу.

Как и Wealth-Lab на российском рынке применяется в связке с торговыми терминалами, функционирующих с помощью дополнительных библиотек. Это может приводить к различным сложностям интеграции, а также негативно влиять на надежность работы получившейся связки.

StockSharp

Бесплатная в базовой версии платформа StockSharp с открытым исходным кодом. На ее основе разработаны продукты для создания торговых роботов.

Как пишут сами разработчики в своей статье на Хабре, проект StockSharp построен по классической модели развития сложного программного обеспечения. В начале создается некая основа (S#.API), и уже с помощью нее создаются надстройки высокого уровня.

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

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

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Название системы — сокращение от Quickly Updatable Information Kit (Быст-обновляемая информационная панель). Изначально Quik являлся информационной системой, «фишкой» которой была высокая скорость доставки данных, однако впоследствии продукт эволюционировал. До версии 6.4 в Quik предоставлялся встроенный скриптовый язык Qpile. Он обладал небольшим набором возможностей по сравнению с языками высокого уровня (C# или C++) и использовался главным образом для автоматизации простых торговых стратегий.

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

Версии Quik старше 6.4.0 поддерживают скрипты на Lua. Этот язык также встроен в терминал, довольно прост и обладает большей функциональностью, чем Qpile. Поскольку Lua – это интерпретируемый язык, то для работы с его кодом используется специальная библиотека QLua.

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

TRANSAQ

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

Создавать роботов можно как с помощью подключения к TRANSAQ внешних сред разработки вроде Metastock, Omega, Wealth-Lab, так и при помощи встроенного языка программирования ATF (Advanced Trading Facility). По этому языку есть довольно подробная документация, в которой, помимо прочего, представлены и примеры кода готовых роботов.

Источник

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

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

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

получить данные из терминала 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) Класс XLTable, реализующий приведение данных из формата Excel к обычному виду (все необходимые файлы есть в приложении к статье)
2) Библиотека NDde.dll для создания DDE сервера

Сформируем класс для работы с DDE сервером:
class MyDDEServer: DdeServer
<
public MyDDEServer(string service): base(service)
<
>
>
В этом классе должны быть предусмотрен минимальный набор функции:
1) Регистрация сервера
2) Разрегистрация сервера
3) Событие срабатывания таймера для получения новых данных
4) Метод для обработки принятия данных

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

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

Источник

Инфраструктура и торговые роботы: Какие языки программирования используются в сфере финансов

Язык программирования для трейдера. Смотреть фото Язык программирования для трейдера. Смотреть картинку Язык программирования для трейдера. Картинка про Язык программирования для трейдера. Фото Язык программирования для трейдера

Биржевая торговля — это высокотехнологичная отрасль. В нашем блоге на Хабре мы рассказывали о том, какие протоколы используются для передачи финансовой информации (раз, два, три, четыре), демонстрировали инфраструктуру узла финансового трейдинга и описывали процесс оптимизации производительности торгового терминала.

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

Финансы и программирование: краткий обзор

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

Значительная часть инфраструктуры брокерских компаний и бирж создана с применением языка C++ — с его помощью создаются самые разные продукты от библиотек для расчета ценовых моделей производных инструментов до модулей обработки потоков данных. Неудивительно, что специалисты, знающие этот язык, крайне востребованы в сфере финансов.

Кроме того, крайне востребованными языками программирования являются C# и Java. Эти языки реже используются для непосредственного решения инфраструктурных задач, однако на рынке можно часто встретить торговых роботов, модули которых реализованы на этих языках. Кроме того финансовые компании могут использовать их для реализации различных фронтенл-сервисов. Специалисты по C# и Java также востребованы в таких компаниях.

Отдельный пласт представляют собой скриптовые языки — например, Python, MATLAB и R. Их часто используют для описания торговых стратегий и прототипирования квантовых моделей. Часто трейдеры пишут код своих прототипов на скриптовых языках, а позднее уже описывают их с помощью более производительных языков вроде C++.

Однако в некоторых случаях механические торговые системы могут быть целиком реализованы на скриптовых языках. Некоторые из таких инструментов, вроде языка TradeScript, даже включают в торговые терминалы, что позволяет пользователям быстро «набросать» торговую стратегию, не отвлекаясь от анализа котировок и графиков.

Ниже представлен код на TradeScript, с помощью которого описана торговая стратегия, использующая для генерации сигналов индикаторы Parabolic SAR и экспоненциальные скользящие средние (exponential moving average, EMA). В данном случае, для входа в позицию используется 20-периодная и 60-периодная EMA, а для выхода из нее — параболическая система.

Написание торговых роботов

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

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

Еще один вариант — это ситуация, при которой требуется производить значительные вычисления, но не обязательно в режиме реального времени. В таких случаях может быть оправданным использование интерпретируемых языков Python, R или TradeScript.

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

Советы экспертов

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

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

В ходе дискуссии о выборе языков программирования для создания торговых роботов на сервисе Quora PhD-профессор Принстонского университета и руководитель департамента разработки компании Flexport Эндрю Ледвин, высказался о том, какие инструменты нужно выбирать для описания самой торговой стратегии:

Здесь нам нужно генерировать приносящие прибыль правила работы, основываясь на различных сигналах. […] На данном уровне ключевым моментом является выразительность языка. Часто на нем используются языки вроде Python или даже C++ с Java, но я считаю идеальным вариантом Haskell или Ruby в качестве «обертки» с последующей разработкой ключевых модулей на более низкоуровневых языках.

Еще один важный этап — поиск сигналов. Чаще всего это офлайн-активность, в ходе которой анализируется большое количество статистики с учетом ограничений систем реального времени. Здесь используют инструменты вроде R или Matlab (как тот же Goldman). Важна возможность машинного обучения и работы с большими объёмами данных с минимальными усилиями. Но вообще, здесь главное результат — если вам удается добиваться его с помощью Excel, то кому какое дело?

В том же треде разработчик сервиса YCharts Джеффри Шек в тех случаях, когда речь не идет о высокочастотной торговле, советовал обращать внимание на C#, Java или Python, а также не забывать о средствах разработки, обеспечивающих работу «бухгалтерской» части торговой системы:

Если вам нужно агрегировать данные для анализа, то скорее всего вы захотите использовать что-то с большим количеством библиотек, довольно быстродействующим, с большим количеством уже написанного кода для решения разных задач (чтобы каждый раз не изобретать колесо). Чаще всего это будет что-то типа C#, Java или Python.

Также крайне важны языки для обработки данных. Хотите сохранить каждую заявку по акциям Microsoft за день? Попробуйте сделать это с помощью SQL-базы данных (MySQL, SQLite и т.п.). Весьма вероятно в таком случае вам придется потратить много часов на оптимизацию, прежде чем на основе этих данных удастся совершить сделку.

Я бы рекомендовал обратить внимание на языки, которые позволяют хранить данные в колоночном формате (а не в строковом) — это хорошо подходит для тиковых данных. Среди подобных технологий можно назвать KDB, OneTick, SECDB (созданная в Goldman Sachs). Если же нужно просто хранить цены акций, то отлично подойдут и MySQL с PosgreSQL

В интервью нашему блогу разработчик терминала SmartX Андрей Горьковенко говорил о том, что собственного торгового робота создавал с помощью C# и C++:

Эта связка языков — C# и С++ — крайне жизнеспособна. На то, чтобы написать новую торговую стратегию или видоизменить старую у меня уходить час-два времени. В случае сложной математики — день-полтора. При этом в систему встроена функция бэк-теста, новую стратегию можно тут же протестировать на исторических данных. Кроме того, есть генетические алгоритмы, с помощью которых можно оптимизировать стратегии.

Для этих задач очень хорошо подходит C++ и чистый C. Бывает и так, что быстрые роботы создаются и чуть ли не на ассемблере — здесь стоит упомянуть механизмы прямого чтения-записи данных в память сетевой карты, минуя стандартные механизмы работы через драйверы, а также работу с «супербыстрым программируемым железом» вроде FPGA.

Основатель платформы StockSharp Михаил Сухов так описывает области применения различных языков программирования:

Языки в трейдинге можно условно разделить на две подгруппы:

1) Платформенные языки. R, Matlab и так далее. Качество языков неотрывно связанно с самой платформой, поэтому разбор отдельно языка и сравнение его с аналогом не несет особо смысла. Если вам отлично подходит какая-то платформа, но при этом язык крайне неудобен, то вам придется использовать его независимо от всех недостатков. И, наоборот, в случае прекрасно удобного языка на неудобной платформе данный язык все равно не будет выбран для разработки.

2) Платформо-независимые языки. C#, Java, С++, Python и т.д…

а) Java и C# (=.NET) практически идентичные платформы. Java в основном используется на *nix подобных системах. C# на Windows. Мы выбрали C# в качестве основы нашей платформы StockSharp, потому что трейдеров под Windows больше, чем трейдеров под другие системы (Андроид не в счет, так как мобильные платформы являются дополняющими, а не основными).

б) Что касается C++, то среди трейдеров практически не развит из-за своей сложности. Но его используют профессиональные программисты, пишущие системы с большой нагрузкой и быстротой реакции.

в) Python (в эту категорию можно занести языки вроде List, Haskell) являются простыми средствами для решения алгоритмических задач. Трейдеры чаще выбирают данный язык. Но для построения платформы подобные языки ограничены из-за слабой интеграции с операционными системами, низкой производительности и отсутствием хороших графических библиотек.

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

Заключение

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

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

В итоге вполне может существовать система, в которой для быстрой работы с процессором используются C++ или CUDA, для обработки данных применяется Java, для тестирования на исторических данных используется Python, а отчеты создаются с помощью Excel/VBA.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *