1. Введение
В наше время применение информационных торговых платформ стало обязательным условием успешной торговли на финансовых рынках. Они имеют ряд преимуществ по сравнению с обычными торговыми схемами, например, беспрецедентную скорость обработки и доставки информации до конечных пользователей, уровень интеграции с провайдерами данных, а также большой набор встроенных инструментов для технического анализа.
В то же время, инвестор, открывающий счёт с помощью брокерской фирмы, просто не может одновременно проводить анализ в реальном времени и торговать через 4-6 финансовых инструментов на нескольких рынках 24 часа в сутки 7 дней в неделю. Такая ситуация предполагает необходимость применения автоматизированных систем торговли в форме оперативных средств, состоящих из клиентской и серверной частей и программ для контроля таких систем (скриптов).
2. Сравнительный анализ проблемной области
Различные программные компоненты охватывают целый заданный сектор от рыночной аналитики и прогнозирования до торговли и управления. Компоненты торговой платформы предоставляют своим клиентам (брокерам, трейдерам, финансовым аналитикам и советникам) необходимые услуги именно тогда, когда они нуждаются в них. Это может быть что угодно – от мгновенного круглосуточного доступа к важной информации посредством мобильных устройств, до многоходовых торговых операций в основном клиентском терминале.
Рынок программного обеспечения предлагает большой выбор информационных и торговых платформ, которые различаются в первую очередь функциональностью клиентской и серверной частей и списком услуг, предоставляемых финансовой компанией с момента открытия счёта. Тем не менее, сравнительно небольшое число программных решений включает компоненты, автоматизирующие процесс торговли.
2.1. Решения, основанные на платформе
Одна из самых распространённых в мире торговых платформ - MetaTrader4, разработанная корпорацией MetaQuotes Software для торговли на рынке Форекс. Данная платформа включает интегрированную среду разработки (IDE) MetaEditor, предназначенную для написания скриптов на языке программирования под названием MetaQuotes, или MQL4. Синтаксис этого языка основан на классическом синтаксисе языка C, да и логика программы не претерпела существенных изменений в сравнении с предыдущей версией платформы, которая использовала MQL II в качестве языка программирования.
Новый пакет программ для автоматизации торговли, несомненно, является улучшенной версией предыдущего. Оба языка предлагают неплохой функционал, оптимальный набор встроенных торговых и сервисных функций, что важно для выполнения основных операций, а также средства для определения пользовательских функций, необходимых для воплощения нестандартных идей.
С точки зрения программиста, MQL4 намного более удобен, чем его предшественник; данный язык больше ориентирован на профессиональных программистов. MQL II, по моему мнению, напротив, больше подойдёт экспертам по финансам, желающим самостоятельно разработать торговую программу (или консультантам по трейдингу, если использовать терминологию MetaQuotes).
2.2. Решения, основанные на Omega Research
Большинство американских компаний используют платформу Omega Research, разработанную TradeStation Securities, Inc. Данная платформа уже давно доказала свою ценность для мирового рынка. Многие эксперты считают её лучшей системой для технического анализа на сегодняшний день. Предусмотренная IDE называется Omega Research PowerEditor предназначена для создания программ контроля на языке EasyLanguage (EL).
Основное преимущество этого языка, которое становится заметным сразу, это простота (отсюда и такое название) размещения приказов (ордеров) на открытие и закрытие. Соответствующие программные инструкции можно написать так же, как заказ для брокера, на обычном языке. При использовании MQL4, к примеру, размещение приказа (ордера) на открытие позиции будет включать в себя указание примерно десятка различных параметров. В работе с EasyLanguage, то же самое можно выразить одним коротким предложением из нескольких слов. Работать с техническими индикаторами тоже довольно просто. Но не всё так радужно: при создании таких простых команд, разработчики пожертвовали функциональностью и ограничили возможные способы использования той или иной функции. Поэтому пользователи данной IDE лишены возможности точно реализовывать собственные алгоритмы.
TradeStation решила не разрабатывать объёмные библиотеки встроенных торговых и сервисных функций и ограничиться только основным набором. По мере развития платформы росло и число функций, написанных разработчиками компании и сторонними специалистами, и TradeStation просто включила их в хранилище сценариев в качестве пользовательских функций. В результате получилось, что функционал, предлагаемый пользователям, не хуже, чем в MetaQuotes.
PowerEditor предоставляет пользователям встроенный словарь с возможностью поиска и помощи в работе с доступными функциями. Стоит отметить ещё один удобный инструмент – построитель стратегии. Используя этот инструмент, пользователь может с лёгкостью создать базовый алгоритм для своей торговой программы, а затем модифицировать и настроить его, если это необходимо.
EasyLanguage – пионер в деле разработки автоматизированных торговых систем для фондового рынка. Это было основой при разработке MQL II. EasyLanguage будет неплохим выбором для программистов, но он по-прежнему является лучшим решением для экспертов по финансам, больше ориентированным на анализ рынка, а не на торговлю.
2.3. Решения, основанные на ProTrader
Профессиональные эксперты по финансам могут выбрать платформы ProTrader2 или ProTraderFX в качестве рабочих инструментов в зависимости от рынка (фондовый рынок или Форекс соответственно). Обе платформы разработаны и обслуживаются PFSoft LLC. Помимо специально разработанного языка ProTrader Language (PTL), представленная IDE под названием PTL Builder также предоставляет возможность создания сценариев (скриптов) на MQLII, MQL4 и EasyLanguage. Для этого текст программы переведен в независимый от языка код. Таким образом, во время работы не имеет значения, на каком языке скрипт был написан. Данная технология позволяет не только создавать новые сценарии, но и даёт возможность свободно пользоваться всем набором сценариев, накопленным опытными трейдерами.
Основная идея при создании нового сценарного языка состояла в обеспечении максимальной надёжности и предсказуемости запуска сценариев. Язык PTL разработан таким образом, чтобы минимизировать вероятность допущения ошибок в тексте сценария (скрипта) пользователя – потенциально опасные точки будут выявлены ещё до того, как скипт будет протестирован или запущен.
Вне зависимости от того, какой язык программирования будет выбран, платформа работает с проверенным управляемым кодом в процессе запуска скрипта. Данная технология, разработанная компанией Microsoft, обеспечивает корректную обработку ошибок, которые не могут быть обнаружены до того, как скрипт будет запущен. Это значит, что программа сработает подобающим образом и не будет выполнять нежелательные операции, которые могут быть связаны с критическими ошибками или ущербом, нанесенным другой программой, который в итоге придётся возмещать владельцу счёта.
Интегрированная среда разработки PTL Builder хорошо подойдёт и экспертам по финансам, и программистам благодаря тому, что поддерживает разные языки программирования и предоставляет такие инструменты, как тестер и отладчик.
2.4. Сравнительный анализ решений
Все вышеперечисленные IDE имеют собственные специфические наборы функций. В таблице ниже приводится краткое сравнение возможностей каждой из сред.
3. Подходы к разработке Автоматизированных Систем Торговли и Рекомендации по их применению
Думаю, не стоит говорить о том, насколько важно следует подойти к вопросу выбора информационной и торговой платформы. Ниже приводятся некоторые замечания, основанные на моём личном опыте, которые следует учитывать тем, кто планирует пользоваться автоматизированной системой торговли.
3.1. Выбор среды для работы
Прежде всего следует определить тип задач, которые будет выполнять автоматизированная система торговли. Это могут быть задачи следующих типов:
Непосредственно трейдинг: открытие и закрытие позиций с помощью избранных инструментов.
Второстепенные функции по поддержке. Включают размещение защитных ордеров, создание и отправка отчётов и уведомлений.
Анализ рынка с помощью различных инструментов технического анализа с использованием собственного алгоритма.
Теперь, после того, как вы изучили комментарии пользователей в Интернете и, возможно, проконсультировались со своим брокером, следует перейти к испытаниям предлагаемых продуктов на практике. Настоятельно рекомендую вам не просто бегло просмотреть их, а протестировать систему в течение одного-двух дней. К счастью, большинство крупных компаний предоставляют открыть демо-счёт для тестирования. Обратите внимание на удобство работы с IDE и встроенных инструментов, а также на надёжность и безопасность контрольных программ, созданных IDE.
3.2. Разработка контрольной программы
Если вы планируете создание собственных сценариев, уделите время изучению документации языка программирования и IDE. Естественно, чтобы автоматизированная система торговли была умело организована, скрипты должны быть написаны профессионалами в области программирования и финансов. Если вы захотите использовать одну из классических программ, помните, что большинство из них представлены в виде пробной, демонстрационной версии. Они хороши для тестирования автоматизированной системы торговли или в качестве основы для ваших собственных программ, но от них мало толку, если использовать их как самостоятельные, готовые решения.
Если вы решили воспользоваться программами, написанными сторонними разработчиками, помните, что за все качественные решения нужно платить. Стоимость одной инновационной стратегии составляет от 300 до 500 долларов, а цена точно настроенных стратегий, использующих передовые математические и экономические техники, победителей сравнительных соревнований по автоматизированному трейдингу может достигать 1000 долларов.
3.3. Тестовые сценарии
Используя автоматизированную систему торговли, следует всегда тестировать свои сценарии. Процедура тестирования может происходить следующим образом:
1. Протестируйте программу с помощью тестера сценариев (если такая функция доступна в вашей IDE) несколько раз, меняя период графика, инструмент торговли и настройки программы. Постарайтесь смоделировать условия, близкие к рыночным.
2. Протестируйте сценарий на демо-счёте (если есть такая возможность). На данном этапе важно, чтобы программа работала в течение достаточно долгого времени (это определяется периодом графика). Не останавливайте тестирование, если программа принесла большую прибыль или большой убыток за раз. Практическую пользу сценария можно оценить только после того, как он проработает некоторое время.
3. Запустите сценарий на рабочем счёте. На данной стадии не рекомендуется вмешиваться в работу сценария, например, закрывать открытые им позиции или модифицировать его настройки – иначе вы можете нарушить внутреннюю логику программы.
3.4. Как не стать жертвой при выборе нужного сценария
Помните о том, что идеальных консультантов не существует. Не позволяйте им продать вам Бруклинский мост – если бы у вас была система, приносящая сказочные доходы, стали бы вы её продавать? Здесь можно дать только один совет с полной уверенностью – проводите подробное всестороннее тестирование предложенного сценария.
Обычно продавцы сценариев описывают свою продукцию результатами собственных испытаний. Однако, в большинстве случаев, эти результаты искажены. Помните, тестирование должно производиться на нескольких историях, иначе можно просто соединить разные фрагменты разных историй и продемонстрировать заоблачные результаты. Основываясь на теореме NFL, справедливо было бы отметить, что невозможно создать универсальный идеальный сценарий для любых инструментов.
Не секрет, что некоторые программисты используют сложные математические инструменты, чтобы снабдить свои программы нейронными сетями искусственного интеллекта, алгоритмами прогнозирования и эволюционными алгоритмами. Не советую переоценивать такие сложные системы алгоритмов, так как они достаточно чувствительны к ошибкам и настройке параметров. Простые схемы, с другой стороны, не очень-то полезны для консультантов, когда дело доходит до генерирования сигналов торговли и нужны только для повышения цены на сценарий.
4. Заключение
В данной статье я не рассматриваю какие-либо правила программирования для создания советчиков, не говорю о специфике написания сценариев на разных языках. Этим темам посвящено множество книг и статей. Моя цель – обратить ваше внимание на некоторые нюансы, которые, я считаю, не были освещены в уже существующих публикациях.
Итак, нужны ли нам автоматизированные системы торговли, или они только приносят вред? Если использовать их с осторожностью, не спеша, автоматизированные системы торговли могут упростить работу экспертов по финансам и принести прибыль. Если же использовать такую систему некорректно, без предварительного тестирования, часто изменяя настройки, она может способствовать потере средств, вложенных в неё.
Помните о том, что автоматизированная система торговли не будет делать за вас всю вашу работу, не требуя никаких усилий с вашей стороны. Используйте её для того, чтобы решать уже существующие проблемы, а не для создания новых.
5. Ссылки
1. MetaQuotes — разработчик MetaTrader, MQL2 и MQL4
2. TradeStation — разработчик TradeStation и EasyLanguage
3. PFSoft — разработчики ProTraderFX, ProTrader2 и ProTraderLanguage