Добрый день. Меня зовут Алексей, и я разработчик, т.е. будущий разработчик торговых роботов.
Собственно почему я пишу здесь:
Меня интересует какой язык программирования начать изучать углубленно, технологии, фреймворки может быть, чтобы быть востребованным как разработчик торговых алгоритмов в финансовой сфере. Я бы с удовольствием работал в Unitedtraders, потому что знаю точно, они этим занимаются и даже своего робота как то выставляли на ЛЧИ, и делали сумасшедшие проценты прибыли. Но дело не в том, как они это сделали. В том что я хочу развиваться в этой сфере. Я уверен что они не одни, и есть много других фирм, банки да и просто инвестиционные компании, крупные компании проп трейдинга конце концов.
На текущий момент мои навыки таковы: я знаю что такое программирование (база), что такое ООП тоже знаю, да и его принципы могу перечислить наизусть. Но пока не решил куда двигаться в JAVA или С# окончательно. Мне нравиться JAVA за ее гибкость и opensource. плюс можно переметнуться в android разработку(ха-ха, мало ли вдруг все таки, как окажется не рожден для трейдинга — даже алгоритмического).
А.С., вообщем, когда я искал работу, но это был 2015, сделал главный вывод: если ориентироваться на Запад — то Java, если на РФ, то можно и на C#. Но это если метаться между C# и Java.
Но это все для того, чтобы писать какие то платформы торговли. Обобщенные. Ну или платформы для стратегий.
Еще рынку нужны узкоспециализированные крайности. Одна крайность — это C++, вторая крайность — Python, R и тд. Обе краности решают совершенно разные задачи. Вторая крайность больше для квантов.
Если затачиваться именно под рынок, то учить математику, а ЯП уже выбрать на чем быстрее получается.
ЗЫ и у C# есть проблемы с математикой и на это нужно делать поправку
Торгую под галоперидолом, а что там за проблемы? Скорость? Библиотеки, думаю, не проблема. Я вот знаю такую, как alglib.net — на с++ и питоне ее использую иногда. Для шарпа — тоже есть она.
Михаил, это понятно людям которые прогают не один год и знают, что такое есть и как это решается. С точки зрения логики, человека который начинает на этом писать, это введет в ступор (если он конечно не изучил спеку языка до этого, что врядли)
Торгую под галоперидолом, просто вы падаете это как пример проблем с математикой у C#, хотя к это пример не является специфичным для C#, а я является следствием общего для большинства языков стандарта чисел с плавающей точкой.
Михаил, в С++ такого поведения нет (а этот дедушка можно сказать эталон ЯП). С Java ситуация такая же как и с С++. В python функция округления работает как и в С#. т.е. 2а языка которым за 30 лет работают с округлением, с точки зрения математики, правильно, а С# по другому.
Торгую под галоперидолом, оперировать к математике, и некой правильности С++ тут достояно странно — в математике инт не может переполниться, как в С++.
Операции с float определены стандартом.
Предусмотрено несколько вариантов округления — все они правильные. Вариант С# идет в стандарте первым и по ряду причин считается предпочтительным.
«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.»
Более-менее современные языки стараются придерживаться стандарта.
Дед Панас, по опыту скажу, что прибыльной системы может и не родится в конце концов, а кушать хочется. Поэтому хотелось бы устроится непосредственно на работу. ну и повышать скилл всегда нужно
Дед Панас, кнопочки и окошечки верстать дело нехитрое. А вот когда взаимодействие пойдет с серверными скриптами и базами данных — эт уже сложней, и одним js не обойдется, а сейчас почти все страницы такие.
3Qu, извините, а в чем проблема с node js?
Сам сейчас туда полез разбираться, понадобилось, и теперь реально не понимаю, зачем вообще сейчас какой то доп серверный язык, буквально все можно сделать
30 с лишним лет опыта и программирования. На сегодняшний момент:
1) С++ — зная его, вы без проблем будете программировать на C# и Java.
2) C# + .NetCore + Visual Studio — решите практически любую задачу.
3) Java — 20 лет как потухает. Только серверные приложения для банков.
4) Python — не юзал, но большой спрос на программистов.
5) SQL — это только баз данных.
И в конце концов LUA, не юзал, но как бы большинство роботов и плагин-ов для торговых систем на нем пишут.
Дед Панас, Последние 5 лет работаю в средней компании, хотя могу себе позволить не работать. Тащу 2 крупных проекта и несколько мелких. Коллектив в основном молодой, если уйду, ребята просядут.
надо различать
умение торговать
и умение программировать
если торговать не умеешь, то никакой робот тебе не поможет...
с другой сторон… если умеешь торговать, то уж прогера как нибудь найдешь
ves2010,
зашел тут ко мне вечерком на бокальчик красненького приятель, СЕО программистской лавки, послушал все мои мытарства с кодом, терминалом и прочим и говорит: так а чего, все же просто, надо же написать нормальное API, а дальше шлите команды купить/продать. Я говорю, так напиши, Саша. Человек задумался.
Дмитрий Овчинников, вот и зачем бывшему Oracle Russia, а ныне CEO девелоперской компании, заниматься этой вот хренотой? Денег за это толком не заплатят. Любой разработчик средней руки (ну, не разработчик, ладно, команда) это реализовать может, только ему платить надо, а зачем? С IT отделами у брокеров я не сталкивался, но подозреваю, что отношение к ним хуже, чем в банках (СберТех вынесем за скобки), хотя казалось бы, куда еще то. Так вот и живем, надо — пишешь сам, интерфейсы FAST / Plaza II / etc есть и слава богу.
так о том и речь, что профессиональным командам эта затея даром не нужна, а тем, кому такая затея нужна, профессиональную команду не собрать в принципе, наберут кодеров по объявлению и выпускают в продакшн лютый треш.
Возможно есть исключения, команды, пишущие для себя что-то узкое и живое, не спорю.
Так у кого топик-стартер собирается работать кодером? И самое главное, какое, черт побери, это отношение имеет к алготрейдингу?
Дмитрий Овчинников, тут согласен :). Если ты классный разработчик — иди в условный Яндекс, там модный офис, диванчики, свободный график и весь спектр ништяков, еще и деньги платят :)
C#, Java — это фронтенды. Причем C# еще и ограничен одной платформой. Раз тут речь идет про «торговых роботов» (если под «торговыми роботами» понимать то, что под этим понимают все приличные люди, а не симпатичное окошко с тремя кнопочками и убогой начинкой а-ля «перечечение скользящих средних) то это все сразу мимо.
Python, Lua — это скриптовые процедурные языки. На них хорошо конфигурационную логику писать. Ну или опять же недороботов про пересечение МА и прочую галиматью.
Вообще, если чуть-чуть подумать, то вариантов, кроме как C/C++, просто не остается.
Хорошая развернутая статья на эту тему здесь https://smart-lab.ru/blog/571625.php
PSH, не очень понятно почему фронтендеры?
C/C++ это конечно мощно, а как же платформа stocksharp, мне казалось у нее достаточно богатый функционал. в том числе торговля через коннекторы к бирже
PSH, про Питон вы сильно заблуждаетесь. Питон используется, как правило, не сам по себе, а как язык сценариев для функций пакетов, которые оч быстые. И доля самого Питона во времени исполнения оч незначительна.
Где-то видел сравнительный тест прог на С++ и Питон — время исполнения практически одинаково.
PSH, обычно для бэкэнда прога питон вызывается из С++ через С- API. Но можно и на чистом Питоне сделать. Тоже не проблема, есть и такие приложения, даже коммерческие.
3Qu, ну вот возьмем классическую задачу. Высоконагруженная 24/7 система, принимает поток данных по, например, FAST over UDP, анализирует, агрегирует, сохраняет, генерирует ответный поток данных по тому же FAST. Должна быть отказоустойчива (к той же потере сетевой связности, например), резервируема, масштабируема и т. д. Вы себе вообще как представляете реализацию этой задачи на python? И, главное, зачем?
Массив методом пузырьков можно и на python сортировать, он с этим, разумеется, справится и, возможно, не медленнее C / C++
По поводу «подключается по C-API» — я там писал выше, что на python / Lua хорошо высокоуровневую конфигурационную логику писать, чтобы ядро не перекомпилировать постоянно. Собственно, так их и используют
Человек просто спросил «на чем писать торговых роботов». Я не представляю, на чем их можно писать, кроме как на C/C++. А вот конфигурационную логику (эти самые сценарии обработки) вынести в Lua / python слой. Тогда, возможно, получится симпатичненький бэкенд. А к нему потом на Java написать «панель управления» (фронтенд), чтобы можно было дома в кнопочки тыкать :)
3Qu, если только под винду, то конечно. А если захочется не только под винду, а еще и для телефона / электрочайника / удаленного сервака на RHEL, то нет :)
PSH, можно и топором бриться, конечно, но в целом на яве UI активно пишут только под Андроид. Почти всегда ява живет в серверной части и общается через веб-интерфейс либо сервисы.
Ив Ив, если Вы реализуете какие-то веб-сервисы, то разумеется. Но я Вам с легкостью могу накидать примеры фронтендов на чем угодно, и это совсем не от того, что кому-то захотелось «побриться топором» :)
Но это уже спор ради спора, конечно, за детали можно рубиться хоть неделю, когда в целом понимание общее :)
Изучать С/С++ в 57 лет, имея за спиной такой отвратительный бэкграунд, как «программирование 1с» — это мощно. Не сказать, что невозможно, но серьезный вызов точно
А.С., «свою задачу» возможно. А вот для «других задач» не подходит, формирует массу дурных привычек, от которых потом придется долго и мучительно избавляться, и очень своебразную систему мышления, которую потом придется ломать, если из «программиста 1с» вы хотите превратиться в разработчика
чтобы быть востребованным как разработчик торговых алгоритмов в финансовой сфере
если это конкретно алгоритмы когда и сколько купить\продать, то нужно топить в сторону именно алгоритмов, моделей и т. п., а не яп. в итоге вы разрабатываете алгоритм, а специально обученный персонаж делает по нему робота со всеми нужными наворотами.
если хочешь на дядю пахать, то в конторах специализация. нужно выбирать, рабом какого вида ты хочешь стать.
есть кванты — это математические тупаки с самомнением. некоторые из них не могут решить школьную задачу по математике (привет мэдкванту). теоретически они должны искать неидеальности на рынке и предлагать алгоритмы для их эксплуатации. обычно используют разновидности бэйсика: питон, R, и прочие скриптовые языки. раньше был моден перл. но мода меняется, а тупость квантов нет.
есть кодерки, они понятно пишут код, если в приличных конторах, то по техзаданию. им похеру какой там алготрейдинх. они на другом уровне работают: всякие там сокеты, пакеты, стейтмашины, буферы и прочий кодерский жаргон.
можно быть «всё в одном флаконе» — это когда ты один и для себя делаешь.
моё имхо: С/С++ главный язык планеты Земля.
все эти джавы, си шарпы и прочий распиареный шлак — лишь мода. онли сипласплас — вечен.
пойдёшь в кодерки или кванты — будь готов к нервному истощению и перманентной депрессии.
FinSerfing, так оно, только человек, как я понял, хочет быть именно разработчиком. Хотя, конечно, зачем ему идти в United Traders, когда можно в условный Яндекс пролезть и жизнь удалась :)
Бухгалтера то ндс не знают как считать, а вы говорите школа, советская, средняя. Этих роботов, небось, из кирпичиков собирают, никто функционал его и не знает, кроме главного кукла
Иван Иванов, ну кстати в энтерпрайзе иногда тоже используют.
Я вот сейчас в таком работаю, в основном пишем на котлине, всё равно ж компилируется под JVM и можно использовать всю экосистему джавы.
Но это не отменяет того что джава никуда не уходит.
Если говорить именно про алготрейдинг, то можно выучить и Джаву и C# (в концепте между ними очень мало отличий) и Питон и не пудрить мозги.
Если же нужен запасной вариант (что кстати хорошая идея) и хочется быть хорошим разработчиком востребованным вне трейдинга, то здесь нужно будет выбрать специфику.
Вдобавок 1С ну прямо скажем слабый бэкграунд для программиста, вам нужно очень много писать чтобы развиться тут может язык программирования не особо важен.
Не советую лезть в С++, очень специфический опыт будет.
PS рекомендую почитайте что пишет парень под ником day0markets, я с ним наверно во всем согласен
Не знаю как там с наемной разработкой, а если хочешь для себя алго делать — лучший выбор Python + дестипальцевая печать + много практики.
Язык учится легко, пишется приятно и быстро, если нужна мощность — векторизуешь, утилиты и скрипты пишутся быстро, а если надо посложнее — есть приличный вполне ООП, а если дойдешь до ML — оно тут тоже очень есть.
Николай Иванов,
Просто когда говорят как москвичи от 30 градусов страдают смешно. Я при 30 реально не включаю кондюк. Хуже когда жара 36 и выше и не день а недельку. Раньше такого не было.
в СИ наступает СУПЕР УНИКАЛЬНЫЙ момент, такое бывает раз в 5 лет-можно ставить Л Ю Б У Ю цену, скажем условно 91 на 112, сработает и то и то
Доллар будет метаться по 7 руб за сессию, можно за нед...
Компания «НФК-Структурные инвестиции» выплатила купон по 3-му выпуску облигаций 27 ноября 2024 года АО «НФК-СИ» выплатило 1-й купон по третьему выпуску облигаций (4-03-10707-Р-001P). Купонный доход 1-...
🔔 Прямой эфир по МСФО уже идет Подключайтесь к трансляции и слушайте CEO Whoosh Дмитрия Чуйко и CFO Александра Синявского.
Топ-менеджмент компании прокомментирует отчетность $WUSH за 9 месяцев и...
Но это все для того, чтобы писать какие то платформы торговли. Обобщенные. Ну или платформы для стратегий.
Еще рынку нужны узкоспециализированные крайности. Одна крайность — это C++, вторая крайность — Python, R и тд. Обе краности решают совершенно разные задачи. Вторая крайность больше для квантов.
Тут нужно для себя решить куда шагать.
ЗЫ и у C# есть проблемы с математикой и на это нужно делать поправку
Операции с float определены стандартом.
Предусмотрено несколько вариантов округления — все они правильные. Вариант С# идет в стандарте первым и по ряду причин считается предпочтительным.
В стандарте сказано буквально следующее:
«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.»
Более-менее современные языки стараются придерживаться стандарта.
docs.microsoft.com/ru-ru/dotnet/api/system.math.ceiling?view=netcore-3.1
Math.Round(2.5d, MidpointRounding.AwayFromZero);
Проблема в правильной системе алгоритмов. Т.е прибыльной системе)))
Сам сейчас туда полез разбираться, понадобилось, и теперь реально не понимаю, зачем вообще сейчас какой то доп серверный язык, буквально все можно сделать
1) С++ — зная его, вы без проблем будете программировать на C# и Java.
2) C# + .NetCore + Visual Studio — решите практически любую задачу.
3) Java — 20 лет как потухает. Только серверные приложения для банков.
4) Python — не юзал, но большой спрос на программистов.
5) SQL — это только баз данных.
И в конце концов LUA, не юзал, но как бы большинство роботов и плагин-ов для торговых систем на нем пишут.
умение торговать
и умение программировать
если торговать не умеешь, то никакой робот тебе не поможет...
с другой сторон… если умеешь торговать, то уж прогера как нибудь найдешь
зашел тут ко мне вечерком на бокальчик красненького приятель, СЕО программистской лавки, послушал все мои мытарства с кодом, терминалом и прочим и говорит: так а чего, все же просто, надо же написать нормальное API, а дальше шлите команды купить/продать. Я говорю, так напиши, Саша. Человек задумался.
так там клоуны, как и во всей брокерской и алго индустрии пишут.
А приятель мой, это бывший Oracle Russia :)
так о том и речь, что профессиональным командам эта затея даром не нужна, а тем, кому такая затея нужна, профессиональную команду не собрать в принципе, наберут кодеров по объявлению и выпускают в продакшн лютый треш.
Возможно есть исключения, команды, пишущие для себя что-то узкое и живое, не спорю.
Так у кого топик-стартер собирается работать кодером? И самое главное, какое, черт побери, это отношение имеет к алготрейдингу?
Python, Lua — это скриптовые процедурные языки. На них хорошо конфигурационную логику писать. Ну или опять же недороботов про пересечение МА и прочую галиматью.
Вообще, если чуть-чуть подумать, то вариантов, кроме как C/C++, просто не остается.
Хорошая развернутая статья на эту тему здесь https://smart-lab.ru/blog/571625.php
C/C++ это конечно мощно, а как же платформа stocksharp, мне казалось у нее достаточно богатый функционал. в том числе торговля через коннекторы к бирже
Где-то видел сравнительный тест прог на С++ и Питон — время исполнения практически одинаково.
Если честно, вообще с трудом представляю какой-нибудь бэкенд на python. И уж совсем не представляю, зачем бы это кому-нибудь понадобилось
Массив методом пузырьков можно и на python сортировать, он с этим, разумеется, справится и, возможно, не медленнее C / C++
По поводу «подключается по C-API» — я там писал выше, что на python / Lua хорошо высокоуровневую конфигурационную логику писать, чтобы ядро не перекомпилировать постоянно. Собственно, так их и используют
Человек просто спросил «на чем писать торговых роботов». Я не представляю, на чем их можно писать, кроме как на C/C++. А вот конфигурационную логику (эти самые сценарии обработки) вынести в Lua / python слой. Тогда, возможно, получится симпатичненький бэкенд. А к нему потом на Java написать «панель управления» (фронтенд), чтобы можно было дома в кнопочки тыкать :)
PSH, кто бы ни был, но ты — голова! Даже коты это поняли..
Ив Ив, зависит от задач.
В той задаче, которую описал я, не вижу никаких проблем реализовать фронтенд на Java
Но это уже спор ради спора, конечно, за детали можно рубиться хоть неделю, когда в целом понимание общее :)
если это конкретно алгоритмы когда и сколько купить\продать, то нужно топить в сторону именно алгоритмов, моделей и т. п., а не яп. в итоге вы разрабатываете алгоритм, а специально обученный персонаж делает по нему робота со всеми нужными наворотами.
По-моему лучше учить польский и драить там улицы. Ну или баранку мусоровоза крутить, или на заводик польский.
60к за C++/Python финтехе. Это как-то маловато. Хотя если норм работать мб до 700 евро зп поднимут. Другое дело!
hh.ru/vacancy/39738913
есть кванты — это математические тупаки с самомнением. некоторые из них не могут решить школьную задачу по математике (привет мэдкванту). теоретически они должны искать неидеальности на рынке и предлагать алгоритмы для их эксплуатации. обычно используют разновидности бэйсика: питон, R, и прочие скриптовые языки. раньше был моден перл. но мода меняется, а тупость квантов нет.
есть кодерки, они понятно пишут код, если в приличных конторах, то по техзаданию. им похеру какой там алготрейдинх. они на другом уровне работают: всякие там сокеты, пакеты, стейтмашины, буферы и прочий кодерский жаргон.
можно быть «всё в одном флаконе» — это когда ты один и для себя делаешь.
моё имхо: С/С++ главный язык планеты Земля.
все эти джавы, си шарпы и прочий распиареный шлак — лишь мода. онли сипласплас — вечен.
пойдёшь в кодерки или кванты — будь готов к нервному истощению и перманентной депрессии.
успехов.
Трейдинг — это не про программирование.
Трейдинг — это про математику.
Программирование наступает в самой последней фазе.
И в большинстве случаев не особо важно на чём писать.
Важно что писать.
Короче трейдинг — это про поиск и тестирование стратегий.
Я вот сейчас в таком работаю, в основном пишем на котлине, всё равно ж компилируется под JVM и можно использовать всю экосистему джавы.
Но это не отменяет того что джава никуда не уходит.
Если говорить именно про алготрейдинг, то можно выучить и Джаву и C# (в концепте между ними очень мало отличий) и Питон и не пудрить мозги.
Если же нужен запасной вариант (что кстати хорошая идея) и хочется быть хорошим разработчиком востребованным вне трейдинга, то здесь нужно будет выбрать специфику.
Вдобавок 1С ну прямо скажем слабый бэкграунд для программиста, вам нужно очень много писать чтобы развиться тут может язык программирования не особо важен.
Не советую лезть в С++, очень специфический опыт будет.
PS рекомендую почитайте что пишет парень под ником day0markets, я с ним наверно во всем согласен
Язык учится легко, пишется приятно и быстро, если нужна мощность — векторизуешь, утилиты и скрипты пишутся быстро, а если надо посложнее — есть приличный вполне ООП, а если дойдешь до ML — оно тут тоже очень есть.