Мыкался тыкался, и решил уйти в сторону С++ Qt от С#
В планах писать под MT5 MQL5, и DLL + lua QUIK.
Так же потихоньку писать полностью свой терминал, тестер под IB, TRANZAQ HFT
Решил уйти в сторону высоко нагруженных программ и кросплатформенности.
C++ учу с азов, уже пишу свою шпаргалку подобную что делал на C#
Один вопрос, а нафиг?
В скорости вы не выйграете у HFT, там другие языки и технологии, прямые подключения и тд.
www.tangiblesoftwaresolutions.com/product_details/cplusplus_to_csharp_converter_details.html
А плюсы, по тому что шарп умирает на моих задачах! И не позволяет проекту расти в нечто большее чем линейный бот по одному из инструментов.
Борис Литвинов, если нужна скорость, то здесь C++, ПЛИС + стойка на бирже.
В крайнем случае PLAZA II или FIX.
Но уж никак не терминал.
C++ и Qt — это бесполезная трата ресурсов.
Писать свой терминал вообще самоубиство.
Высоконагруженность и кроссплатформенность зачем ?
У вас лишнее время в жизни ?
Тогда потратьте его на поиск торговых идей.
Тестеры пишутся не под терминалы, а под данные.
HFT вообще забудьте.
Стоимость разработки и инфраструктуры неподъёмная.
Да и вообще программирование ради программирования не имеет смысла.
Очевидно, что вы точно не знаете чем собираетесь заниматься.
Если трейдингом, то им и займитесь.
Выберите конкретную нишу, начните торговать, искать и тестировать идеи.
Для этого никакого суперсофта не нужно.
И забудьте про кухонные терминалы типа MT.
Если хотите программировать, то это совсем другое ремесло.
Выберите популярный и доходный язык(не С++), набейте скилов и устройтесь на работу.
Борис Литвинов, HFT идеи тестированию практически не поддаются.
Если остальное у вас оттестировано(на чём ?), то встаёт вопрос развития.
Сборка портфелей, управление рисками.
Поиск денег в управление.
Создание юридической оболочки в конце концов.
При этом поиск новых идей никто не отменял.
Вместо этого диким программированием занимаетесь.
Не срастается как-то.
Борис Литвинов, т.е. все закономерности уже найдены ?
Боты работают на реальных деньгах ?
Как долго ?
Борис Литвинов, если они работают более 10 лет, значит вы уже достаточно состоятельны.
Следовательно можете нанять команду разработчиков, встать во главе и реализовать все ваши потребности менее, чем за год.
Причём они сделают это не только быстрее, но и качественнее на порядки.
Если нет, значит роботы не приносят должной прибыли и заниматься нужно именно торговыми идеями, а не программированием.
Борис Литвинов, обратитесь с вашими идеями к MT команде.
И поймёте, что она не команда вовсе.
Сколько она стоит и какова её мотивация(нулевая).
Если у трейдера есть идеи, то он стремится максимально быстро расширить их на разные инструменты, рынки и капиталы.
«Не тороплюсь» — это явно не из этой оперы.
Борис Литвинов, оптимально своего личного программиста.
Который работает либо за еду с перспективой процента от прибыли.
Либо за нормальную зарплату.
Вам правильно выше сказали — увеличивайте свою доху и ищите людей за деньги. Чтобы они вам писали нормальный код.
Sergey, важное замечание.
Программист да ещё со знанием предметной области — это золото.
Тарас Громницкий, писать свой терминал нормально, вопрос в другом, а куда он будет его подключать, по каким протоколам и потянет ли финасово, биржа же берет плату за прямые подключения+колокация+еще плата за всякие дополнительные фичи.
Мы не знаем финансовых возможностей автора, но думаю он бы крепко задумался если узнал прайс на прямые подключения.
Стеклянный грехомер, первый вопрос: «Нафига ?»
Зачем тратить такое количество ресурсов ?
Если закономерности найдены, то визуальное представление уже не требуется.
Пишутся роботы с минимальным интерфейсом и вперёд.
Стеклянный грехомер, торговый терминал — это трейдерский функционал с интерфейсом.
То о чём вы говорите — это framework или набор библиотек.
Никакого разночтения тут быть не может.
Если конечно речь о трейдинге и вы разговариваете с трейдером.
Борис Литвинов, в чём основная проблема ?
Почему нельзя создать мультибот ?
У меня почему-то таких проблем нет.
Собственно многопоточности никто не отменял.
то есть ваш бот сейчас на C# одновременно мониторит и торгует по такому количеству инструментам?
Ну тогда у меня кривые руки!
Борис Литвинов, что значит «мониторит» ?
Собирает тики и строит по ним бары ?
Каждый тик ведёт сложнейшие подсчёты ?
Какие действия вы выполняете ?
Сбор данных и агрегация — это отдельный модуль, как и иные единые операции.
Они разделяются между всеми ботами.
Борис Литвинов, по каким правилам происходит набор позы ?
Нужно следить за ценой каждый тик ?
«Весь спектр» — это сколько инструментов ?
Вы их все покупаете/продаёте одновременно ?
В какой именно момент у вас в программе возникает затык ?
Что конкретно жрёт ресурсы ?
Борис Литвинов, может купить нормальный сервак вместо калькулятора?=))
Ну допустим реализация на С++ быстрее С# в два раза, это спасет ситуацию ?
Сейчас есть конвертеры С# кода в С++(думаю там есть ограничения из за библиотек но они не критичны)
Стеклянный грехомер, C++ быстрее, но разработка на нём сложнее, дольше и дороже.
Как и поддержка.
Здесь дело явно не в технологиях.
Автор что-то темнит.
Если бы ему нужен был софт, то он нашёл себе программиста.
А не изучал язык с нуля, чтобы потратить 2-3 года.
У него и без программирования головняков было бы достаточно.
Стеклянный грехомер, вот это и смущает.
У трейдера масса более важных задач, чем программирование.
Оно тоже необходимо, но не первостепенно.
А тут всё наоборот.
Скорее всего мы имеем дело не с трейдером, а с программистом.
Ему просто нравится писать софт.
А торговые идеи глубоко второстепенны.
Стеклянный грехомер, вообще человек склонен заниматься тем, что у него лучше получается.
Из этой области он черпает основные ресурсы, которые использует для улучшения своих результатов.
Трейдер бы торговал, развивал имеющиеся идеи и искал новые.
А на заработанные деньги нанял специалиста, который бы полностью снял с него вопрос программирования.
В данном случае всё выглядит наоборот.
Тарас Громницкий, похоже, автор ни черта не понимает ни в C# ни в C++ и никогда не разберется. Автор не знает что такое потоки, асинхронные очереди, события итд. Первая ошибка типа memory allocation error завалит весь проект, что бы торговать столько инструментов, достаточно просто подписаться на события по каждому инструменту, даже если это 100 инструментов то 100 событий это просто не о чем. Да и сказки про скорость C++ относительно C# тоже сильно преувеличенны.
Не ну правда, вы серьезно ?? У человека примеры как выводить строку на консоль, а он собрался писать многопоточное реалтайм приложение на языке с неуправляемым кодом. Похоже это просто троллинг
evgen000, он явно не программист.
Что и пытаюсь ему пояснить.
А также, что программистом стать не так просто.
И язык тут не решает.
А если не прав, пример в студию!
Борис Литвинов, пример возможен после постановки конкретной задачи.
Абстракцию опровергнуть невозможно.
Ставьте.
Не настаиваю, это личные выводы!
Борис Литвинов, смена языка не поможет.
Необходима смена подходов.
Гарантирую, что плюсы разочаруют вас своей избыточной сложностью/гибкостью.
Вместо решения бизнес задач вы будете заниматься управлением памятью и поиском утечек.
Заколебётесь с созданием интерфейсов.
Выясните, что плюсы тоже не катят и забьетё на всё это болт.
tranquility, понятие «скоростной» довольно резиновое.
Как здесь уже писали, C# подходит для подавляющего большинства трейдерских задач.
Выход за границы его эффективности достигается 2мя способами:
1. Если программист неопытен и пишет неэффективный код.
2. Если нужно решать задачи с громадным количеством операций.
Но подобные системы среди частников и небольших компаний не встречаются.
Мой личный опыт подтверждает данные выводы.
Проблемы с производительностью и не HFT => либо так написано, либо алгоритмы с большим объёмом расчётов.
В целом C# норм. по производительности: stock #, веб сервисы и пр. Ещё у Гнома (местного) боты были на C#.
C++ это скорее решение специфических задач: hard real time, embedded, экстремальная производительность для HFT и т. п.
BlackWeirdCat, согласен, но StockSharp в помойку и притоптать.
BlackWeirdCat, TsLab норм для тестирования.
Чтобы что-то быстро собрать.
Борис Литвинов, это не к языку, а к тому кто пишет и как.
Т.е. это вопрос реализации.
Борис Литвинов, ответственность не несут, потому как нет мотивации.
И от того, что специалистов мало.
2. Не в первый раз отмечаю, что в комментах люди указывают на то, что ты фундаментально ошибся в выборе направления)) вместо ответов на конкретные вопросы).
3. Возможно, вы, действительно, что-то не то делаете с C#?) — многие торгуют на нем много ботов. Можем вы лучше распишете детальней где у вас бутылочное горлышко, что мешает запускать большое кол-во ботов? — язык богат в возможностях, не настолько медленен, думаю, архитектурно можно многие трудности обойти.
Короче мысль такая:
1. Автор описывает необходимый ему функционал.
Для начала без излишеств.
Только самое основное.
2. Я разбиваю задачу на части.
3. Уточняю.
4. Предлагаю сроки и цену.
Могу сделать что-нибудь сравнительно простое в качестве примера бесплатно.
Или показать нечто из имеющихся разработок.
С высокой долей вероятности он поймёт, что это быстрее, качественнее и дешевле, чем делать самому.
А свободное время можно употребить с большей пользой и удовольствием.
Просто решил так, если уже делать своё то делать на плюсах!
Прочтите пост, ведь я ничего не теряю, лишь убрал не верное решение выбранное когда то. Аргументировал проблему ошибки в уклоне на C#. Для частного трейдера это вариант, но оказалось так что мне этот вариант ограничил возможности!
Борис Литвинов, когда осознаете и на себе ощутите всё, что написано в комментариях, обращайтесь.
Это если что не сарказм был)
Если C# «не тянет», это значит, что автор не понимает, в чем его проблемы. Вот Вам лично, что, производительности шарпа мало?
SergeyJu, Мне хватает).
Человек 10 лет в этой теме варится, неужели вы думаете, что его комментарии к посту смогут так легко переубедить — если он в друг все-таки ошибается — хз, ошибается или нет. А вот собственный опыт способен дать ему ответы. Потыкается-помыкается — поймет, перестанет, ну либо все получится, потом будет рассказывать, что я верил, все не верили, я оказался прав).
Я тоже считаю, что C# для обозначенных сложностей, задач более оптимален и по этому показателю на голову обыгрывает C++, но то я)).
Торговать широким фронтом бумаг нет возможности, по тому как отсутствует контроль. Если писать моно бот гоняя пару инструментов, живя у монитора в качестве частного трейдера можно, но не более. А писать свой велосипед, тогда уже C++
Ну а вам предлагают C# и JAVA. Где сканер с ограничением 100 строк иначе он умрет, речь о IB. И поиск грааля в линейной торговле фьючерса. Думайте сами.
Если еще задача кроссплотформенности стоит, то Microsoft выпустил .Net Core. Нормально заходит под иксами. Я даже transaq connector под линуксом запускал на шарпе
Боюсь, что автор ищет не там, где потерял.
И, как непрограммист программисту, скажу:
если есть проблема с алго, то эта проблема не в С#. )
Среди терминалов нашей биржи использующих С++ не назову.
Из иностранных есть Sierra Charts, он использует тоже C++ с ограничениями. Но сам терминал на мой взгляд сильно устарел морально и я бы не стал под него ничего писать.
Но смысла писать на C++ под терминалом особого не вижу. Т.к. гораздо логичнее писать на С++ вне терминала, используя его API либо коннектор.
Из таких терминалов встречался с Interactive Brokers Trader Workstation и Rithmic Trader. Причем Rithmic API может работать даже без запуска терминала. А еще они заявляют себя как очень быстрое API. Так это или нет, сказать не могу.
Собственно поэтому я сам сейчас пишу роботов для себя только на C++.
Jame Bonds, согласен. А то, что поддерживается, может поддерживаться довольно странным образом.
Шаблоны как раз там поддерживаются, причём, как шаблоны классов, так и шаблоны функций и методов. Правда, только шаблоны типов.
И адресная арифметика отсутствует.
А что с коннекторами для С++ вычислений, есть что-то годное для трудящихся, или самому писать в любом случае надо?
tranquility, MQL — это не скрипт, он компилируемый.
С коннекторами дела не имел. Но коннекторы — они же для взаимодействия с биржей, а не для «C++ вычислений».
Спасибо.