Блог им. Replikant_mih

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

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

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

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

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

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

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

 

★3
48 комментариев
что такое проторговщик в вашем понятии?
avatar
Андрей К, Ну та хреновина, которая получает котировки, крутит стратегию — проверяет выполнение её условий, засылает заявки и все такое)
avatar
Replikant_mih, тогда как быть, если ваш код стратегии подвязан на внутренние классы wealth-lab, банальное копирование не спасет
avatar

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

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

avatar
Я бы не стал писать второй WealthLab. Поще его купить, тем более, что я считаю его лучшим средством для тестов и проверок алгоритмов. Да и по ТА он очень не плох.

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

Даже простая стратегия двух скользяшек дает порой удивительные неожиданные параметры, которые самые прибыльные.
avatar
nicknh, Согласен — Велс мощен!). Но тоже иногда в своих богатых фантазиях упираешься и в его возможности, написал простенький апгрейд для него, ещё есть задумки по улучшению такого апгрейда — задачи те же, нахождение конкретных значений параметров. Не буду цепляться за ярлыки и названия  — мало ли что вы подразумеваете под оптимальными значениями — я лично ищу робастные, ну и при быльные при этом, конечно!)

avatar
nicknh, 
Я бы не стал писать второй WealthLab
это наверное если стратежка уникальная и нет конкуренции. 
А если нужно подускориться, то придется свое городить
avatar
nicknh, во всём этом подходе недостаёт важнейшего элемента — уверенности в медленности изменений оптимальных параметров, что позволило бы успевать достаточно раз подряд выигрывать прежде чем проиграть и пересчитать параметры.
Найдите такой алгоритм и такие его «почти инварианты».
avatar
MS, Почему недостаёт?) — он же не сказал, как именно он ищет оптимальные значения и какие использует при этом критерии — может это один из критериев).

avatar
то проще и Велс свой написать и не иметь мозг?

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

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

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

Поэтому с нуля
Евгений Гуревич, С++, с нуля — думаю, во многом поэтому «год не могу написать». Думаю, в варианте C# + WPF было бы побыстрее)

avatar
Евгений Гуревич, вот что значит не правильно выбран язык, интерфейс на плюсах давно не пишут, время разработки дороже.
если вашей стратегии нужна такая скорость то на c++ пишите только логику и выносите её подальше от интерфейса так как тормоза все в нём, а интерфейс хоть на ангуляре пишите.
avatar
Евгений Гуревич, как ни странно, я уже много таких умельцев встречал. Сижу и думаю: с одной стороны целые команды разрабов сидят годами и что-то не видно софта без недостатков, а с другой одиночка хренак и за пару вечеров ваяет нечто «незыблемое, вечное и прекрасное».
Просто шок )
avatar
VladMih, И команды и одиночки разные бывают, иногда одиночка может перформить лучше команды, это нормально.
avatar
Replikant_mih, это заблуждение, команда всегда быстрей, банально у команды больше рук и план работ :)
у одиночек преимущество в другом их код вылизан и оптимизирован под продукт, так как в команде главное таски быстрей закрыть и что бы тесты проходились, а на реализацию всем плевать.
avatar
Алексей, Ну, команда одиночка — это как минимум ярлыки и обобщения). Одиночкой может быть крутой чел, а может быть обычный, команда может быть хорошо скоординированной и мотивированной, а может работать как попало. У одиночки как минимум есть одно преимущество — взаимодействие между процессами быстрое и прозрачное, а как оно настроено в конкретной команде — это ещё вопрос. Это как размещать память внутри процессора — взаимодействие с ней упрощается и ускоряется. Ну а так-то понятно, если надо пилить что-то масштабное и на действительно сильном уровне — конечно команда.
avatar
Евгений Гуревич, Dream Big как говорится))), а если серьезно — то тут немного другая постановка вопроса, необходимость создания проторговщика ставится как данность, а в посте я предложил один из вариантов реализации, решающий ряд проблем. Ну и да, с точки зрения реализации — не самое простое мероприятие, хотя все относительно, кодер скажет, что это два байта отослать)).
avatar
А чем вам стокшарп не нравиться? Или тс лаб?

kbrobot.ru, Ну, 

ТСЛАБ — не нравится платностью, не нравится ростом цены (т.е. динамика платности и непредсказуемость). Ну это становится важным только на фоне прочих условий — как бэктестер как-то мне не сильно понравился, особенно в части кубиков, в части API не пробовал — думаю, сложнее в освоении чем Wealth-Lab, с моим типом мышления это критично. Проторговщик — глючный и с ограничениями. В общем накопительно Score не очень большой платформа получает)) — хотя да, один код и торговля и тесты — здесь это, вроде, есть.

StockSharp — бэктестер у них новый продукт, вроде не фонтан пока. А для торговли используем их платформу.

Ну а Wealth-Lab — из того что видел — самая сильная для рисёча платформа + подобрал ключик к расширению функциональности для полного удовлетворения моих рисёч потербностей.

avatar
Replikant_mih, наверное не бэктестер, а Дизайнер. Бэктестер у них пока самое лучшее. На стаканах не видел ничего пока что. А мне это важно, я пишу роботов под монеты.

А Дизайнер сыроват. Впрочем как ТСЛАБ 2.0, который я честно мучал несколько месяцев. Удалил обе программы. Кубики не моё. Пишу в основном на C# и понимаю, что на языке писать проще, чем в конструкторе.
avatar

Sergey, а бэкстестер и Дизайнер это разное у них?) — ну я, честно, глубоко и не копал).

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

avatar
У меня робот так и работает, у робота один код и он работает и в тестере и на проде. Когда робот совершает сделку, тестер даже подбирает по тиковым данным наихудший вариант развития событий, для более объективных результатов теста. Из минусов могу сказать время выполнения, тесты проводятся гораздо дольше.
Дмитрий Титков, оо, интересно, а какой стек технологий, какие платформы? — самописное что-то?
avatar
Replikant_mih, Да, всё самописное, всё на С++ + postgresql

Дмитрий Титков, в одного писали? — я так понимаю, мощный разработческий бэкграунд у вас?)

Как в целом алго-торговля протекает?) — робастность научились обуздывать?)

avatar
Джонотан Моторс, это всё или какие-то пояснения будут?))
avatar
Посмотрите MetaTrader 5.

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

https://www.metatrader5.com/ru/automated-trading/strategy-tester
avatar
MetaQuotes Software, Да не, спасибо, пробовал — не то).
avatar
Replikant_mih, а что именно не то?

Там не надо изобретать 99% велосипедов, а просто брать и пользоваться хорошо проработанной системой.
avatar
MetaQuotes Software, не то — какой-то свой язык программирования, не то — бэктестер вообще какой-то очень слабый если честно — это лично для меня очень жирные минусы. Кому-то может и не так критично.
avatar
Replikant_mih, язык MQL5 — достаточно полный аналог C/С++.

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

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

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

Задумайтесь, что и как может вложить за 17 лет профессиональная софтверная компания в свою приоритетную технологию?
avatar

MetaQuotes Software, вопрос вконце — не аргумент, если вложить не в том направлении — результаты буду мощные конечно)) — все-таки 17 лет — но не убедительные. 

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

Про тестер — честно говоря, давно это было (в т.ч. не исключаю, что что-то/многое изменилось/улучшилось), не помню детали, но что-то жестко меня в тестере напрягло тогда — деталей не помню, может, невозможность стартануть сразу прогон на портфеле, а не только на одном тикере… — такой есть грешок? — мне это критично.

А так все что вы в пунктах плюсов тестера перечислили это сильные стороны, по крайней мере в теории.

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

avatar
Replikant_mih, а 1000 брокеров с миллионами трейдеров на MetaTrader по миру, это тоже не аргумент? Трейдеры как раз за алготрейдинг и выбирают его.

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

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


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

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

MetaQuotes Software, 1000 брокеров, вы же про форекс, я так полагаю. Не форекса среди них меньше процента, наверное. Не будем поднимать тему того, что считает большинство трейдеров по поводу форекса и в частности связки MetaTrader + форекс. Поэтому да, это тоже не аргумент. Отсылка к авторитетам, мнению большинства и подобному — никогда не были хорошим аргументом в дискуссии. 

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

avatar

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

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

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

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

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

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

avatar

MetaQuotes Software,
>>«ну если человек не хочет учиться.» — что там опять у вас за человек не хочет учиться?))

>>"https://www.metaquotes.net/ru/company/news — это факты" — ну эти ваши «это факты» никак не противоречат написанному мной, я знаю, что софт используется и на биржах, но относительно форекса, их подавляющее меньшинство — я так и написал)).


По поводу C# на коленке)) — у вас слегка искаженное представление об алготрейдинге)) — да, готовая платформа, пусть это будет MT5, лучше чем что-то за 5 минут на коленке на C#. Но — маленький секрет — на C# можно не только на коленке. Если планы скромные — можно довольствоваться MT5, Квиком или чем-то ещё, если планы серьезные, достаточно быстро человек перерастет платформу, потому что платформа предлагает некий усредненный функционал. Да, платформа идет за трендами и чаяниями большинства, но кто сказал, что большинство на рынке решает? — как раз-таки наоборот- толпа проигрывает.

>>«Интерес к платформе на нуле: » — естественно у «metatrader» куча запросов, учитывая что 4-я версия в каждой(!) форекс-кухне стоит, коих бесчисленное количество! 

По поводу Велса — не знаю, как вы оцениваете, мне наплевать сколько раз люди его вбивают в поисковике!))) — мне важно, что он конкретно мне дает как платформа, и возможностей он мне дает существенно больше, чем MT5 и точка. Некоторым людям сложно думать своей головой, им нужен поводырь в принятии решений (рекомендации друга, выбор толпы, что-то ещё), мне не нужен.

avatar
Replikant_mih, попробую в третий раз повторить мысль.

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

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

Именно поэтому вы так реагируете на MetaTrader. Вам не важны никакие аргументы, так как вы считаете «да все же ясно, C# рулит!».
avatar

MetaQuotes Software, 

>>«Человек не в состоянии перерасти современные платформы. Потому что их сложность/комплексность нельзя перебить ничем, кроме сотен человеко-лет кропотливого изобретения велосипедов.» — человеку и не надо перебивать сложность и комплексность), человеку нужна конкретная функциональность, а сложность и комплексность во многом нужна для удовлетворения средних потребностей тысяч средних трейдеров, а какой мне профит от того, что платформа, которую я юзаю, удовлетворяет тысячи трейдеров, если она не удовлетворяет лично мои?! — тут два вариант либо я дурачок и мои потребности странные и неадекватные, либо, как я выше написал, усредняющая платформ не способна удовлетворить лично моим конкретным всем потребностям в алго-сфере.

 

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

 

«Вам не важны никакие аргументы, так как вы считаете «да все же ясно, C# рулит!»» — «не важны никакие аргумент» — вот прям вообще ни разу не про меня, полностью мимо прям).

 

avatar
Replikant_mih, удачи!

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

MetaQuotes Software, Согласен, теория-теорией, критерий опыт и прибыли)).

И вам удачи!

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

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

avatar
психоневролог, Да, research основное — согласен. Исследование исследованию рознь, для моего подхода плюсы C# перекрывают его некоторую относительную громоздкость.
avatar
Вижу очередную попытку изобрести велосипед.
На самом деле все достаточно просто. Поехали:
— Чем универсальней должна быть система — тем она сложнее.
— Чем сложнее система — тем больше средств (людей, денег, времени и т.п.) требуется на ее разработку.
— Чем «дороже» система (в том числе в человеко-часах) — тем больше требуется экономических обоснований для ее создания.
— При наличии достаточно большого количества экономических обоснований для создания системы, процесс создания такой системы превращается в отдельный коммерческий проект.
— На одновременное ведение двух и более коммерческих проектов (попытка заработать алготорговлей — это тоже коммерческий проект) обычно не хватает ресурсов (денег, времени, людей).
— Как результат — приходится выбирать что-то одно или страдают результаты всех направлений деятельности.

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

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

Prophetic, >>«У меня перенос оттестированной на истории стратегии в рабочий алгоритм занимает 5-10 минут.»

Круто! 

По поводу софта под свои потребности и задачи — полностью согласен! — это как целевая конфигурация. Но так как я согласен и с тем, что вы сказали про оценку эк. целесообразности сложных проектов, то на такое тоже надо решиться и обдуманно и обоснованно решиться, а не то что это маст хэв. Как этап эволюции — да.

avatar

теги блога Replikant_mih

....все тэги



UPDONW
Новый дизайн