Си Шарп Алго. Часть1. Введение.

Си Шарп Алго. Часть1. Введение.

Решил написать серию постов о том, как освоить Си Шарп и как начать писать роботов на Си Шарп. С какой стороны подходить. Что это даст. Проспект по написанию роботов на C# от специалиста. Полезно это будет в первую очередь начинающим программистам и всем тем, кто хочет перейти из ручной торговли в алго. Т.е. почти всем.

Несколько лет занимаюсь разработкой торговых роботов, для себя и на заказ. Пишу в основном на своей библиотеке. Само собой в ней я пишу роботов на Си Шарп. Иногда пишу на СтокШарп, если просят. Подключал: Квик, Транзак, СмартКом, Плазу. Весной 2015 клиент попросил перенести стратегии из ВелсЛаба. И его освоил.

В общем. Серия статей будет интересная.

 

Поехали!

 

Почему торговые роботы на Си шарп?

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

Классная ворованная у Яндекс говорящая картинка.

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

  • C#;
  • C++;
  • VBA;
  • Delphi.

Начну с конца:

Delphi, он же Objective Pascal

попытка угнаться за мощностью подходов к программированию С++, обеспечив при этом более высокую отказоустойчивость и читаемость. Изначально разрабатывался специально как вводный язык для начинающих программистов. Поэтому был одним из самых простых в освоении и популярным до появления C#. Которым ныне почти совсем вытеснен из ниши простых и мощных. Самый редкий выбор для программиста МТС.

VBA - встроенный язык офисных приложений от Microsoft. Простой в освоении. Медленный и печальный. Выбор VBA обусловлен возможностью стандартного вывода данных о торгах из Quik в Excel, который в свою очередь и поддерживает этот самый язык. Такое положение вещей вызывает у начинающего алготрейдера уверенность в том, что дописав пару скриптов в Excel он получит готового робота. Возможно, так и есть, но здесь надо знать о том что "Чудо" на VBA не напишешь. Ну и скорости данной технологии поражают воображение (в плохом смысле). Свежих бенчмарков гугл не предоставил, но вот википедия подтверждает: http://ru.wikipedia.org/wiki/Visual_Basic

C++

быстрый и сложный.

Язык не является лидером по популярности среди алготрейдеров, потому как сложен при освоении и является избыточным для программирования МТС.

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

С каждым годом С++ теряет своё преимущество в скорости перед C#. Это связано с агрессивным развитием платформы .net, которая год от года становиться быстрее.

Программирование на С++ входит в обязательную дисциплину HFT арбитражеров \ фронтраннеров. Ну и размещая МТС на сервере биржи, рассчитывая потягаться с условным Фишманом (собирательный образ злого HFT алготрейдера) необходимо задуматься над тем, что неплохо бы было иметь соответствующее ПО.

Но опять же, ходят слухи) что для многих стратегий внутри минуты скорость не является главным фактором прибыли. Надо ещё ВНЕЗАПНО! знать в какую сторону пойдёт рынок.

Роботы на С#

структурированный и упрошённый наследник С++.

Пишут роботов на C# повсеместно. Это самый распространённый язык для программирования торговых роботов и программного обеспечения для трейдинга в России.

Вот некоторые причины его популярности:

  • 1.Низкий порог входа. Незамысловатая ООП архитектура и пакет "all inclusive";
  • 2.Абсолютное спокойствие Microsoft по поводу пиратов и соответственно мгновенное появление Visual Studio Ultimate (это такая программа для создания других программ) на файлообменниках в годном виде и самой последней версии. Возможно, это такай пиар ход и элемент демпинга, как утверждают многие олдфаги, вспоминая беспрепятственное распространение пиратских Windows, приведших как известно к отсутствию конкуренции у Microsoft в области ОС и последующему @н@льному рабству всей планеты перед тёмным властелином;
  • 3.Наличие хорошей учебной литературы по теме и отличной поддержкой со стороны интернет сообщества. Тут вообще интересная штука. Пока учился в институте не раз замечал что по C# любую информацию найти гораздо проще чем по С++, хотя первый появился много позже;
  • 4.Наличие библиотек для трейдинга на C#. Сток Шарп например.

Некоторые причины его ненавидеть:

  • 1..net. Т.е. пожизненная привязка к Windows со всеми вытекающими.
  • 2.Платность. Хотя в России это не актуально, думается, что вероятность прекращения ада в этой стране не равна нулю и быть может выучив сейчас С# через пять лет придётся платить деньги, за то чтобы на нём писать.
  •  

Заключение

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

Ещё раз отмечу, что писать можно на чём угодно. Если вы писали на VBA, или Delphi - надо писать на этих языках. Но если стоит задача войти в алготрейдинг по взрослому с нуля - надо однозначно учить Си Шарп.

Си Шарп - явный лидер по плюсам для написания роботов, с какой стороны не посмотри.

Торговые роботы на СиШарп - это хорошо!

 

Удачных алгоритмов!

 

P.S.

Обсуждаем в телеграмме: https://t.me/o_s_a_chat

Канал проекта: https://t.me/bad_quant

23:43
11759

7 комментариев

18:37
Почему не упомянули Java?
14:22
Прошу прощения за долгий ответ.
Платформа новая, только недавно разобрался как уведомления о комментариях получать.
Ответ:
Не помню. Писал статью давно sib-algo.ru/must-read/язык-программирования-алготрейдера.html.
Для полноты картины действительно надо обязательно добавить про Java. Записал себе.
15:11
Что насчёт Python? Низкий порог входа, лаконичность, кроссплатформенность, обилие инструментов работы с данными/статистикой.
22:52
Да уж, про Phyton интересно т.к. основы программирования начал изучать с него, но уткнулся в коннекторы, кубики для TSlab написаны на C#, вот хотелось бы авторитетного мнения.
04:57
+1
Много воды утекло с этого поста.
Понятное дело сейчас бы я пожесче написал.
Ну нету торговых платформ на Питоне популярных. Только С++ и C#. Всё остальное можно сказать игрушки.
Роботы — очень ресурсоёмкие и архитектурно-сложные штуки.
Кроссплатформенность здесь не может быть в принципе. Только в узкой какой-то теме. Ибо в большинстве своём именно коннекторы заточены только под Windows. У нас сейчас 14 штук, и из них на Linux не запуститься и половина.
13:56
Добрый день. И где продолжение?