Boris Litvinov
Boris Litvinov личный блог
26 июня 2018, 06:18

Кроме MT5 есть ли платформы что бы бот на С++(MQL5)?

Мыкался тыкался, и решил уйти в сторону С++ Qt от С#
В планах писать под MT5 MQL5, и DLL + lua QUIK.
Так же потихоньку писать полностью свой терминал, тестер под IB, TRANZAQ HFT
Решил уйти в сторону высоко нагруженных программ и кросплатформенности. 
C++ учу с азов, уже пишу свою шпаргалку подобную что делал на C#
Кроме MT5 есть ли платформы что бы бот на С++(MQL5)?






98 Комментариев
  • Один вопрос, а нафиг? 

    В скорости вы не выйграете у HFT, там другие языки и технологии, прямые подключения и тд.

    www.tangiblesoftwaresolutions.com/product_details/cplusplus_to_csharp_converter_details.html

      • Борис Литвинов, не будет у вас никакого HFT, современные HFT строятся на других платформах и языки там платформозависимые, какой нафиг транзак HFT? Не покупайтесь на рекламу финама. Если у вас шарп умирает, то С++ не поможет,100 процентов проблема в не оптимальном коде. 
        • Sergey
          26 июня 2018, 14:12
          Стеклянный грехомер, полностью согласен. У меня сейчас алгоритм анализирует в моменте около 100,000 тикеров. C#+R. И не тормозит. Автор так видимо пишет код, что не важно какой у него будет язык — будет тормозить на любом.
      • Тарас Громницкий
        26 июня 2018, 07:26

        Борис Литвинов, если нужна скорость, то здесь C++, ПЛИС + стойка на бирже.

        В крайнем случае PLAZA II или FIX.

        Но уж никак не терминал.

  • Тарас Громницкий
    26 июня 2018, 07:09

    C++ и Qt — это бесполезная трата ресурсов.

    Писать свой терминал вообще самоубиство.

    Высоконагруженность и кроссплатформенность зачем ?

    У вас лишнее время в жизни ?

    Тогда потратьте его на поиск торговых идей.

    Тестеры пишутся не под терминалы, а под данные.

    HFT вообще забудьте.

    Стоимость разработки и инфраструктуры неподъёмная.

    Да и вообще программирование ради программирования не имеет смысла.

    Очевидно, что вы точно не знаете чем собираетесь заниматься.

    Если трейдингом, то им и займитесь.

    Выберите конкретную нишу, начните торговать, искать и тестировать идеи.

    Для этого никакого суперсофта не нужно.

    И забудьте про кухонные терминалы типа MT.

    Если хотите программировать, то это совсем другое ремесло.

    Выберите популярный и доходный язык(не С++), набейте скилов и устройтесь на работу.

      • Тарас Громницкий
        26 июня 2018, 07:16

        Борис Литвинов, HFT идеи тестированию практически не поддаются.

        Если остальное у вас оттестировано(на чём ?), то встаёт вопрос развития.

        Сборка портфелей, управление рисками.

        Поиск денег в управление.

        Создание юридической оболочки в конце концов.

        При этом поиск новых идей никто не отменял.

        Вместо этого диким программированием занимаетесь.

        Не срастается как-то.

          • Тарас Громницкий
            26 июня 2018, 07:21

            Борис Литвинов, т.е. все закономерности уже найдены ?

            Боты работают на реальных деньгах ?

            Как долго ?

              • Тарас Громницкий
                26 июня 2018, 07:30

                Борис Литвинов, если они работают более 10 лет, значит вы уже достаточно состоятельны.

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

                Причём они сделают это не только быстрее, но и качественнее на порядки.

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

                  • Тарас Громницкий
                    26 июня 2018, 07:39

                    Борис Литвинов, обратитесь с вашими идеями к MT команде.

                    И поймёте, что она не команда вовсе.

                    Сколько она стоит и какова её мотивация(нулевая).

                    Если у трейдера есть идеи, то он стремится максимально быстро расширить их на разные инструменты, рынки и капиталы.

                    «Не тороплюсь» — это явно не из этой оперы.

                  • Тарас Громницкий
                    26 июня 2018, 07:41

                    Борис Литвинов, оптимально своего личного программиста.

                    Который работает либо за еду с перспективой процента от прибыли.

                    Либо за нормальную зарплату.

                  • Sergey
                    26 июня 2018, 14:14
                    Борис Литвинов, программист на зарплате делающий терминал не знает ничего о трейдинге и как делать роботов.

                    Вам правильно выше сказали — увеличивайте свою доху и ищите людей за деньги. Чтобы они вам писали нормальный код.
                    • Тарас Громницкий
                      26 июня 2018, 15:50

                      Sergey, важное замечание.

                      Программист да ещё со знанием предметной области — это золото.

    • Тарас Громницкий, писать свой терминал нормально, вопрос в другом, а куда он будет его подключать, по каким протоколам и потянет ли финасово, биржа же берет плату за прямые подключения+колокация+еще плата за всякие дополнительные фичи.

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

      • Тарас Громницкий
        26 июня 2018, 07:27

        Стеклянный грехомер, первый вопрос: «Нафига ?»

        Зачем тратить такое количество ресурсов ?

        Если закономерности найдены, то визуальное представление уже не требуется.

        Пишутся роботы с минимальным интерфейсом и вперёд.

        • Тарас Громницкий, ну терминал это в первую очередь реализация подключений по биржевым протоколам, а UI и ненужен. Но тут скорее вопрос терминологии.
          • Тарас Громницкий
            26 июня 2018, 07:34

            Стеклянный грехомер, торговый терминал — это трейдерский функционал с интерфейсом.

            То о чём вы говорите — это framework или набор библиотек.

            Никакого разночтения тут быть не может.

            Если конечно речь о трейдинге и вы разговариваете с трейдером.

        • Тарас Громницкий
          26 июня 2018, 07:36

          Борис Литвинов, в чём основная проблема ?

          Почему нельзя создать мультибот ?

          У меня почему-то таких проблем нет.

          Собственно многопоточности никто не отменял.

            • Тарас Громницкий
              26 июня 2018, 07:52

              Борис Литвинов, что значит «мониторит» ?

              Собирает тики и строит по ним бары ?

              Каждый тик ведёт сложнейшие подсчёты ?

              Какие действия вы выполняете ?

               

              Сбор данных и агрегация — это отдельный модуль, как и иные единые операции.

              Они разделяются между всеми ботами.

                • Тарас Громницкий
                  26 июня 2018, 08:08

                  Борис Литвинов, по каким правилам происходит набор позы ?

                  Нужно следить за ценой каждый тик ?

                  «Весь спектр» — это сколько инструментов ?

                  Вы их все покупаете/продаёте одновременно ?

                  В какой именно момент у вас в программе возникает затык ?

                  Что конкретно жрёт ресурсы ?

        • Борис Литвинов, может купить нормальный сервак вместо калькулятора?=))

          Ну допустим реализация на С++ быстрее С# в два раза, это спасет ситуацию ?

          Сейчас есть конвертеры С# кода в С++(думаю там есть ограничения из за библиотек но они не критичны)

          • Тарас Громницкий
            26 июня 2018, 07:42

            Стеклянный грехомер, C++ быстрее, но разработка на нём сложнее, дольше и дороже.

            Как и поддержка.

            Здесь дело явно не в технологиях.

            Автор что-то темнит.

            Если бы ему нужен был софт, то он нашёл себе программиста.

            А не изучал язык с нуля, чтобы потратить 2-3 года.

            У него и без программирования головняков было бы достаточно.

            • Тарас Громницкий, если у автора есть время ..., потом перейдет на какой нибудь systemC. 
              • Тарас Громницкий
                26 июня 2018, 07:50

                Стеклянный грехомер, вот это и смущает.

                У трейдера масса более важных задач, чем программирование.

                Оно тоже необходимо, но не первостепенно.

                А тут всё наоборот.

                Скорее всего мы имеем дело не с трейдером, а с программистом.

                Ему просто нравится писать софт.

                А торговые идеи глубоко второстепенны.

                • Тарас Громницкий, глядя на скрин автора, понять его идею не сложно, но для ее реализации транзак НFT точно не подойдет))
                  • Тарас Громницкий
                    26 июня 2018, 08:00

                    Стеклянный грехомер, вообще человек склонен заниматься тем, что у него лучше получается.

                    Из этой области он черпает основные ресурсы, которые использует для улучшения своих результатов.

                    Трейдер бы торговал, развивал имеющиеся идеи и искал новые.

                    А на заработанные деньги нанял специалиста, который бы полностью снял с него вопрос программирования.

                    В данном случае всё выглядит наоборот.

                • Андрей
                  03 июля 2018, 00:12
                  Тарас Громницкий, о чем Вы говорите, какой программист, у «настоящего» шарписта не возникло бы такой проблемы. Ни в коем случае не хотел обидеть автора, но тут дело не в языке.
            • evgen000
              26 июня 2018, 13:45

              Тарас Громницкий, похоже, автор ни черта не понимает ни в C# ни в C++ и никогда не разберется. Автор не знает что такое потоки, асинхронные очереди, события итд. Первая ошибка типа memory allocation error завалит весь проект, что бы торговать столько инструментов, достаточно просто подписаться на события по каждому инструменту, даже если это 100 инструментов то 100 событий это просто не о чем. Да и сказки про скорость C++ относительно C# тоже сильно преувеличенны.

               

              Не ну правда, вы серьезно ?? У человека примеры как выводить строку на консоль, а он собрался писать многопоточное реалтайм приложение на языке с неуправляемым кодом. Похоже это просто троллинг

              • Тарас Громницкий
                26 июня 2018, 14:18

                evgen000, он явно не программист.

                Что и пытаюсь ему пояснить.

                А также, что программистом стать не так просто.

                И язык тут не решает.

        • Ilya
          26 июня 2018, 11:55
          Борис Литвинов, «С# не позволяет роста» — за такие фразы любой препод по программированию ссаной тряпкой пи… дит сразу. все определяет ваш скилл в большинстве случаев, не считая узкоспециализированных языков, а не синтаксис.
            • Тарас Громницкий
              26 июня 2018, 14:13

              Борис Литвинов, пример возможен после постановки конкретной задачи.

              Абстракцию опровергнуть невозможно.

              Ставьте.

                • Тарас Громницкий
                  26 июня 2018, 15:31

                  Борис Литвинов, смена языка не поможет.

                  Необходима смена подходов.

                  Гарантирую, что плюсы разочаруют вас своей избыточной сложностью/гибкостью.

                  Вместо решения бизнес задач вы будете заниматься управлением памятью и поиском утечек.

                  Заколебётесь с созданием интерфейсов.

                  Выясните, что плюсы тоже не катят и забьетё на всё это болт.

    • tranquility
      26 июня 2018, 16:29
      Тарас Громницкий, так а какой язык Вы тут можете посоветовать, чтобы компилируемый, а значит и скоростной был?
      • Тарас Громницкий
        26 июня 2018, 16:43

        tranquility, понятие «скоростной» довольно резиновое.

        Как здесь уже писали, C# подходит для подавляющего большинства трейдерских задач.

        Выход за границы его эффективности достигается 2мя способами:

        1. Если программист неопытен и пишет неэффективный код.

        2. Если нужно решать задачи с громадным количеством операций.

        Но подобные системы среди частников и небольших компаний не встречаются.

         

        Мой личный опыт подтверждает данные выводы.

        • tranquility
          26 июня 2018, 16:54
          Тарас Громницкий, т.е. для трейдера сишарпу, по-хорошему, альтернативы-то особо и нет?;)
  • bwc
    26 июня 2018, 08:09

    Проблемы с производительностью и не HFT => либо так написано, либо алгоритмы с большим объёмом расчётов.
    В целом C# норм. по производительности: stock #, веб сервисы и пр. Ещё у Гнома (местного) боты были на C#.
    C++ это скорее решение специфических задач: hard real time, embedded, экстремальная производительность для HFT и т. п.

    • Тарас Громницкий
      26 июня 2018, 08:11

      BlackWeirdCat, согласен, но StockSharp в помойку и притоптать.

      • bwc
        26 июня 2018, 08:17
        Тарас Громницкий, да, не удачный пример с точки зрения качества. Суть как-бы в том, что C# вполне подходит для алго трейдинга. TS LAB вот ещё.
        • Тарас Громницкий
          26 июня 2018, 08:18

          BlackWeirdCat, TsLab норм для тестирования.

          Чтобы что-то быстро собрать.

          • Тарас Громницкий
            26 июня 2018, 08:35
            Борис Литвинов, Евгений Ворончихин торгует пачку бумаг через TsLab.
      • Тарас Громницкий
        26 июня 2018, 08:24

        Борис Литвинов, это не к языку, а к тому кто пишет и как.

        Т.е. это вопрос реализации.

          • Тарас Громницкий
            26 июня 2018, 08:35

            Борис Литвинов, ответственность не несут, потому как нет мотивации.

            И от того, что специалистов мало.

  • Replikant_mih
    26 июня 2018, 08:18
    1. Крутая идея с проектом, содержащим подсказки по используемому языку программированию и библиотекам — мне такое тоже облегчило бы жизнь — утяну идею).
    2. Не в первый раз отмечаю, что в комментах люди указывают на то, что ты фундаментально ошибся в выборе направления)) вместо ответов на конкретные вопросы).
    3. Возможно, вы, действительно, что-то не то делаете с C#?) — многие торгуют на нем много ботов. Можем вы лучше распишете детальней где у вас бутылочное горлышко, что мешает запускать большое кол-во ботов? — язык богат в возможностях, не настолько медленен, думаю, архитектурно можно многие трудности обойти.
    • Тарас Громницкий
      26 июня 2018, 08:22

      Короче мысль такая:

      1. Автор описывает необходимый ему функционал.

      Для начала без излишеств.

      Только самое основное.

      2. Я разбиваю задачу на части.

      3. Уточняю.

      4. Предлагаю сроки и цену.

      Могу сделать что-нибудь сравнительно простое в качестве примера бесплатно.

      Или показать нечто из имеющихся разработок.

      С высокой долей вероятности он поймёт, что это быстрее, качественнее и дешевле, чем делать самому.

      А свободное время можно употребить с большей пользой и удовольствием.

      • Тарас Громницкий
        26 июня 2018, 09:06

        Борис Литвинов, когда осознаете и на себе ощутите всё, что написано в комментариях, обращайтесь.

      • Replikant_mih
        26 июня 2018, 10:00
        Борис Литвинов, да ну все правильно — в смысле у вас же 10+ опыта, знаете, что делаете, да и каждый имеет право на обучающую ошибку если что). Тем более без риска можно вообще чувствовать себя комфортно и дать волю фантазии..

        Это если что не сарказм был)
    • SergeyJu
      26 июня 2018, 13:51
      Replikant_mih, Вы тоже склонны переусложнять. Если автор выбрал заведомо неправильный путь, зачем ему помогать отвечая на конкретные вопросы? Делать то, что он собирается, не надо ни одиночке, ни небольшой команде. Ни денег, ни нового качества это не несет. 
      Если C# «не тянет», это значит, что автор не понимает, в чем его проблемы. Вот Вам лично, что, производительности шарпа мало?
      • Replikant_mih
        26 июня 2018, 14:00

        SergeyJu, Мне хватает).

        Человек 10 лет в этой теме варится, неужели вы думаете, что его комментарии к посту смогут так легко переубедить — если он в друг все-таки ошибается — хз, ошибается или нет. А вот собственный опыт способен дать ему ответы. Потыкается-помыкается — поймет, перестанет, ну либо все получится, потом будет рассказывать, что я верил, все не верили, я оказался прав).

         

        Я тоже считаю, что C# для обозначенных сложностей, задач более оптимален и по этому показателю на голову обыгрывает C++, но то я)).

        • SergeyJu
          26 июня 2018, 15:33
          Replikant_mih, а я варюсь больше 20  лет. Причем разными боками, от программирования до руководства коллективом. От бондов до фьючей. От риск-менеджмента до управления ПИФ. Теоретически, конечно, все может быть, но на практике, имхо, автор принял дорогое и неверное управленческое решение.
          • Replikant_mih
            26 июня 2018, 15:44
            SergeyJu, мм, прикольно, звучит как супер-крутой опыт))
            • SergeyJu
              26 июня 2018, 15:53
              Replikant_mih, долгий, разнообразный, да, но не крутой. И мой опыт говорит мне, что всех дел не переделаешь и что минимизация усилий на второстепенных направлениях позволяет максимизировать их на самом важном. У меня был молодой сотрудник, аспирант ВМК. Преспокойно писал программы для направленного поиска торговых систем на питоне. Ну, долго считает. И что? Во первых, поставить на счет на выходные — не проблема. Во вторых, можно переписать 5% кода на чем-то быстром и получить 10-кратное ускорение. А потом хорошо подумать и еще в 10 раз ускорится. 
              • Replikant_mih
                26 июня 2018, 16:33
                SergeyJu, Ну вот, это в вас говорит управленческий опыт в этой сфере), а говорите, что не крутой).
                • SergeyJu
                  26 июня 2018, 16:52
                  Replikant_mih, морских яхт нет, особняка в Малибу нет. Даже второго гражданства нет. Не крутой. 
                  • Replikant_mih
                    26 июня 2018, 16:56
                    SergeyJu, не, ну я опыт оценивал), яхты как признак крутизны — это скорее критерии рэперов и школьников).
  • Turbo Pascal
    26 июня 2018, 09:20
    Зачем свой терминал? Сразу биржу свою делайте! :)
  • wrmngr
    26 июня 2018, 10:01
    Тупиковый путь
  • Евгений
    26 июня 2018, 10:05
    Если алгоритм гавно и нет оптимизации то никакой С++ вам не поможет. Я смотрю вы STD учите, это не самое быстрое, учите Win API и чистый С.
    • Value
      26 июня 2018, 13:22
      Евгений, лучше сразу Assembler. =)
    • Unworldly
      27 июня 2018, 01:37
      Евгений, присоединяюсь.
  • Андрей К
    26 июня 2018, 10:07
    Интересно, почему шарп умирает. Я бы порылся в этой причине. Может у вас алгоритм ворочает гигабайтами в оперативке. Или нечто подобное.  c++ может не спасти. 

    Если еще задача кроссплотформенности стоит, то Microsoft выпустил .Net Core. Нормально заходит под иксами. Я даже transaq connector под линуксом запускал на шарпе
  • SergeyJu
    26 июня 2018, 13:45
    Поддерживаю всех комментаторов, особенно Тараса. Для нормальной торговли нет никакой необходимости делать всю ту чудовищную работу, которую анонсировал автор. С# спокойно тянет и плазу и фикс и вообще все, что может потребоваться не HFT. Тестер для разработки систем, если подумать, штука вообще простая и к терминалам никак не привязана. Отладка торгового робота в связке с конкретным интерфейсом на биржу — тоже не супер-пупер сложная штука. И, как верно отмечено, многопоточность — наше все. 
    Боюсь, что автор ищет не там, где потерял.
    • Профиль удален
      26 июня 2018, 16:29
      SergeyJu, автор просто хочет повпахивать, деньги не нужны.
  • VladMih
    26 июня 2018, 14:10
    Как бы МТ5 ни тужился, до ТСЛаб в плане тестирования алго ему далековато.

    И, как непрограммист программисту, скажу:
    если есть проблема с алго, то эта проблема не в С#. )
  • My Shadow
    26 июня 2018, 17:18
    что в C# что в C++ тот же ООП, в С++ с низкоуровневыми элементами, в С# с Garbage Collector, который упрощает жизнь, но делает stop-world что не хорошо для HFT, в java почти тоже самое но есть non-stop-world Garbage Collector за деньги. вопрос затыка скорее всего вопрос проектирования/архитектуры, а не конкретного языка.
    • Андрей К
      26 июня 2018, 18:00
      My Shadow, сборщики мусора надо запускать в клиринг в ручную =))
      • My Shadow
        26 июня 2018, 18:28
        Андрей К, в каждой шутке есть доля шутки :) есть проще решение — wiki.openjdk.java.net/display/zgc/Main и скоро его отладят.
      • SergeyJu
        26 июня 2018, 20:05
        Андрей К, для реалтайма есть простое, надежное и абсолютно архаичное решение. Статическое распределение памяти. Оно совсем не универсальное, но для торгового робота вполне годное. 
  • Jame Bonds
    26 июня 2018, 20:19
    MQL не совсем С++. Сильно ограниченный. Есть опыт портирования с MQL в С++, в основном проблем нет. А вот из C++ в MQL могут быть большие сложности, так как множество возможностей C++ в MQL не поддерживаются. С ходу назову: отсутствие шаблонов, множественного наследования, другая идеология работы с указателями.
    Среди терминалов нашей биржи использующих С++ не назову.
    Из иностранных есть Sierra Charts, он использует тоже C++ с ограничениями. Но сам терминал на мой взгляд сильно устарел морально и я бы не стал под него ничего писать.
    Но смысла писать на C++ под терминалом особого не вижу. Т.к. гораздо логичнее писать на С++ вне терминала, используя его API либо коннектор.
    Из таких терминалов встречался с Interactive Brokers Trader Workstation и Rithmic Trader. Причем Rithmic API может работать даже без запуска терминала. А еще они заявляют себя как очень быстрое API. Так это или нет, сказать не могу.
    • tranquility
      26 июня 2018, 21:34
      Jame Bonds, а последние IBT и RT с нашими рынками работают? В дополнение могу предположить, что не составит сильно большого труда переписать коннектор, например, quikSharp в quikCpp, и если этого до сих пор никто не сделал, может, это никому и не нужно? Хотя, мне кажется, очень круто и универсально было бы иметь торговый алгоритм реализованный на С++. В С++ море возможностей для реализации программистских задумок, а в том же MQL с этим далеко не так, как Вы уже отметили.
      • Jame Bonds
        26 июня 2018, 21:41
        tranquility, IB и Rithmic с Московской биржей не работают. Увы. А алгоритм на C++, C# действительно можно подключать через разные коннекторы к любым терминалом. 
        Собственно поэтому я сам сейчас пишу роботов для себя только на C++.
        • tranquility
          26 июня 2018, 23:27
          Jame Bonds, а коннекторы для С++ сами пишете, или берете где-то готовые? Если второе, хотелось бы поподробнее узнать, сколько стоят и какие площадки поддерживают, есть ли под квик для нашего рынка?
          • Jame Bonds
            27 июня 2018, 15:14
            tranquility, все свое.
    • Unworldly
      27 июня 2018, 01:53
      А вот из C++ в MQL могут быть большие сложности, так как множество возможностей C++ в MQL не поддерживаются.

      Jame Bonds, согласен. А то, что поддерживается, может поддерживаться довольно странным образом.

      С ходу назову: отсутствие шаблонов, множественного наследования, другая идеология работы с указателями.

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

      И адресная арифметика отсутствует.
      • tranquility
        27 июня 2018, 14:07
        Unworldly, это понятно, там много на что пожаловаться можно в мкулэ, например, что нет push_back стэлевского в списках, и много всякого. Зато когда длл загружаешь, она прямиком память из скрипта читает, что дает преимущества по сравнению с луа, например.
        А что с коннекторами для С++ вычислений, есть что-то годное для трудящихся, или самому писать в любом случае надо?
        • Unworldly
          28 июня 2018, 00:15
          Зато когда длл загружаешь, она прямиком память из скрипта читает, что дает преимущества по сравнению с луа, например.

          tranquility, MQL — это не скрипт, он компилируемый.

          А что с коннекторами для С++ вычислений, есть что-то годное для трудящихся, или самому писать в любом случае надо?

          С коннекторами дела не имел. Но коннекторы — они же для взаимодействия с биржей, а не для «C++ вычислений».
      • Jame Bonds
        27 июня 2018, 15:17
        Unworldly, ух ты, как это я шаблоны пропустил.
        Спасибо.

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

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