_>Я последнее время прогал на .NET, сейчас проект на Node.JS, но вот хотел бы поразрабатывать софт для трейдинга. _>Отсюда вопрос: надо ли вспоминать C++ (на котором не было опыта с 2010 года) или C++ уступает свою роль Go?
Логика на C# и гуй на WPF.
C++ главным образом для HFT, которое не совсем трейдинг.
Здравствуйте, white_znake, Вы писали:
_>Приветствую коллеги
_>Интересует сабж, особенно в конторах типа хеджинговых фондов.
Да на всем С/С++, Java, NET, Python, VBA/Excel, тем более что "трейдинг" это очень сферический конь в вакууме в который может входить как HFT, претрейдконтроль выполненный на железяке с использованием FPGA, так и терминал пользователя и middle/back office-а проф. участника торгов, и соответственно стек технологий очень разный от глубокого знания TCP/IP до такого же глубокого знания математики, статистики для какого нибудь VaR (Value at Risk) или вообще в другом направлении глубокое знание COM, NET, VBA, SQL различных технологий "офисной" автоматизации для генерации миллион тонн различных отчетов от конечного клиента до регулятора.
Здравствуйте, white_znake, Вы писали:
_>Отсюда вопрос: надо ли вспоминать C++ (на котором не было опыта с 2010 года) или C++ уступает свою роль Go? _>Сильны ли позиции Java в данной области?
Нет. В терйдинге важна не производительность языка, а возможность писать сложные алгоритмы надежно и без ошибок. Поэтому в трейдинге рулят Scala и F#, слышал что некоторые используют Haskel.
Здравствуйте, Arsen.Shnurkov, Вы писали:
AS>Только C#, без вариантов. AS>Это опенсорсная платформа, поддерживаемая самым крупным разработчиком ПО в мире, AS>куда там джаве до неё.
По-моему только русские forex-кухни докатились до такого
_>Слушай, а что за аббревиатура такая HFT, кстати?
High-frequency trading — высокочастотный трейдинг.
Т.е. в позу входишь иногда на долю секунды. Основная идея — за счет скорости взять чуть лучше, чем остальные, ухватить свой центик и выскочить. А за счет объемов этот центик превратить в миллионы баксов.
Крайне критичен к скорости работы и к задержкам, вплоть до того, что скупаются датацентры максимально близкие к серверам биржи.
Поэтому для физического лица обычно не имеет смысла (не хватить денег, чтобы конкурировать по задержке передачи данных с крупняком).
В последнее время биржи стали смотреть на него с большим сомнением. Российская ММВБ ввела плату за превышение транзакций. Поговаривают, что американская биржа тоже рассматривала возможность ограничения HFT.
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, gandjustas, Вы писали:
G>>1) Java также копилируются в нативный код. Только JIT, а не compile-time. Сама по себе компиляция в нативный код не дает заметных преимуществ, только если у тебя не C++ компилятор. U>JIT — это халтура, да еще и в рантайме
Сегодняшние JITы работают не хуже компиляторов. Только C++ заметно отличается.
U>компиляция в данном контексте — это когда из исходников генерится нативный код (в итоге получаем программу). и потом запускается только он
И что?
U>беда у go в аналогичном халтурном компиляторе (это все разжевывается по ссылкам, что я дал)
Беда у go много в чем.
G>>3) Зато наличие промежуточного кода дает много возможностей платформе — динамическая генерация, инлайнинг и перестроение кода во время выполнения (hotspot). U>я не спорю о наличии доп. возможностей U>"зато" ведет к тормозам (см. пункт 1)
Ты о чем? При чем тут тормоза? Тормоза по сравнению с чем? По сравнению с C++ любой код тормозит, потому что в компилятор C++ вбухано стотыщмиллионов часов и работает он по полчаса над helloworld.
G>>4) Наличие gc и "жрет мало памяти" — практически несовместимые вещи. U>покликай бенчмарки, проги на go жрут в разы меньше памяти, чем проги на java
Это в которых сравнивается потребление памяти для двух вложенных циклов? Надо сравнивать на реальных программах, а не микробенчмарках. На микробенчмарках вообще можно показать что угодно.
G>>В самом go не заложено ничего, за счет чего он мог бы быть значительно быстрее java. А учитывая детские болезни он еще не скоро станет быстрее. U>по задумке он предназначен для системного уровня (инфа из вики)
Задумка хороша. Я бы выбрал go вместо C если не нужно быстродействие.
U>и не вижу принципиальных проблем внедрить более агрессивную оптимизацию при компиляции
Принципиальных проблем вообще очень мало существует. Всегда есть проблема эффективности вложений. Вкладывать в скорость кода go никому не надо.
Здравствуйте, white_znake, Вы писали:
_>Приветствую коллеги
_>Интересует сабж, особенно в конторах типа хеджинговых фондов. _>Я последнее время прогал на .NET, сейчас проект на Node.JS, но вот хотел бы поразрабатывать софт для трейдинга. _>Отсюда вопрос: надо ли вспоминать C++ (на котором не было опыта с 2010 года) или C++ уступает свою роль Go? _>Сильны ли позиции Java в данной области?
_>Хотелось бы услышать мнение работающих в данной области.
C++, Java.
Все остальное типа Go учится за неделю по необходимости.
Здравствуйте, placement_new, Вы писали:
_>C++, Java. _>Все остальное типа Go учится за неделю по необходимости.
я бы не исключал что-либо из большой тройки: C++, C#, Java
все они с разным успехом используются в подобных проектах
лично имею опыт создания алго системы + бектестинга на C#
а вот Go непонятно зачем упомянули, не слышал о подобных проектах на Go
его ниша для меня неясна, кол-во либ общего назначения и из финансовой сферы (типа quickfix) под вопросом. короче, маргинальный какой-то нынче язык
софт для трейдинга — вообще широкое понятие. там есть и рилтайм и постпроцессинг и аналитика истории и базы и UI конфигурашечки и тд и тп.
Здравствуйте, white_znake, Вы писали:
_>Хотелось бы услышать мнение работающих в данной области.
Было бы здорово, если бы ты рассказал, что понимаешь под трейдингом — коннективити, риск (сценарный или живой?), ордера, прайсинг, букинг etc? Резонно предположить, что на каждом этапе и на каждом рынке (в зависимости от его особенностей), может быть что-то свое.
_>Ну так почему он не совсем трейдинг если даже последняя Т stands for trading? _>Если SEC позволяет — значит трейдинг.
А я где-то написал что это не совсем трейдинг? А с сомнением стали смотреть по другим причинам: ММВБ — я так понял, решил ограничить нагрузку на сервера.
Амеры и европейцы говорили про риски. В частности приводили пример резкого падения на несколько минут рынка году этак в 2010 году. Ну и считалось, что HFT вытесняет классический трейдинг (инвесторов в том числе).
Здравствуйте, white_znake, Вы писали:
AT>>Было бы здорово, если бы ты рассказал, что понимаешь под трейдингом — коннективити, риск (сценарный или живой?), ордера, прайсинг, букинг etc? Резонно предположить, что на каждом этапе и на каждом рынке (в зависимости от его особенностей), может быть что-то свое. _>На чем пишут интересные штуковины типа статистического арбитража?
Java, C++. Если offline (аналитика), то phyton, так как кванты с ним наиболее знакомы.
Здравствуйте, white_znake, Вы писали:
_>Приветствую коллеги
_>Интересует сабж, особенно в конторах типа хеджинговых фондов. _>Я последнее время прогал на .NET, сейчас проект на Node.JS, но вот хотел бы поразрабатывать софт для трейдинга. _>Отсюда вопрос: надо ли вспоминать C++ (на котором не было опыта с 2010 года) или C++ уступает свою роль Go? _>Сильны ли позиции Java в данной области?
_>Хотелось бы услышать мнение работающих в данной области.
Здравствуйте, white_znake, Вы писали:
_>Хотелось бы услышать мнение работающих в данной области.
Выбери брокера и софт с API для автоматической торговли, попроси демо-доступ. Напиши простой тест на любимом языке программирования — обновление информации о ценах ("стаканом" у нас это называли) — сколько раз в секунду сможешь эту информацию получить. Чем больше, тем лучше. Потом замерь размещение заявки и её снятие — твой робот же должен быстро реагировать на изменения рынка.
Но для успешной торговли твоим роботам нужна какая-то стратегия, не только скорость реакции.
Интересует сабж, особенно в конторах типа хеджинговых фондов.
Я последнее время прогал на .NET, сейчас проект на Node.JS, но вот хотел бы поразрабатывать софт для трейдинга.
Отсюда вопрос: надо ли вспоминать C++ (на котором не было опыта с 2010 года) или C++ уступает свою роль Go?
Сильны ли позиции Java в данной области?
Хотелось бы услышать мнение работающих в данной области.
Здравствуйте, white_znake, Вы писали:
_>Приветствую коллеги
_>Интересует сабж, особенно в конторах типа хеджинговых фондов. _>Я последнее время прогал на .NET, сейчас проект на Node.JS, но вот хотел бы поразрабатывать софт для трейдинга. _>Отсюда вопрос: надо ли вспоминать C++ (на котором не было опыта с 2010 года) или C++ уступает свою роль Go? _>Сильны ли позиции Java в данной области?
_>Хотелось бы услышать мнение работающих в данной области.
Я совершенно не в теме, но мнение имею выскажу — Go еще тормознее, чем Java. Поэтому вряд ли на нём такое пишут.
P>Нет. В терйдинге важна не производительность языка, а возможность писать сложные алгоритмы надежно и без ошибок. Поэтому в трейдинге рулят Scala и F#, слышал что некоторые используют Haskel.
А примеров можно? Кроме Jane Street и группы отчепенцев в Morgan Stanley.
Здравствуйте, andrey.t, Вы писали:
AT>Здравствуйте, white_znake, Вы писали:
_>>Хотелось бы услышать мнение работающих в данной области.
AT>Было бы здорово, если бы ты рассказал, что понимаешь под трейдингом — коннективити, риск (сценарный или живой?), ордера, прайсинг, букинг etc? Резонно предположить, что на каждом этапе и на каждом рынке (в зависимости от его особенностей), может быть что-то свое.
На чем пишут интересные штуковины типа статистического арбитража?
Здравствуйте, Sammo, Вы писали:
S>High-frequency trading — высокочастотный трейдинг. S>Т.е. в позу входишь иногда на долю секунды. Основная идея — за счет скорости взять чуть лучше, чем остальные, ухватить свой центик и выскочить. А за счет объемов этот центик превратить в миллионы баксов.
Не за счет объемов центики превращаются в солидные суммы, а за счет левериджа, при чем леверижд должен быть достаточно большим (больше 10 к 1)
Если ты в теме HFT, то расскажи, есть ли в HFT хеджирование операций? Ведь на хеджировании тоже нужно время, которое ценится в HFT, а с другой стороны, не используя хеджирование можно потерять большие суммы при использовании большого левериджа в случае, когда ожидания не оправдались.
Здравствуйте, white_znake, Вы писали:
_>Не за счет объемов центики превращаются в солидные суммы, а за счет левериджа, при чем леверижд должен быть достаточно большим (больше 10 к 1)
как раз плечо и позволяет увеличить объем, это связанные вещи
_>Если ты в теме HFT, то расскажи, есть ли в HFT хеджирование операций? Ведь на хеджировании тоже нужно время, которое ценится в HFT, а с другой стороны, не используя хеджирование можно потерять большие суммы при использовании большого левериджа в случае, когда ожидания не оправдались.
хз к чему тут хеджирование и HFT в вопросе.
применяют разные схемы контроля за рисками. будь то SL/TP уровни (самое простое и надежное) или сделки на связанных (коррелируемых) инструментах или опционы\фьючи (тут не спец, к сожалению, не подскажу подробностей)
Здравствуйте, white_znake, Вы писали:
_>Хотелось бы услышать мнение работающих в данной области.
Я пользуюсь терминалом cTrader, который на .NET написан, да еще и ботов своих писать можно на C#.
Есть терминалы MetaTrader — они на C++, но скорее по историческим причинам.
"Профессиональные" терминалы обычно на Java.
Софт брокера или биржи это обычно Java+Oracle.
Хотя в нашей мосбирже (ММВБ) вроде как на C++. Люди там слегка упоротые, не факт что оправдано такое решение. Причем весь прикладной софт у низ на .NET написан.
HFT только C++, но это действительно не обычный трейдинг в классическом понимании слова.
Здравствуйте, Слава, Вы писали:
С>Но всё же, а неужто панковский Go уже научился обгонять весьма быструю Яву, с ее десятками лет труда, вложенных в JVM?
изначально я полагался на интуицию:
go
1) без VM
2) компилируется в нативный код
3) как и java имеет gc
4) жрет мало памяти
то есть оснований для отставания от java не вижу.
однако оказалось, что компилятор довольно туп, а библиотеки сами по себе тормозные (яркий пример — regexp)
то есть фундаментально вроде есть возможности для ускорения, но ленивое развития скорее всего все тормозит
ну опять же из-за слабого распространения и скудного набора вспомогательных либ бизнесу тяжело клепать продукты на go
Здравствуйте, uzhas, Вы писали:
U>изначально я полагался на интуицию: U>go U>1) без VM U>2) компилируется в нативный код U>3) как и java имеет gc U>4) жрет мало памяти U>то есть оснований для отставания от java не вижу.
Интуиция подводит.
1) Java также копилируются в нативный код. Только JIT, а не compile-time. Сама по себе компиляция в нативный код не дает заметных преимуществ, только если у тебя не C++ компилятор.
2) Виртуальная машина Java какбы... виртуальная. Её физически не существует во время исполнения.
3) Зато наличие промежуточного кода дает много возможностей платформе — динамическая генерация, инлайнинг и перестроение кода во время выполнения (hotspot).
4) Наличие gc и "жрет мало памяти" — практически несовместимые вещи.
В самом go не заложено ничего, за счет чего он мог бы быть значительно быстрее java. А учитывая детские болезни он еще не скоро станет быстрее.
Здравствуйте, gandjustas, Вы писали:
G>1) Java также копилируются в нативный код. Только JIT, а не compile-time. Сама по себе компиляция в нативный код не дает заметных преимуществ, только если у тебя не C++ компилятор.
JIT — это халтура, да еще и в рантайме
компиляция в данном контексте — это когда из исходников генерится нативный код (в итоге получаем программу). и потом запускается только он
беда у go в аналогичном халтурном компиляторе (это все разжевывается по ссылкам, что я дал)
G>2) Виртуальная машина Java какбы... виртуальная. Её физически не существует во время исполнения.
ну да, это не интерпретатор, согласен
G>3) Зато наличие промежуточного кода дает много возможностей платформе — динамическая генерация, инлайнинг и перестроение кода во время выполнения (hotspot).
я не спорю о наличии доп. возможностей
"зато" ведет к тормозам (см. пункт 1)
G>4) Наличие gc и "жрет мало памяти" — практически несовместимые вещи.
покликай бенчмарки, проги на go жрут в разы меньше памяти, чем проги на java
G>В самом go не заложено ничего, за счет чего он мог бы быть значительно быстрее java. А учитывая детские болезни он еще не скоро станет быстрее.
по задумке он предназначен для системного уровня (инфа из вики)
и не вижу принципиальных проблем внедрить более агрессивную оптимизацию при компиляции
Здравствуйте, uzhas, Вы писали:
U>то есть оснований для отставания от java не вижу. U>однако оказалось, что компилятор довольно туп, а библиотеки сами по себе тормозные (яркий пример — regexp)
Ну вот, а сперва вы меня зачем-то заминусовали. Зачем? Я ж не с потолка беру то, что пишу. Про Go я брал данные не из тех источников, которые вы привели (хотя — благодарю вас за хорошую подборку ссылок), а полагался на мнения людей, авторитетных для меня, и данные тестов, которые они приводили. И вдобавок — это уже из области интуиции — ну что доброго может придти от гугла? Вот, они например написали GWT, а на нем основан Vaadin. Вы с этим поделием дело имели? Где там скорость и удобство? Это ж монстр монстроидальный.
Гугл может делать что угодно и как угодно, у них тумбочка с бесконечными деньгами есть. Однако же, что в Go есть GC — я знаю, и что нельзя, хоть убейся, сразу и быстро сделать быстрый GC — это я тоже знаю. Для JS сколько лет его делают и доделывают — и всё равно результат не впечатляет. Чем разрабатывать 100500 по счёту язык, лучше бы они довели до ума GC для Ada, патчи для нее такие есть, но всё оно какое-то кривенькое.
Здравствуйте, white_znake, Вы писали:
_>Приветствую коллеги
_>Интересует сабж, особенно в конторах типа хеджинговых фондов. _>Я последнее время прогал на .NET, сейчас проект на Node.JS, но вот хотел бы поразрабатывать софт для трейдинга. _>Отсюда вопрос: надо ли вспоминать C++ (на котором не было опыта с 2010 года) или C++ уступает свою роль Go? _>Сильны ли позиции Java в данной области?
_>Хотелось бы услышать мнение работающих в данной области.
Вот как раз в разделе предложения о работе, некая инвестиционная компания на 200К ищет специалиста
Требования:
Высшее образование
Отличное знание языка T-SQL. Опыт разработки на платформе MS SQL Server от 7 лет.
Опыт работы с версией MS SQL Server 2012 от 2-х лет
Опыт работы в составе группы разработчиков
Опыт автоматизации бизнес-процессов брокерской компании будет огромным плюсом
Основные задачи:
Разработка серверной логики
Решение интеграционных задач
Решение задач по оптимизации работы системы
Участие в проектировании архитектуры системы
Участие в тестировании
Используемые инструменты:
MS Visual Studio 2013, SSMS, Jira, TFS
Здравствуйте, Слава, Вы писали:
С>Гугл может делать что угодно и как угодно, у них тумбочка с бесконечными деньгами есть. Однако же, что в Go есть GC — я знаю, и что нельзя, хоть убейся, сразу и быстро сделать быстрый GC — это я тоже знаю. Для JS сколько лет его делают и доделывают — и всё равно результат не впечатляет.
Не впечатляет оттого, что JS сам по себе неудачный язык. Go это как раз попытка сделать язык для которого можно реализовать быстрый GC.
Здравствуйте, uzhas, Вы писали:
U>то есть оснований для отставания от java не вижу. U>однако оказалось, что компилятор довольно туп, а библиотеки сами по себе тормозные (яркий пример — regexp)
Хм. Если go семантически близок к железу (=Си), то почему никто до сих пор не написал транслятор, который преобразует Go в Си и даст его на растерзание gcc, на оптимизатор которого никто особо не жалуется?
Здравствуйте, Vladek, Вы писали:
V>Здравствуйте, white_znake, Вы писали:
_>>Хотелось бы услышать мнение работающих в данной области.
V>Выбери брокера и софт с API для автоматической торговли, попроси демо-доступ. Напиши простой тест на любимом языке программирования — обновление информации о ценах ("стаканом" у нас это называли) — сколько раз в секунду сможешь эту информацию получить. Чем больше, тем лучше. Потом замерь размещение заявки и её снятие — твой робот же должен быстро реагировать на изменения рынка.
V>Но для успешной торговли твоим роботам нужна какая-то стратегия, не только скорость реакции.
Стратегии — это самое главное: Spoofing, FixManipulation, WashTrades etc.
Вещи критичные к скорости, на C. Всякие высокоуровневые вещи на Java/Scala. Математические модели на питоне. Тулзы кто на что горазд: мне нравится Eclipse RCP
Здравствуйте, bazis1, Вы писали:
U>>то есть оснований для отставания от java не вижу. U>>однако оказалось, что компилятор довольно туп, а библиотеки сами по себе тормозные (яркий пример — regexp) B>Хм. Если go семантически близок к железу (=Си), то почему никто до сих пор не написал транслятор, который преобразует Go в Си и даст его на растерзание gcc, на оптимизатор которого никто особо не жалуется?
Go и так полагается на стандартные бэкенды. Но вот например —
For signed integers, the operations +, -, *, and << may legally overflow and the resulting value exists and is deterministically defined by the signed integer representation, the operation, and its operands. No exception is raised as a result of overflow. A compiler may not optimize code under the assumption that overflow does not occur. For instance, it may not assume that x < x + 1 is always true.
При таком ограничении возможности оптимизатора уже значительно урезаны.
Здравствуйте, bazis1, Вы писали:
B>Хм. Если go семантически близок к железу (=Си), то почему никто до сих пор не написал транслятор, который преобразует Go в Си и даст его на растерзание gcc, на оптимизатор которого никто особо не жалуется?
Потому что в сфере применения Go: написание всевозможных Web-сервисов, на миллисекунды всем, вобщем-то, плевать
Здравствуйте, pestis, Вы писали:
P>Нет. В терйдинге важна не производительность языка, а возможность писать сложные алгоритмы надежно и без ошибок. Поэтому в трейдинге рулят Scala и F#, слышал что некоторые используют Haskel.
По моим данным, в трейдинге важны мозги, поэтому пишут на brainfuck
Здравствуйте, VovkaMorkovka, Вы писали:
VM>Вещи критичные к скорости, на C. Всякие высокоуровневые вещи на Java/Scala. Математические модели на питоне. Тулзы кто на что горазд: мне нравится Eclipse RCP
А как же пэхапэ?