Replikant_mih
Replikant_mih личный блог
08 апреля 2018, 17:12

Единый код стратегии для бэктестинга и торговли, конкретный вариант реализации. Подвох?

Всем привет).

В процессе углубления знаний языка C# пришла такая мысль, хочется получить обратную связь на предмет незамеченных подводных камней и аналогичного — буду благодарен.

Собственно: богатый арсенал языков программирования, а в частности C# — в т.ч. наследование и прочее, позволяют реализовать торгующий модуль какой угодно архитектуры, структуры, с нужными названиями классов, полей и методов. Посему, предположительно, можно написать такой проторговщик, который будет принимать код стратегий из Wealth-Lab как родной, без необходимости его менять, подгонять, править, дебажить, искать ошибки переноса и прочее. Все что я написал после слов «без необходимости» — как бы известные плюсы использования одного кода для тестов и торговли (наверняка, не все плюсы даже перечислил). Т.е. тут один раз качественно убеждаемся, что код интерпретируется полностью аналогично и всё — дальше Ctrl + C, Ctrl + V.

Или если можешь написать такой проторговщик, то проще и Велс свой написать и не иметь мозг?))

Что думаете? :)

UPD.: как это часто бывает, комментарии достаточно волатильно отходят от непосредственно затрагиваемого вопроса)), но все равно есть интересные мысли.

 

48 Комментариев
  • Андрей К
    08 апреля 2018, 17:43
    что такое проторговщик в вашем понятии?
      • Андрей К
        08 апреля 2018, 17:52
        Replikant_mih, тогда как быть, если ваш код стратегии подвязан на внутренние классы wealth-lab, банальное копирование не спасет
  • nicknh
    08 апреля 2018, 18:06
    Я бы не стал писать второй WealthLab. Поще его купить, тем более, что я считаю его лучшим средством для тестов и проверок алгоритмов. Да и по ТА он очень не плох.

    Но вот для Кивка я написал себе тестировщик, точнее некий аналог поиска оптимальных параметров алгоритма. Т.к. такого почти нигде нет. Написать алгоритм просто, а вот ответить на вопрос — а какие параметры оптимальны для инструмента, уже сложнее. Надо перебрать все комбинации, посчитать eqiuty, сравнить все это, сделать вывод.

    Даже простая стратегия двух скользяшек дает порой удивительные неожиданные параметры, которые самые прибыльные.
    • Андрей К
      08 апреля 2018, 18:13
      nicknh, 
      Я бы не стал писать второй WealthLab
      это наверное если стратежка уникальная и нет конкуренции. 
      А если нужно подускориться, то придется свое городить
    • MS
      08 апреля 2018, 21:33
      nicknh, во всём этом подходе недостаёт важнейшего элемента — уверенности в медленности изменений оптимальных параметров, что позволило бы успевать достаточно раз подряд выигрывать прежде чем проиграть и пересчитать параметры.
      Найдите такой алгоритм и такие его «почти инварианты».
  • Евгений Гуревич
    08 апреля 2018, 20:07
    то проще и Велс свой написать и не иметь мозг?

    Вот это вы замахнулись, однако! Я тут год не могу написать простой интерактивный график с вертикальным, горизонтальным скроллингом, по типу квиковского...

    А вы — прям целиком терминал написать! Круто ))
    • Андрей К
      08 апреля 2018, 20:26
      Евгений Гуревич, а на чем пишите? я так понимаю с нуля.

      • Евгений Гуревич
        08 апреля 2018, 21:44
        Андрей К, C++, с нуля. Пытался найти что-то похожее на гитхабе, на msdn, чтоб было от чего отталкиваться — не нашёл ((

        Поэтому с нуля
        • Алексей
          09 апреля 2018, 01:20
          Евгений Гуревич, вот что значит не правильно выбран язык, интерфейс на плюсах давно не пишут, время разработки дороже.
          если вашей стратегии нужна такая скорость то на c++ пишите только логику и выносите её подальше от интерфейса так как тормоза все в нём, а интерфейс хоть на ангуляре пишите.
    • VladMih
      08 апреля 2018, 21:16
      Евгений Гуревич, как ни странно, я уже много таких умельцев встречал. Сижу и думаю: с одной стороны целые команды разрабов сидят годами и что-то не видно софта без недостатков, а с другой одиночка хренак и за пару вечеров ваяет нечто «незыблемое, вечное и прекрасное».
      Просто шок )
        • Алексей
          09 апреля 2018, 01:40
          Replikant_mih, это заблуждение, команда всегда быстрей, банально у команды больше рук и план работ :)
          у одиночек преимущество в другом их код вылизан и оптимизирован под продукт, так как в команде главное таски быстрей закрыть и что бы тесты проходились, а на реализацию всем плевать.
  • Евгений Черных
    08 апреля 2018, 20:52
    А чем вам стокшарп не нравиться? Или тс лаб?
      • Sergey
        09 апреля 2018, 10:26
        Replikant_mih, наверное не бэктестер, а Дизайнер. Бэктестер у них пока самое лучшее. На стаканах не видел ничего пока что. А мне это важно, я пишу роботов под монеты.

        А Дизайнер сыроват. Впрочем как ТСЛАБ 2.0, который я честно мучал несколько месяцев. Удалил обе программы. Кубики не моё. Пишу в основном на C# и понимаю, что на языке писать проще, чем в конструкторе.
  • Дмитрий Титков
    08 апреля 2018, 21:47
    У меня робот так и работает, у робота один код и он работает и в тестере и на проде. Когда робот совершает сделку, тестер даже подбирает по тиковым данным наихудший вариант развития событий, для более объективных результатов теста. Из минусов могу сказать время выполнения, тесты проводятся гораздо дольше.
      • Дмитрий Титков
        08 апреля 2018, 22:09
        Replikant_mih, Да, всё самописное, всё на С++ + postgresql
  • MetaQuotes Software
    08 апреля 2018, 23:38
    Посмотрите MetaTrader 5.

    Там давно все изобретено и реализовано в деталях.

    https://www.metatrader5.com/ru/automated-trading/strategy-tester
      • MetaQuotes Software
        09 апреля 2018, 14:02
        Replikant_mih, а что именно не то?

        Там не надо изобретать 99% велосипедов, а просто брать и пользоваться хорошо проработанной системой.
          • MetaQuotes Software
            09 апреля 2018, 17:46
            Replikant_mih, язык MQL5 — достаточно полный аналог C/С++.

            За ним стоят 17 лет последовательного развития языков MQL, MQL2, MQL4 и MQL5, когда язык вшивался вглубь торговой платформы, пока не стал ее ядром.

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

            Странно слышать про слабый тестер, когда он:
              — мультивалютный
              — потиковый с миллисекундной точностью, даже Sleep в моделировании учитывается и проскальзывания временные моделируются
              — без заглядывания в будущее,
              — мультипотоковый, с локальными расчетными фермами, с MQL5 Cloud Network
              — визуальный тестер
              — генетический оптимизатор

            Задумайтесь, что и как может вложить за 17 лет профессиональная софтверная компания в свою приоритетную технологию?
              • MetaQuotes Software
                09 апреля 2018, 19:02
                Replikant_mih, а 1000 брокеров с миллионами трейдеров на MetaTrader по миру, это тоже не аргумент? Трейдеры как раз за алготрейдинг и выбирают его.

                Тестер мультипортфельный изначально. Причем идет одновременное моделирование всех выбранных инструментов с миллисекундной точностью.

                Кроме того, в тестере есть дополнительный режим оптимизации по портфелю символов из обзора рынка:


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

                Изобретая велосипеды, да еще и с откровенно непригодными коннекторами, люди не понимают сложности реально решаемых задач на текущий момент.
                  • MetaQuotes Software
                    10 апреля 2018, 00:40

                    Replikant_mih, ну если человек не хочет учиться.

                    Посмотрите вот сюда, пожалуйста:  https://www.metaquotes.net/ru/company/news — это факты.

                    Если вернуться к поднятой теме, то повторю — сложность алготрейдинга давно выросла за пределы «сваять на коленке в C#».

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

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

                    Интерес к платформе на нуле: https://trends.google.com/trends/explore?date=all&q=wealthlab,metatrader

                      • MetaQuotes Software
                        10 апреля 2018, 11:24
                        Replikant_mih, попробую в третий раз повторить мысль.

                        Человек не в состоянии перерасти современные платформы. Потому что их сложность/комплексность нельзя перебить ничем, кроме сотен человеко-лет кропотливого изобретения велосипедов.

                        Попытайтесь честно сравнить, что Велслаб дает по сравнению с MetaTrader 5 и вы признаете вывод, что «для меня не важно, я же буду на C# писать свое».

                        Именно поэтому вы так реагируете на MetaTrader. Вам не важны никакие аргументы, так как вы считаете «да все же ясно, C# рулит!».
                          • MetaQuotes Software
                            10 апреля 2018, 15:09
                            Replikant_mih, удачи!

                            Все познается только на собственном опыте. Вдруг получится.
  • дохтор
    09 апреля 2018, 01:52
    В реальности поиск неэффективности, т.е. пресловутый R&D занимает львиную часть времени. C# для этого слишком громоздкий. C# не заточен на код, который нужно постоянно менять в исследовательских целях.  Решение — Anaconda (python). Хотя есть ещё R и даже Матлаб.

    Для C# есть довольно много платформ помимо WL. Например OpenQuant\SmartQuant или StockSharp.

  • Prophetic
    09 апреля 2018, 11:15
    Вижу очередную попытку изобрести велосипед.
    На самом деле все достаточно просто. Поехали:
    — Чем универсальней должна быть система — тем она сложнее.
    — Чем сложнее система — тем больше средств (людей, денег, времени и т.п.) требуется на ее разработку.
    — Чем «дороже» система (в том числе в человеко-часах) — тем больше требуется экономических обоснований для ее создания.
    — При наличии достаточно большого количества экономических обоснований для создания системы, процесс создания такой системы превращается в отдельный коммерческий проект.
    — На одновременное ведение двух и более коммерческих проектов (попытка заработать алготорговлей — это тоже коммерческий проект) обычно не хватает ресурсов (денег, времени, людей).
    — Как результат — приходится выбирать что-то одно или страдают результаты всех направлений деятельности.

    Вывод (читай «рекомендация»):
    Напишите свой узкоспециализированный софт для тестирования Ваших стратегий, который будет заточен исключительно под Ваши потребности и особенности. Такая разработка потребует значительно меньше ресурсов и будет отвечать вашим запросам процентов на 95%.
    Для запуска роботов в реальных условиях, также напишите отдельный софт. Также как и с тестером, он будет заточен исключительно под Вас, будет работать быстрее и стабильнее универсальной системы, и позволит переносить код оттестированных стратегий в рабочие алгоритмы достаточно быстро, чтобы не задумываться необходимости иметь универсальную систему.

    З.Ы.: У меня перенос оттестированной на истории стратегии в рабочий алгоритм занимает 5-10 минут. Иногда, из-за невнимательности и спешки при переносе возникают ошибки, но очень редко и чаще всего несущественные (во всяком случае, много денег потерять не успеваю).
    З.З.Ы:
    На самом деле, если бы я сейчас только начинал заниматься этим вопросом, то обратил бы свой взор на OsEngine:
    github.com/AlexWan/OsEngine
    Попробуйте — вдруг поможет…

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

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