понедельник, 12 июля 2010 г.

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

Прислали мне ссылки - http://www.quik.ru/forum/expert/57093/57093/ и http://quik.ru/forum/expert/57323/57323/. Прочитал, местами было интересно.

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

Понятно, что для себя я этот вопрос решил давно. Но для тех, кто только начинает разработку роботов, могу дать совет:

  1. Если давно используете какую-то систему Тех Анализа, то продолжайте писать на том языке, что там присутствует.
  2. Если решили написать робота в виде отдельной программы, выбирайте тот, что популярнее для алго трейдинга. А понять, какой именно язык самый-самый на российском рынке очень просто - по поддержке от вендоров. Возьмем китов: Quik, ИТ Инвест, Алор, Альфа Директ и NetInvestor:

    • Quik - для TRANS2QUIK.dll имеет два примера: один на C#, другой на C++.
    • ИТ Инвест - для SmartCOM имеет один пример на C#, документация так же написана с применением этого языка.
    • Алор - для Алор Трейд с COM объектами имеет один пример на C++, другой на C#.
    • Альфа Директ - для API имеет один пример на C#, один на Dephi, один на C++. Документация на C++, C#, VB, Delphi.
    • NetInvestor - для NIAPI имеет два примера: один на C#, другой на C++. Руководство пользователя - на C#.

    Итого (один бал за документацию, один за пример):

    • C# - 8 = 1 + 2 + 1 + 2 + 2
    • C++ - 5 = 1 + 1 + 2 + 1
    • Dephi - 2 = 2
    • VB - 1


Теперь о быстроте C++, которая была упомянута в тех ссылках. Как правильно заметили в той переписке, быстрота необходима для High Frequency Trading. Ни один из выше приведенных вендоров не дает такую пропускную способность, которые бы удовлетворяла подобному типу роботостроения. Дополнительно, это масштаб крупных игроков, которые могут позволить не только прямой доступ к бирже, но так же хостинг своих серверов на биржевых площадках. Для частников, в скорости С++ не даст никаких преимуществ. Минусов, особенной не для программистов (а трейдеры не занимаются программирование углубленно), очень много. И сложность языка, и чувствительность к ошибкам, и сложность в отладке и поиске ошибок... Море. Я писал на этом языке. Ничуть не огорчен, что ушел от разработки на С++. А как показывает тенденция софтверных гигантов, от C++ отказываются все больше и больше компаний.

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

А теперь вопрос, как же на западе? А на западе все давно решено: WealthLab, QuantDevelop, OpenQuant, RightEdge - все они поддерживают C#.

Остались вопросы с тем, какой язык необходимо выбирать?

4 комментария:

  1. Лично мне С++ больше импанирует, больше гибкости, что ли. Хотя, возможно, просто привычка осталась, и/или еще не до конца освоился с C#. Несколько напрягает делать постоянное приведение типов, работа с массивами не настолько удобная. Но все же согласен, за C# будущее, прогресс не остановить :)

    ОтветитьУдалить
  2. Постоянное приведение типов и в C++ неправильно, не то что в C#. Надо менять подход - templates, generics. Насчет массивов не понял.

    ОтветитьУдалить
  3. C# однозначно легче. Если пишется отдельный софт без привязки к конкретной платформе, лучше Java.
    Хотя с прикладной точки зрения разницы никакой.

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

    ОтветитьУдалить
  4. NiApi.dll от NetInvestor отлично поддается для написания на Delphi. Все работает. Много приходится доходить самому, описание скудновато.

    ОтветитьУдалить