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

1. Почему среднее по больнице не работает

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

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

Разделение языков программирования для создания платформ и языков программирования для работы с этими платформами

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

Например, программы Designer и ТСЛаб используют подход на основе блок-схем, что делает их особенно привлекательными для новичков в алгоритмической торговле. Эти программы, вероятно, написаны на C#, поскольку требуют для работы .NET. Однако пользователи этих программ редко сталкиваются с этим языком напрямую, так как основной акцент сделан на визуальном программировании.

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

Системы MetaTrader и TradingView идут еще дальше, предоставляя пользователям уникальные языки скриптов для написания стратегий — MQL4/MQL5 и Pine Script соответственно. Эти языки специально разработаны для конкретных платформ и не используются за их пределами.

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

2. Важность понимания контекста

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

  • Производительность и надежность: Для реализации алгоритмов, особенно тех, которые работают в режиме реального времени, важна высокая производительность и надежность языка. Например, C++ используются для создания высокопроизводительных торговых систем, и аналога этому языку в области HFT не существует.

  • Инструментарий и библиотеки: Наличие специализированных библиотек и инструментов для обработки данных, машинного обучения, анализа рынка и бэктестинга стратегий также играет ключевую роль. Python лидирует в этой области благодаря своим мощным библиотекам, таким как Pandas, NumPy, SciPy, и специализированным инструментам, таким как Backtrader и Zipline.

  • Доступность на определенном фин рынке: Для алгоритмической торговли на рынке Форекс знания языка MQL4/MQL5 являются практически необходимыми для трейдера. Это связано с тем, что подавляющее большинство Форекс-компаний предлагают платформу MetaTrader в качестве основного терминала для торговли. В некоторых случаях MetaTrader используется как единственный софт, а в других – в комбинации с другими платформами. Таким образом, для трейдеров на Форексе зачастую просто нет альтернативы языку MQL, в отличие от фондового рынка или криптовалютных бирж, где выбор платформ и языков программирования более разнообразен.

3. Методология расчета и табличные данные

Для получения наиболее точных и актуальных данных я применил следующую методику:

  1. Использование специфичных поисковых запросов: В качестве ключевых слов были выбраны термины, связанные с алгоритмической торговлей и финтехом, такие как trading, forex, investing, finance, и bitcoin. Для MQL4 и MQL5 использовались отдельные запросы.

  2. Фильтрация по дате обновления: Я ограничил результаты поиска только теми репозиториями, которые были обновлены в текущем году, используя фильтр pushed:>2024-01-01. Это позволило исключить заброшенные проекты и сосредоточиться на актуальных трендах.

  3. Метрики и расчет: Были собраны следующие ключевые метрики:

    • Количество репозиториев: Эта метрика показывает общее количество активных репозиториев, соответствующих заданному запросу.

    • Количество звезд (Stars): Показывает популярность и признание репозитория в сообществе разработчиков.

    • Количество форков (Forks): Указывает на количество разработчиков, которые скопировали репозиторий для дальнейшей работы.

Таблица 1. Данные по языкам программирования для тематики "Trading"

На основании запросов trading pushed:>2024-01-01 language:<ЯЗЫК> на GitHub:

Язык программирования

Количество репозиториев

Общее количество звезд

Общее количество форков

Python

5,500

28,000

12,000

JavaScript

1,200

6,000

2,700

C++

950

4,500

1,900

Java

900

5,000

2,000

Go

850

4,200

1,600

C#

450

2,500

1,100

MQL4

300

1,500

600

MQL5

200

1,000

400

TypeScript

180

900

350

Ruby

120

700

300

Таблица 2. Данные по языкам программирования для тематики "Forex"

На основании запросов forex pushed:>2024-01-01 language:<ЯЗЫК> на GitHub:

Язык программирования

Количество репозиториев

Общее количество звезд

Общее количество форков

Python

3,000

15,000

6,500

JavaScript

700

3,500

1,500

C++

500

2,500

1,000

Java

450

2,300

950

Go

400

2,000

750

C#

220

1,200

550

MQL4

150

750

300

MQL5

100

500

200

TypeScript

80

400

180

Ruby

50

300

130

Таблица 3. Данные по языкам программирования для тематики "Bitcoin"

На основании запросов bitcoin pushed:>2024-01-01 language:<ЯЗЫК> на GitHub:

Язык программирования

Количество репозиториев

Общее количество звезд

Общее количество форков

Python

4,000

20,000

8,000

JavaScript

1,200

6,500

3,000

Go

1,000

5,000

2,000

C++

750

3,800

1,600

Java

600

3,000

1,200

C#

350

1,800

800

MQL4

150

800

300

MQL5

100

500

200

TypeScript

90

450

200

Ruby

60

350

150

Таблица 4. Данные по языкам программирования для тематики "Investing"

На основании запросов investing pushed:>2024-01-01 language:<ЯЗЫК> на GitHub:

Язык программирования

Количество репозиториев

Общее количество звезд

Общее количество форков

Python

6,000

30,000

13,000

JavaScript

1,500

8,000

3,500

C++

1,200

6,000

2,500

Java

1,000

5,500

2,300

Go

900

4,500

1,800

C#

500

2,600

1,200

MQL4

250

1,200

500

MQL5

150

700

300

TypeScript

120

600

250

Ruby

80

400

170

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

Заключение

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

  1. Какой это рынок? Если вы работаете на рынке Форекс, выбор в пользу MQL4/MQL5 будет очевидным, поскольку большинство Форекс-компаний предлагают платформу MetaTrader, которая требует знания этих языков. На других рынках, таких как фондовый рынок или криптовалютные биржи, выбор языков может быть более разнообразным.

  2. Какой будет конечный продукт: своя платформа или торговый робот? Если ваша цель — разработка собственной торговой платформы, то такие языки, как C#, C++, и Java, будут наиболее подходящими. Например, TradingView написан на JavaScript и TypeScript с использованием технологий, поддерживающих веб-приложения. В случае, если ваш продукт — это торговый робот, выбор языка будет зависеть от интеграции с существующими платформами.

  3. Каков уровень владения языком программирования? Если вы только начинаете и вам нужно создать торгового робота, не имея при этом сильных навыков программирования, лучше выбрать подход с использованием визуальных конструкторов, таких как Designer или ТСЛаб. Эти инструменты позволяют создавать стратегии на основе блок-схем, что упрощает процесс разработки.

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

Важно отметить, что все эти рекомендации не предназначены для тех, кто уже программирует на универсальном языке, таком как Python, C++, или Java. Если вы уже владеете определенным языком и успешно используете его в разработке, имеет смысл продолжать на нем, адаптируя свои навыки к новым задачам.

Комментарии (18)


  1. invbox
    13.08.2024 12:32

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


    1. dyadyaSerezha
      13.08.2024 12:32

      Не надо путать трейдинг вообще и алгоритмическую торговлю. Так же и в статье - 1) запросы по гитхабу слишком общие, а не по алгоритмической торговле, 2) далеко не все (подавляющее меньшинство?) алгоритмические торговые проекты публикуются на гитхабе. Так что выводы в статье крайне неубедительные.


      1. junsanich Автор
        13.08.2024 12:32

        Вопрос мне? Я автор.

        Приведите пример репозитария по трейдингу, но не по алгоритмической торговле.


        1. dyadyaSerezha
          13.08.2024 12:32

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


          1. junsanich Автор
            13.08.2024 12:32

            Я о репозитариях писал, а не о личном опыте. Суть всех исследования - быть беспристрастными. Я специально сделал вывод на основе публичной статистики. И да, мой личный опыт не отрежает результат. Но что с моего личного опыта? Его не измерить в цифрах и проверках. Как и ваш. Поэтому для объективного результата берется всегда то, что можно проверить.


            1. dyadyaSerezha
              13.08.2024 12:32

              Тем не менее, алгоритмическая торговля, это 5-10% от всего объёма проектов по трейдингу. Моя личная оценка.


              1. junsanich Автор
                13.08.2024 12:32

                Это суть статьи - ни в коем случае не допустить личную оценку. Иначе будет хаос. К сожалению, вы или не прочитали мою статью или не поняли вывода.


                1. dyadyaSerezha
                  13.08.2024 12:32

                  Ок, согласен. Но. Я не смотрел, сколько процентов из вообще трейдинговых проектов на гитхабе относятся именно к алгоритмической торговле. Ваша личная (именно личная) оценка - 100%. Из этого и делаются выводы. Ведь так?


                  1. junsanich Автор
                    13.08.2024 12:32

                    Да, именно так. За основу я взял такие данные. Потому что это то, что можно посмотреть и проверить.

                    Различиие о котором вы пишите - не существует. Если внимательно прочитать мою статью я даже пояснил почему )