среда, 18 ноября 2009 г.

Преимущества и недостатки разработки торговых роботов на разных платформах

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

На данный момент можно выделить следующие группы ПО, где разрабатываются МТС:
1. Средствами внутреннего языка торгующей программы. Например, Quik и его QPILE. Преимущество такого такого подхода в том, что разработчики самой программы стараются максимально расширить свой внутренний язык, добавляя в него новые функции. Написанные скрипты получают данные значительно быстрее, нежели их получать из внешней программы (хотя это довольно спорное преимущество, потому как если написан алгоритм, который критично завязан на скорость исполнения, то такой робот лучше выносить в отдельное приложение, запускать его на сервере, и сервер подключать к торговому протоколу напрямую. Иначе и тормоза в работе, и проскальзование, и лосс). К недостаткам же можно отнести то, что скрипты работают не так быстро. Это и от того, что торговая система отдает преимущественно свои ресурсы своей основой задаче – торговле, и от того, что скриптовый язык разрабатывается под универсальные решения. А универсальность в ИТ мире редко когда идет рядом со скоростью.
2. Excel. Это просто мега система. По моему личному наблюдению, решения на Excel встречается практически во всех отраслях. Тут и бухгалтерия, и учет, и вычисление простых формул. Везде пробрался Excel, так что в инвестиционном бизнесе он не стоит особняком. Преимущество его использования кроется в банальном – на нем легко начать. Сравнительно простое создание формул, масса примеров, простой внутренний язык VBA – и вот уже на компьютере запущено некое решение на Excel. Минусы у данного подхода такие же как и у предыдущего пункта. К этому стоит добавить еще то, что на Excel не так уж тривиально интегрироваться с торговой программой, что для предыдущего пункта делать вообще не нужно. Отдельно можно выделить стабильность - всего один поток, и если он зависнет, зависнут как другие скрипты, так и не будет возможности перезапустить алгоритм (а Excel еще не научился вытаскивать себя из болота за волосы как Мюнхаузен), или даже перезапустить соединение с торгующей программой.
3. Аналитические программы (AmiBroker, WealthLab, MetaStock). Сами торговать не умеют, поэтому необходим некий адаптер подключения к торгующим программам (пункт 1). Преимущества и недостатки такие же как и у пункта 1 (я бы даже сказал, эти два подхода очень близки друг к другу). Дополнительным преимуществом является то, что аналитическая программа предоставляет для своего скрипта более богатый функционал. Плюс есть возможность подключать исторические данные для тестирования стратегий. Минусом является то, что, как и Excel, необходимо подключать к торговым системам, что еще более снижает производительность по сравнению с внутренним языком торгующей программы. И, как правило, нет возможности отследить потерю соединения.
4. Языки программирования (C#, VB, Java, Delphi). Основным плюсом такого подхода является, конечно же, скорость работы системы. Можно оптимизировать как сам алгоритм, использую любой подход, и сами формулы (кстати, формулы в большинстве случаев придется писать с нуля, потому что даже такая распространенная формула как скользящая средняя не будет присутствовать в языке; с другой стороны реализацию формул можно найти в Интернете, где можно найти и более сложные математические формулы, которые вряд ли будут присутствовать в аналитической системе), подстроив их работу под алгоритм, и соединение с торгующей программой. Особо критичные по скорости алгоритмы можно подключать к биржам напрямую, что дает преимущество в скорости отправки заявок и получения необходимой информации. Минусом является то, что из всех вышеперечисленных пунктов данный подход является самым сложным. Для начинающих в программировании я советую его использовать, когда уже есть готовая система, и ее хочется сделать стабильнее и производительнее. Но, еще раз предупреждаю, пройдет немало времени, прежде чем можно будет увидеть хороший результам (есть мнение, что можно этот самый хороший результат и вообще не увидеть – все зависит от знаний в программировании).

На фоне этих четырех пунктов моя библиотека Ecng.Trading относиться к пункту 4. Это именно библиотека для программирования под .NET (платформа содержит в себе языки C#, VB, C++, так что писать можно на любом из них). Преимущество и недостатки у нее точно такие, как и у данного пункта. Поэтому, основной целевой аудиторией при разработке библиотеки я сделал на людей, знакомых с программировании (трейдеров или программистов). Лично я программирую на языке C#, так как это самый перспективный и функциональный язык. Вот ссылки, которые я могу привести, чтобы начать программировать роботов с помощью Ecng.Trading:
1. Visual Studio – средство разработки, где пишется сама программа. Скачивать отсюда.
2. Электронный учебник по языку C# - отсюда.
3. Руководство использования Ecng.Trading - весь мой блог.

Комментариев нет:

Отправить комментарий