А.С.
А.С. личный блог
28 октября 2020, 16:03

На какой язык программирования сделать упор

Добрый день. Меня зовут Алексей, и я разработчик, т.е. будущий разработчик торговых роботов.
Собственно почему я пишу здесь: 
Меня интересует какой язык программирования начать изучать углубленно, технологии, фреймворки может быть, чтобы быть востребованным как разработчик торговых алгоритмов в финансовой сфере. Я бы с удовольствием работал в Unitedtraders, потому что знаю точно, они этим занимаются и даже своего робота как то выставляли на ЛЧИ, и делали сумасшедшие проценты прибыли. Но дело не в том, как они это сделали. В том что я хочу развиваться в этой сфере. Я уверен что они не одни, и есть много других фирм, банки да и просто инвестиционные компании, крупные компании проп трейдинга конце концов. 
На текущий момент мои навыки таковы: я знаю что такое программирование (база), что такое ООП тоже знаю, да и его принципы могу перечислить наизусть. Но пока не решил куда двигаться в JAVA или С# окончательно. Мне нравиться JAVA за ее гибкость и opensource. плюс можно переметнуться в android разработку(ха-ха, мало ли вдруг все таки, как окажется не рожден для трейдинга — даже алгоритмического). 
104 Комментария
  • 3Qu
    28 октября 2020, 16:05
    Lua, C++, Python. SQL
  • Андрей К
    28 октября 2020, 16:05
    вы сейчас не юморите? =)
      • Андрей К
        28 октября 2020, 16:09
        А.С., лучше приоритет в выборе компаний сменить =) Да и вообще робот был чужой на лчи
          • Андрей К
            28 октября 2020, 16:18
            А.С., вообщем, когда я искал работу, но это был 2015, сделал главный вывод: если ориентироваться на Запад — то Java, если на РФ, то можно и на C#. Но это если метаться между C# и Java.

            Но это все для того, чтобы писать какие то платформы торговли. Обобщенные. Ну или платформы для стратегий.

            Еще рынку нужны узкоспециализированные крайности. Одна крайность — это C++, вторая крайность — Python, R и тд. Обе краности решают совершенно разные задачи. Вторая крайность больше для квантов.

            Тут нужно для себя решить куда шагать.
            • Дед Панас
              28 октября 2020, 16:23
              Андрей К, а JS. Это туфта?))
              • Андрей К
                28 октября 2020, 16:53
                Дед Панас, пока даже не пойму, как его в трейдинге применить =)
                • Дед Панас
                  28 октября 2020, 17:02
                  Андрей К, зачем в трейдинге? я в роботов не верю. Только среднесрок лонг на свои.
            • bwc
              28 октября 2020, 16:24
              Андрей К, есть крайности крайнее C++ ^_^
              • Андрей К
                28 октября 2020, 16:50
                bwc, чего там еще придумали? а то я уже не в курсе =)
                • bwc
                  28 октября 2020, 17:01
                  Андрей К, все старое, проверенное временем: C, asm, VHDL
                  • Андрей К
                    28 октября 2020, 17:10
                    bwc, аа, ну этот космос я не рекомендую, не всем дано
  • Если затачиваться именно под рынок, то учить математику, а ЯП уже выбрать на чем быстрее получается.
    ЗЫ и у C# есть проблемы с математикой и на это нужно делать поправку
    • tranquility
      28 октября 2020, 23:48
      Торгую под галоперидолом, а что там за проблемы? Скорость? Библиотеки, думаю, не проблема. Я вот знаю такую, как alglib.net — на с++ и питоне ее использую иногда. Для шарпа — тоже есть она.
      • tranquility, ну как самый простой вариант Math.Round(1.5) == Math.Round(2.5) == 2
        • Михаил
          29 октября 2020, 09:44
          Торгую под галоперидолом, и чем тут проблема — это стандартно для чисел с плавающей точкой практически во всех языках программирования. 
          • Михаил, это понятно людям которые прогают не один год и знают, что такое есть и как это решается. С точки зрения логики, человека который начинает на этом писать, это введет в ступор (если он конечно не изучил спеку языка  до этого, что врядли)
            • Михаил
              29 октября 2020, 09:56
              Торгую под галоперидолом, просто вы падаете это как пример проблем с математикой у C#, хотя к это пример не является специфичным для C#, а я является следствием общего для большинства языков стандарта чисел с плавающей точкой.
              • Михаил, в С++ такого поведения нет (а этот дедушка можно сказать эталон ЯП). С Java ситуация такая же как и с С++. В python функция округления работает как и в С#. т.е. 2а языка которым за 30 лет работают с округлением, с точки зрения математики, правильно, а С# по другому.
                • Михаил
                  29 октября 2020, 10:52
                  Торгую под галоперидолом, оперировать к математике, и некой правильности С++ тут достояно странно — в математике инт не может переполниться, как в С++.

                  Операции с float определены стандартом. 
                  Предусмотрено несколько вариантов округления — все они правильные. Вариант С# идет в стандарте первым и по ряду причин считается предпочтительным.
          • Beach Bunny
            29 октября 2020, 12:35
            Михаил, нет в C# Round по умолчанию округляет в сторону ближайшего четного числа.
            • Михаил
              29 октября 2020, 13:07
              Sergeyka, не понял, что нет? Первое стандарте округление в сторону ближайшего четного. 
              • Beach Bunny
                29 октября 2020, 13:16
                Михаил, в С round(2.5) == 3 , в С# ==2
                • Михаил
                  29 октября 2020, 13:20
                  Sergeyka, да и что?

                  В стандарте сказано буквально следующее: 

                  «The roundTiesToEven rounding-direction attribute shall be the default rounding-direction attribute for results in binary formats. The default rounding-direction attribute for results in decimal formats is language-defined, but should be roundTiesToEven.»

                  Более-менее современные языки стараются придерживаться стандарта.
        • Beach Bunny
          29 октября 2020, 12:33
          Торгую под галоперидолом, так есть Math.Ceiling() который ведет себя ожидаемо
          • Sergeyka, 
            <code class="lang-csharp" data-interactive="csharp" data-author-content="decimal[] values = {7.03m, 7.64m, 0.12m, -0.12m, -7.1m, -7.6m};
            Console.WriteLine("  Value          Ceiling          Floor\n");
            foreach (decimal value in values)
               Console.WriteLine("{0,7} {1,16} {2,14}",
                                 value, Math.Ceiling(value), Math.Floor(value));
            // The example displays the following output to the console:
            //         Value          Ceiling          Floor
            //
            //          7.03                8              7
            //          7.64                8              7
            //          0.12                1              0
            //         -0.12                0             -1
            //          -7.1               -7             -8
            //          -7.6               -7             -8
            ">
            </code>
            docs.microsoft.com/ru-ru/dotnet/api/system.math.ceiling?view=netcore-3.1
            • Beach Bunny
              29 октября 2020, 14:51
              Торгую под галоперидолом, да забыл, нужно использовать
                Math.Round(2.5d, MidpointRounding.AwayFromZero);
  • Дед Панас
    28 октября 2020, 16:14
    Написать робота это одно.
    Проблема в правильной системе алгоритмов. Т.е прибыльной системе)))
      • Дед Панас
        28 октября 2020, 16:22
        А.С., я сейчас сам немного учу  js.
        • 3Qu
          28 октября 2020, 16:25
          Дед Панас, вообще js больше для web. Как самостоятельный он не катит. Переквалифицироваться решили?
          • Дед Панас
            28 октября 2020, 16:28
            3Qu, )) для себя, чтоб деменции небыло. Сайты верстаю уже, столкнулся, что нужен js. Полез туда разбираться, пока неглубоко
            • 3Qu
              28 октября 2020, 16:35
              Дед Панас, кнопочки и окошечки верстать дело нехитрое. А вот когда взаимодействие пойдет с серверными скриптами и базами данных — эт уже сложней, и одним js не обойдется, а сейчас почти все страницы такие.
              • Дед Панас
                28 октября 2020, 17:01
                3Qu, вот и вникаю)). Да мозги кипят. Функции, массивы, циклы. А как иначе мозги развивать?

              • Дмитрий К
                28 октября 2020, 18:10
                3Qu,  извините,  а в чем проблема с node js?
                Сам сейчас туда полез разбираться, понадобилось, и теперь реально не понимаю, зачем вообще  сейчас какой то доп серверный язык, буквально все можно сделать
                • Beach Bunny
                  29 октября 2020, 12:56
                  Дмитрий К, с JS есть некоторые проблемы с многопоточностью, ну и в JS нет целых чисел, нету int, все числа это double, ну и еще разные особенности.
  • aai63
    28 октября 2020, 16:24
    30 с лишним лет опыта и программирования. На сегодняшний момент:

    1) С++ — зная его, вы без проблем будете программировать на C# и Java.
    2) C# + .NetCore  + Visual Studio — решите практически любую задачу.
    3) Java — 20 лет как потухает. Только серверные приложения для банков.
    4) Python — не юзал, но большой спрос на программистов.
    5) SQL — это только баз данных.

    И в конце концов LUA, не юзал, но как бы большинство роботов и плагин-ов для торговых систем на нем пишут.
    • Дед Панас
      28 октября 2020, 16:27
      aai63, сколько вам лет? Вы до сих пор работаете в этой сфере?
      • aai63
        28 октября 2020, 16:30
        Дед Панас, 57. Через каждые 5 лет переключаюсь на что-то другое, но потом возвращаюсь.
        • Дед Панас
          28 октября 2020, 16:43
          aai63, уважуха. И как востребован в свои годы?

          • aai63
            28 октября 2020, 16:49
            Дед Панас, Последние 5 лет работаю в средней компании, хотя могу себе позволить не работать. Тащу 2 крупных проекта и несколько мелких. Коллектив в основном молодой, если уйду, ребята просядут.
    • Нувот Вчеранов
      28 октября 2020, 18:43
      aai63, 
      3) Java — 20 лет как потухает.
      Ну это как вендекапец. Его всё предсказывают, а он так и не наступает.
  • ves2010
    28 октября 2020, 16:30
    надо различать
    умение торговать
    и умение программировать
    если торговать не умеешь, то никакой робот тебе не поможет...
    с другой сторон… если умеешь торговать, то уж прогера как нибудь найдешь

    • Дмитрий Овчинников
      28 октября 2020, 21:05
      ves2010, 
      зашел тут ко мне вечерком на бокальчик красненького приятель, СЕО программистской лавки, послушал все мои мытарства с кодом, терминалом и прочим и говорит: так а чего, все же просто, надо же написать нормальное API, а дальше шлите команды купить/продать. Я говорю, так напиши, Саша. Человек задумался. 
      • PSH
        28 октября 2020, 22:22
        Дмитрий Овчинников, в iticapital (бывши itinvest) есть свое «API» Smartcom. А толку
        • Дмитрий Овчинников
          28 октября 2020, 22:30
          PSH, 
          так там клоуны, как и во всей брокерской  и алго индустрии пишут.
          А приятель мой, это бывший Oracle Russia :)
          • PSH
            28 октября 2020, 22:55
            Дмитрий Овчинников, вот и зачем бывшему Oracle Russia, а ныне CEO девелоперской компании, заниматься этой вот хренотой? Денег за это толком не заплатят. Любой разработчик средней руки (ну, не разработчик, ладно, команда) это реализовать может, только ему платить надо, а зачем? С IT отделами у брокеров я не сталкивался, но подозреваю, что отношение к ним хуже, чем в банках (СберТех вынесем за скобки), хотя казалось бы, куда еще то. Так вот и живем, надо — пишешь сам, интерфейсы FAST / Plaza II / etc есть и слава богу.
            • Дмитрий Овчинников
              28 октября 2020, 23:13
              PSH, 

              так о том и речь, что профессиональным командам эта затея даром не нужна, а тем, кому такая затея нужна, профессиональную команду не собрать в принципе, наберут кодеров по объявлению и выпускают в продакшн лютый треш.

              Возможно есть исключения, команды, пишущие для себя что-то узкое и живое, не спорю.
               
              Так у кого топик-стартер собирается работать кодером? И самое главное, какое, черт побери, это отношение имеет к алготрейдингу?
              • PSH
                28 октября 2020, 23:28
                Дмитрий Овчинников, тут согласен :). Если ты классный разработчик — иди в условный Яндекс, там модный офис, диванчики, свободный график и весь спектр ништяков, еще и деньги платят :)
  • PSH
    28 октября 2020, 16:36
    C#, Java — это фронтенды. Причем C# еще и ограничен одной платформой. Раз тут речь идет про «торговых роботов» (если под «торговыми роботами» понимать то, что под этим понимают все приличные люди, а не симпатичное окошко с тремя кнопочками и убогой начинкой а-ля «перечечение скользящих средних) то это все сразу мимо.
    Python, Lua — это скриптовые процедурные языки. На них хорошо конфигурационную логику писать. Ну или опять же недороботов про пересечение МА и прочую галиматью.
    Вообще, если чуть-чуть подумать, то вариантов, кроме как C/C++, просто не остается.
    Хорошая развернутая статья на эту тему здесь https://smart-lab.ru/blog/571625.php
    • 3Qu
      28 октября 2020, 16:42
      PSH, про Питон вы сильно заблуждаетесь. Питон используется, как правило, не сам по себе, а как язык сценариев для функций пакетов, которые оч быстые. И доля самого Питона во времени исполнения оч незначительна.
      Где-то видел сравнительный тест прог на С++ и Питон — время исполнения практически одинаково.
      • PSH
        28 октября 2020, 16:45
        3Qu, с трудом представляю сравнительные тесты «прог на С++ и python»

        Если честно, вообще с трудом представляю какой-нибудь  бэкенд на python. И уж совсем не представляю, зачем бы это кому-нибудь понадобилось
        • 3Qu
          28 октября 2020, 16:49
          PSH, обычно для бэкэнда прога питон вызывается из С++ через С- API. Но можно и на чистом Питоне сделать. Тоже не проблема, есть и такие приложения, даже коммерческие.
          • PSH
            28 октября 2020, 16:58
            3Qu, ну вот возьмем классическую задачу. Высоконагруженная 24/7 система, принимает поток данных по, например, FAST over UDP, анализирует, агрегирует, сохраняет, генерирует ответный поток данных по тому же FAST. Должна быть отказоустойчива (к той же потере сетевой связности, например), резервируема, масштабируема и т. д. Вы себе вообще как представляете реализацию этой задачи на python? И, главное, зачем? 
            Массив методом пузырьков можно и на python сортировать, он с этим, разумеется, справится и, возможно, не медленнее C / C++

            По поводу «подключается по C-API» — я там писал выше, что на python / Lua хорошо высокоуровневую конфигурационную логику писать, чтобы ядро не перекомпилировать постоянно. Собственно, так их и используют
            • 3Qu
              28 октября 2020, 17:02
              PSH, я о том же — Питон, как и Луа — языки сценариев. Большинство либ Питона — это С++.
              • PSH
                28 октября 2020, 17:07
                3Qu, значит, мы об одном и том же :)

                Человек просто спросил «на чем писать торговых роботов». Я не представляю, на чем их можно писать, кроме как на C/C++. А вот конфигурационную логику (эти самые сценарии обработки) вынести в Lua / python слой. Тогда, возможно, получится симпатичненький бэкенд. А к нему потом на Java написать «панель управления» (фронтенд), чтобы можно было дома в кнопочки тыкать :)
                • 3Qu
                  28 октября 2020, 17:27
                  PSH, кнопочки/окошечки, имхо, лучше на шарпах.
                  • PSH
                    28 октября 2020, 17:50
                    3Qu, если только под винду, то конечно. А если захочется не только под винду, а еще и для телефона / электрочайника / удаленного сервака на RHEL, то нет :) 
                • Манул Кот
                  28 октября 2020, 19:50

                  PSH, кто бы ни был, но ты — голова! Даже коты это поняли..

        • day0markets.ru
          29 октября 2020, 10:56
          PSH, да вы верно шутите. на питоне полно сервисов, особенно там где нагрузки не очень. де-факто, питон сейчас стандарт бекэнда для небольших компаний
    • Ив Ив
      28 октября 2020, 18:23
      PSH, Java — фронтенд?? Каких только удивительных новостей на СЛ не прочитаешь…
      • PSH
        28 октября 2020, 19:03

        Ив Ив, зависит от задач.

        В той задаче, которую описал я, не вижу никаких проблем реализовать фронтенд на Java

        • Ив Ив
          28 октября 2020, 19:57
          PSH, можно и топором бриться, конечно, но в целом на яве UI активно пишут только под Андроид. Почти всегда ява живет в серверной части и общается через веб-интерфейс либо сервисы.
          • PSH
            28 октября 2020, 20:03
            Ив Ив, если Вы реализуете какие-то веб-сервисы, то разумеется. Но я Вам с легкостью могу накидать примеры фронтендов на чем угодно, и это совсем не от того, что кому-то захотелось «побриться топором» :)
            Но это уже спор ради спора, конечно, за детали можно рубиться хоть неделю, когда в целом понимание общее :)
            • Ив Ив
              28 октября 2020, 21:59
              PSH, для работы явского UI на клиентской машине должен быть JRE, и это сильно все усложняет.
              • PSH
                28 октября 2020, 22:22
                Ив Ив, Это да. Усложняет. Сильно.
  • PSH
    28 октября 2020, 16:38
     Изучать С/С++ в 57 лет, имея за спиной такой отвратительный бэкграунд, как «программирование 1с» — это мощно. Не сказать, что невозможно, но серьезный вызов точно
      • PSH
        28 октября 2020, 17:19
        А.С., «свою задачу» возможно. А вот для «других задач» не подходит, формирует массу дурных привычек, от которых потом придется долго и мучительно избавляться, и очень своебразную систему мышления, которую потом придется ломать, если из «программиста 1с» вы хотите превратиться в разработчика
  • bwc
    28 октября 2020, 16:39
    чтобы быть востребованным как разработчик торговых алгоритмов в финансовой сфере

    если это конкретно алгоритмы когда и сколько купить\продать, то нужно топить в сторону именно алгоритмов, моделей и т. п., а не яп. в итоге вы разрабатываете алгоритм, а специально обученный персонаж делает по нему робота со всеми нужными наворотами.
  • Yellow
    28 октября 2020, 16:42
    Приоритеты следующие: математическое образование, желательно кандидат наук и высокий IQ. Работа есть и на C# и на Java.
  • ПАТРИОТ РОССИИ
    28 октября 2020, 16:56
    Посмотрел вакансии… Мда, зп конечно...
    По-моему лучше учить польский и драить там улицы. Ну или баранку мусоровоза крутить, или на заводик польский.

    60к за C++/Python финтехе. Это как-то маловато. Хотя если норм работать мб до 700 евро зп поднимут. Другое дело!

    hh.ru/vacancy/39738913
  • Kapeks
    28 октября 2020, 17:06
    если хочешь на дядю пахать, то в конторах специализация. нужно выбирать, рабом какого вида ты хочешь стать.

    есть кванты — это математические тупаки с самомнением. некоторые из них не могут решить школьную задачу по математике (привет мэдкванту). теоретически они должны искать неидеальности на рынке и предлагать алгоритмы для их эксплуатации. обычно используют разновидности бэйсика: питон, R, и прочие скриптовые языки. раньше был моден перл. но мода меняется, а тупость квантов нет.

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

    можно быть «всё в одном флаконе» — это когда ты один и для себя делаешь.

    моё имхо: С/С++ главный язык планеты Земля.
    все эти джавы, си шарпы и прочий распиареный шлак — лишь мода. онли сипласплас — вечен.

    пойдёшь в кодерки или кванты — будь готов к нервному истощению и перманентной депрессии.

    успехов.
  • Susanin
    28 октября 2020, 17:48
    проще стать программистом или тестировщиком, а это вот все оставить в виде хобби.
  • FinSerfing
    28 октября 2020, 17:49

    Трейдинг — это не про программирование.

    Трейдинг — это про математику.

    Программирование наступает в самой последней фазе.

    И в большинстве случаев не особо важно на чём писать.

    Важно что писать.

    Короче трейдинг — это про поиск и тестирование стратегий.

    • PSH
      28 октября 2020, 17:52
      FinSerfing, так оно, только человек, как я понял, хочет быть именно разработчиком. Хотя, конечно, зачем ему идти в United Traders, когда можно в условный Яндекс пролезть и жизнь удалась :)
  • Манул Кот
    28 октября 2020, 17:53
    Python тебя спасет. Когда окончательно поймешь, что на торг. роботах не заработать, то ты заработаешь на Python.
  • Мямля
    28 октября 2020, 18:07
    Бухгалтера то ндс не знают как считать, а вы говорите школа, советская, средняя. Этих роботов, небось, из кирпичиков собирают, никто функционал его и не знает, кроме главного кукла
  • бред пит
    28 октября 2020, 18:11
    Java тю тю, теперь Котлин к сожалению
    • Иван Иванов
      28 октября 2020, 18:15
      бред пит, для школьников разве что, а в энтерпрайзе про ваш котлин и не слыхали не шиша.
      • бред пит
        28 октября 2020, 18:19
        Иван Иванов, что такое энтерпрайз?
        • Ив Ив
          28 октября 2020, 18:32
          бред пит, в вашей школе энтерпрайз не показывали? Бывает )
          • бред пит
            28 октября 2020, 18:38
            Ив Ив, Ив Ив это обрезанный Иван Иванов?
      • Нувот Вчеранов
        28 октября 2020, 18:58
        Иван Иванов, ну кстати в энтерпрайзе иногда тоже используют.
        Я вот сейчас в таком работаю, в основном пишем на котлине, всё равно ж компилируется под JVM и можно использовать всю экосистему джавы.

        Но это не отменяет того что джава никуда не уходит.
  • day0markets.ru
    29 октября 2020, 10:55
  • insighter
    29 октября 2020, 11:52

    Если говорить именно про алготрейдинг, то можно выучить и Джаву и C# (в концепте между ними очень мало отличий) и Питон и не пудрить мозги.

    Если же нужен запасной вариант (что кстати хорошая идея) и хочется быть хорошим разработчиком востребованным вне трейдинга, то здесь нужно будет выбрать специфику.

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

    Не советую лезть в С++, очень специфический опыт будет.

    PS рекомендую почитайте что пишет парень под ником day0markets, я с ним наверно во всем согласен

  • Replikant_mih
    30 октября 2020, 09:29
    Не знаю как там с наемной разработкой, а если хочешь для себя алго делать — лучший выбор Python + дестипальцевая печать + много практики.


    Язык учится легко, пишется приятно и быстро, если нужна мощность — векторизуешь, утилиты и скрипты пишутся быстро, а если надо посложнее — есть приличный вполне ООП, а если дойдешь до ML — оно тут тоже очень есть.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн