Блог им. Replikant_mih

Выбираю программу для алгоритмической торговли. Wealth-Lab, MultiCharts и их друзья.

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

 

Собственно, что имеем, у меня пробел в технической части, я не технарь, не кодер, для меня синтегрироваться с торговой платформой, с Plaza-2 и т.д. пока нереализуемо. В то же время я устал метаться между платформами, между вариантами реализации торговой алгоритмической инфраструктуры, между разными костыльными решениями. В общем сейчас я определился со входящими параметрами, мне нужна мощная готовая платформа для аналитики, тестирования, оптимизации стратегий и прочего и чтобы… она же эти стратегии и торговала на реальном рынке, плюс мне надо чтобы кодинг внутри платформы был на C# — классный язык — немного его знаю, + когда проапгрейжу этот язык смогу писать уже свои вещи — свои платформы, свои тестеры и прочее.


Сформировал short-list из Wealth-lab, MultiCharts, NinjaTrader, Tradmatic. Первые два в приоритете. Немного опросил экспертов), получил обратную связь, но решение конечно буду принимать сам. Решил скачать демки и помучать их некоторое время, понять плюсы минусы, потом, если будет явный лидер, проблем нет, если не будет — сочиню некий весовой скоринг и определю лидера, или же прислушаюсь к внутреннему я, к подсознанию — иногда так тоже делаю).

Советы, рекомендации, критика приветствуются)).  

★1
76 комментариев
понял, что это не то, что кубики — это очень ограниченно,

в тслабе же ограниченность снимается за счет c#
avatar

Андрей К, ТСЛаб какой-то не очень мощный как платформа для тестирования, там же можно отдельные кубики писать, а тестить всё равно конструкцию из кубиков? или можно вообще от кубиков уйти если использовать C#?

Не мощность платформы — нет удобно реализованного OutOfSample тестирования, портфельного тестирования вроде нет и т.д.

Я ошибаюсь?

avatar
Replikant_mih, Смотрите TSLab api в этом случае тсЛаб можно использовать как коннектор, все остальное можно писать самому. А с этой точки и шлюз плазы освоить не так сложно.
avatar
Алексей С, Боюсь, пока мой C# не настолько хорош, чтобы я мог API юзать, и если я пойду по этому пути, то это опять время, а хочется реально уже в бою стартануть)). В Wealth-lab кодил стратегии — языка хватает, а API пока для меня это сложно (ну или мне так кажется).
avatar
Replikant_mih, Все гораздо проще чем кажется, там минимум знаний нужен для старта, а дальше все будет зависеть только от вашей фантазии.
avatar
Алексей С, Ну хз, хз, мне не нравится язык с наскока осваивать, я книжку по порядку чтения прорабатываю, программирую каждую тему, каждый новый кусок информации., поэтому если я ещё не дошёл, скажем, до каких-нить указателей, лямбда выражений или событий — я кодить что-то с ними не смогу. Но я обдумаю ещё раз вариант с самостоятельной интеграцией, но скорее всё-таки решу, что ещё рано)
avatar
Replikant_mih, завалили меня вопросами, я оказывается не все знаю.

1) Можно написать свой кубик на c# и дальше тестить на кубиках
2) Можно полностью всю стратегию написать на c# и тестить стратегию без кубиков.
3) OutOfSample, портфельное — мне такие понятия не знакомы.
Если вы спрашиваете, можно ли портфель стратегий прогнать на тесте, то нет. Я изворачивался, делал сразу несколько стратегий в одной и смотрел поведение.

Если не хватает аналитики (ну например разбивки по годам и тд), гружу прям с ТСЛАБ все сделки в ексель и там кручу верчу, тут ограничений нет — можно прям утонуть в аналитике.
avatar

Андрей К, :)

1) Это опять ограничения, я их не очень люблю)), мне чисто психологически комфортней когда возможности условно-безграничны, даже если я большую их часть никогда не буду использовать.

2) Ммм, любопытно. Обдумаю.

3) OutOfSample — ну когда тестишь (оптимизируешь), условно говоря, создаешь стратегию на одном временном отрезке, а контрольно проверяешь на другом. Это возможно в ТСЛабе, но неудобно на хорошем уровне. Портфельное, ну в частности имел в виду, одну стратегию на толпе инструментов прогнать.

4) Аналитика в экселе это да, или можно через какой-нить скриптик на Python, может такой вариант не хуже будет чем встроенная аналитика, но от встроенной на хорошем уровне я бы не отказался)

avatar
Wealth-lab работает с одним брокером
Саханов Виталий, Ну я рассматриваю вариант работы через коннектор (есть вроде коннекторы к квику, плазе, транзаку), хотя они конечно неофициальные.
avatar
Replikant_mih,  с неофициальными коннекторами можно нарваться на неприятности на счете. Т.к. система может начать работать не одекватно 
Саханов Виталий, Ну да, это риск, наверно, его как-то можно хеджировать, надо думать и учитывать это в т.ч. при выборе платформы, тот же Мультичартс даёт официальный коннектор, но он тоже не идеален, например, требует постоянно вставленный хардварный USB ключ.
avatar
Учите дальше с#, и тогда Вам будет все равно, что Wealth-lab, что MultiCharts, NinjaTrader...
Tradmatic сразу в топку — это не очень качественный отечественный ремейк Wealth-lab. 

Сергей Гаврилов, По Tradematic понял, спасибо, ещё не смотрел его подробно, но были мысли, что не спроста он не очень на слуху.

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

А если всё-таки сравнивать Велс, Мультичартс и Нинзю — что порекомендуете?

avatar
Replikant_mih, В этом случае остановитесь на TSLAB. Хорошая стратегия — это простая стратегия.  В TSLAB вы ее легко напишите и проверите в реале. Проблема в том, что если исходить из доходности 30% годовых, то минимальная сумма депозита должна быть 120 000 рублей

Саханов Виталий, Ну, говорят, у TSLab есть проблемы не только на этапе тестирования, но и не на этапе исполнения. 
Далее, я не полностью разделяю парадигму «хорошая стратегия — простая стратегия», + даже простые стратегии некоторые в TSLab, думаю, не так просто реализовать.

Про доходности и размер депозита — мне немного показалось, что в контексте вопроса это не играет никакой роли))

avatar
Replikant_mih, я TSLAB пользуюсь 4 года. Тайм фрайм 5 минут и не испытывал больших проблем с алгоритмами. Все что не удобно реализовать на TSLAB я пишу на C#
Саханов Виталий, В разделе Алготрейдинг пару дней назад статья была про TSLab — озвучивалась альтернативная вашей точка зрения на TSLab)).
avatar
Replikant_mih, вы не любите кошек?.. вы просто не умеете их готовить…  нарисуйте табличку с плюсами и минусами… и пока сам не проверишь… ни кому не верь
Дмитрий Черников, Ну да, вот я собираю точки зрения на разные продукты, чтобы эту самую ментальную (а если выбор будет не очевидным, то и не ментальную) табличку заполнить. Просто какие-то вещи я могу узнать только от людей, которые уже плотненько поработали с продуктом.
avatar
Рекомендация для начинающих: начните. 
avatar
dip, Согласен, до этого процесс больше был похож именно на выбор, чем на непосредственно работу)), вот сейчас ещё разок выберу и уже погнал))
avatar
S#, QuantConnect посмотри.

Бобровский Дмитрий, Спасибо. 

В S# встретил в документации незнакомый синтаксис, испугался, пока отказался), по отзывам людей, не так просто освоить их API, пока не готов убеждаться в этом самостоятельно), ну и другие минусы есть. Хотя по заявленной функциональности — шикарная штука.

QuantConnect — спасибо, посмотрю.

avatar
Replikant_mih, у S# есть S#.Designer. Вроде довольно простая штука. А так, при желании и достаточной глубине знания C# кодить под S# стало одно удовольствие. При этом нет проблем подвязать в проект сторонние библиотеки — тот же R.NET, Python.NET, unmanaged code и т.п., использовать GPGPU и прочая. Wealth-Lab на момент версии 6.5 не хотел даже особо дружить с базовыми .NET'овскими фичами, запихнуть в него свою библиотеку было ещё большей проблемой.

Бобровский Дмитрий, Designer это же кубики — чёт не хочется, ну и они в S# пока глючные, чуть ли не бета-версия.

>>«при желании и достаточной глубине знания C# » — пока нет этой достаточной глубины))

А дальше вы вообще стали ругаться не сильно понятными мне техническими деталями))

avatar
Replikant_mih, ну, я к тому, что что-то серьёзное посчитать в Wealth-Lab довольно затруднительно, к сожалению. ((( Насчёт беты дизайнера их — разве? Вроде ж уже полноценку сделали? Я просто брал их API всегда и под себя разрабатывал с нуля.

Бобровский Дмитрий, Ну может и не бета, но Дизайнер — не то, что я ищу сейчас).

Подскажете, с чем связано то, что в Велсе затруднительно считать что-то серьёзное? — и о каком примерно серьёзном идёт речь? (HFT?)

avatar
Replikant_mih, проблема в том, что Вы не сможете без танцев с бубнами и с уверенностью в том, что это всё сейчас не нае..., подключить какую-либо нормальную считалку чего-либо. Для подключения внешней библиотеки нужна Visual Studio или схожая штука (по крайней мере, ранее). И стабильностью эта конструкция совершенно не отличалась. 
Далее, невозможно было использовать нормально собственный Candle Manager и клепать нестандартные свечки. Я писал один в своё время — дело было крайне неблагодарное, сапп их только разводил руками и желал мне удачи. 
Многопоточности как таковой не было (насколько я помню). Поэтому был большой вопрос в бэк-тестинге. Большой объём данных приводил к отжиранию всей оперативы, до которой Wealth-Lab мог дотянуться. При этом тормоза становились жутчайшими. Как-то так.

Бобровский Дмитрий, нестандартные свечи — звучит как что-то, что я не буду в ближайшее время использовать. Внешние считалки — не уверен о чем речь. Вероятно, будет некая dll библиотека самописная, в которую будут многие роботы смотреть — с этим же не будет проблем? Мультичартс, вроде, чуть ли не на главной заявляет про возможность кодить в Visual Studio.

Отсутствие мультипоточности — это да, это не айс конечно, учитывая что я купил 8-ядерный проц недавно))

avatar
Replikant_mih, нестандартные свечи — например, свечи с High-Low = const, строящиеся по тикам. Ох я замучился их реализовывать, а ещё больше — отрисовывать! Далее, как раз с подключением внешней библиотеки и могут быть большие проблемы. Хотя бы потому, что Editor велсовский не даёт развёрнутый код, только лишь часть, связанную со стратегией. Если Multicharts даёт возможность соответствующую работать в MSVS или иных — отлично. Но когда изучал тему, то помнится, были подводные камни подключения внешних библиотек, не помню какие. Рекомендую обратить на это внимание. 
Бобровский Дмитрий, Аа, понял про какие нестандартные речь, пока такие действительно не планирую. Наверно в коде стратегии можно сделать соответствующий класс для такой свечи и массив объектов, и дальше что-то делать), в общем это только мысли, гласное, что, наверно, не скоро такое мне понадобится.
avatar
Replikant_mih, к сожалению, Candle Manager в велсе в большей части статичен. В этом смысле S#/QuantConnect выгодно отличаются (уже хотя бы в этом) — там можно свой написать с нуля, считай.
Бобровский Дмитрий, Ладно, пока не буду заморачиваться этим вопросом, а-то если постараться, минусов можно миллион найти, причём в любой платформе, но выбирать-то надо))
avatar
Replikant_mih, если вы хотите HFT, то однозначно надо C#. Но по моему убеждению в HFT торговли денег нет. Туда надо вбухивать большие деньги в оборудование и пытаться поймать крохи. Намного эффективнее встать по тренду и ждать сколько рынок нальет тебе. При HFT торговли у вас должна быть хорошая математическая обработка. Вас не должны пугать стохостические диференциальные уравнения. Но и они говорят, что математическое ожидание прибыли есть ( mu*T — sigma^2/2 * sqrt(T))
Саханов Виталий, Не-не, меня в HFT совсем не тянет, в ближайшее время — так точно)
avatar
Саханов Виталий, для HFT нужен С++, а лучше Си, специальные компиляторы, оптимизированные под особенности процессора и т.п. А ещё лучше ПЛИСы или хотя бы GPGPU.)))
Насчёт мат.ожидания прибыли — кто сказал, что доходность будет нормально распределена? ;-)
Replikant_mih, из s# можно использовать коннекторы: http://synapseslot.ru/osnovy-stocksharp
 s# я пытался освоить, но там документация не соответствует реализации. И к тому же один из разработчиков S# не рекомендовал его
Саханов Виталий, Ну вот да, меня примерно это и останавливает), если брать Велслаб или Мультичартс — там более крупные серьёзные команды, со всеми вытекающими плюсами.
avatar
Саханов Виталий, проще всего S# осваивать по examples. Просто S#, надо отдать должное Михаилу, превратился в мощную штуку. Правда, если сравнивать с Wealth-Lab и прочими, то это как MacOS и Linux.))))
Бобровский Дмитрий, Я на данном этапе отдал бы предпочтение алго-MacOS, нежели алго-Linux)))
avatar
Replikant_mih, ну, тогда лучше, конечно, Wealth-Lab, TSLab, Quantconnect, Multicharts. Там сильно заморачиваться не нужно, минимум усилий, но полноценный ТА.))) В Wealth-Lab'е достаточно большой набор всяких индикаторов из ТА, есть большое поле. Насчёт многопоточности в бэктестах у этих систем — яхз, если честно.
Бобровский Дмитрий, Ок, спасибо). В Велсе вроде нет многопоточности, в Мультичартсе есть. Но Велс вплотную подошел к 7.0 версии, мож там будет))
avatar
Replikant_mih, крайне сомневаюсь. Если только потроха не перепишут с нуля. Обычно проект либо сразу на рельсы многопоточности ставят, либо никогда.
Бобровский Дмитрий, Я трейдер, я верю в лучшее))
avatar
Replikant_mih, да тут веры мало. Ребят устраивает. Их потребителей — тоже. А если нет запроса, то зачем напрягаться?) Вот они и не напрягаются, насколько я понимаю.
Бобровский Дмитрий, Спрошу у саппорта явным образом про многопоточность в будущих версиях)
avatar
Replikant_mih, да, будет интересно узнать про их планы на будущее.)))
Бобровский Дмитрий, Вы, так понимаю, с Велсом плотненько работали, с Мультичартсом такого опыта нет? —  не исключено, что из этих буду в итоге выбирать.
avatar
Replikant_mih, С мультиками не работал особо, к сожалению, смотрел только в плане доступных фишек и немного пытался покодить. Что-то меня в нём не устроило, не помню что. Вроде тоже что-то со свечками.
Бобровский Дмитрий, понял, но всё равно спасибо, инфы для размышлений прилично получил)
avatar
Replikant_mih, да не за что.)) Я бы из этих 2-х выбрал Мультичартс, наверное. Для старта самое оно — заодно поучитесь в студии кодить.)))

Бобровский Дмитрий, Ну если не юзали — тут наверно психологический эффект, субъективность, типа: Велс юзал, он не айс, мультичартс не юзал — ну наверно он хороший))

В общем я понял раскадровку)

avatar
Бобровский Дмитрий, не вводите парня в заблуждение с многопоточностью. В s# от многопоточности Вы никакого выигрыша не получите, потому как «многопоточность» не есть синоним «многоядерности»… Как считали на одном ядре, так и будете…
Сергей Гаврилов, не соглашусь. С помощью Task'ов вполне себе на бэктестере реализуется многопоточность. А уж как потоки по ядрам процессора будут распиханы — это к операционке.))
Бобровский Дмитрий, не будут… Диспетчер задач включите и увидите, что таски работают на одном ядре..., время померьте — скорость не увеличивается, а может даже уменьшается…
Сергей Гаврилов, не знаю, как у Вас, у меня таски работали на разных ядрах. В моём SkyLake 4x2, т.е. 8 логических ядер — все были задействованы.
Бобровский Дмитрий, как Вы это определили?
Сергей Гаврилов, task manager, профайлер, рост скорости бэк-тестинга и т.п.
Бобровский Дмитрий, а на что Вы смотрели в task manager?
Сергей Гаврилов, например, загрузку ядер. В System Explorer можете больше инфы посмотреть. А так — возьмите профайлер и попробуйте посмотреть, что и как у Вас работает и вызывается, в каком потоке работает и как.
Бобровский Дмитрий, можно… Мне до сих пор не удавалось заставить таски работать на разных ядрах… Вот я и хочу выяснить, у Вас на самом деле включаются все ядра или Вы заблуждаетесь… Признаком того что включены все ядра является одинаковая загрузка в % всех ядер..., т.е. у Вас должно быть 12,5%...
 
Сергей Гаврилов, вполне можно, вполне получается. Task работает посредством Task Manager'a CLR и задействует потоки из соответствующего Thread Pool'а. Нормальной адекватной статьи по Task Parallel Library у  меня под рукой нет, но вот что-то более-менее стоящее: https://www.codeproject.com/Articles/362996/WebControls/  И да, у меня 12,5% показывает (ну, с флуктуациями на десятые доли %, если никаким другим процессам в системе не требуется проц активно).
Сергей Гаврилов, кажется, мы не до конца друг друга тут понимаем. Бэктестер сам по себе у S# однопоточный, насколько я знаю, но можно параллельно запускать пакет стратегий с разными параметрами, который будет работать в отдельном потоке (я, правда, сейчас не уверен, что не реализовано на Task'ах — тут Вам, как тим девелоперу, виднее). Как сказано тут (собственно, я использовал именно этот подход), параллельный бэк-тестер имеет место быть. doc.stocksharp.ru/html/24a5c734-199f-4090-943d-6324a04f335b.htm 
В моих задачах требовалось большое количество специфических вычислений, которые неплохо распараллеливались, поэтому скорость даже на однопоточке повышалась, не говоря уже об параллельном тестировании.
Бобровский Дмитрий, насколько я знаю сам таск нельзя принудительно заставить работать на определенном ядре… Обычную нитку можно…  
Сергей Гаврилов, Task можно заставить работать в определённом Thread Pool'е, если не ошибаюсь. Вообще, можно использовать сторонние Task Manager'ы, реализующий функционал запуска Task'а (Task Sheduler), который можно привязывать к чему угодно.)
Саханов Виталий, Я чет не сразу заметил, не просто один из разработчиков, а один из разработчиков самого S# его же не рекомендовал? — это сильно)). Это после его выхода из проекта было?) — возможно, он не объективен))
avatar
Возможно, но я нему обратился после того, как я пытался в S# разобраться. Из интернета я узнал, что разные версии могут быть не совместимы между собой. Но с другой стороны понятно. Проект бесплатный. Кол-во трейдеров в РФ небольшое и инвеститорам он не интересен 
Саханов Виталий, с совместимостью версий были проблемы, да. Но небольшие пляски с бубном в Visual Studio, используя примеры, помогали перетащить проект на новые рельсы. При этом в принципе подход верный — нефиг тащить старые костыли с собой, имея новые ноги. 

1. Судя по посту Вы собираетесь стать программистом, а не трейдером. Ну, тогда выбирайте C#. Годика через два может запустите первого робота. Смотрите блог Д.Чечета. У него 12 курсов по WL — это минимум полгода, если каждый день учится. Оно Вам надо?
2. ves2010 написал про недостатки TSlab, но необходимо принимать во внимание, что он уже несколько лет мирится с этими недостатками и заработал кубиками больше 10 млн. руб. Если у Вас небольшой депо, то указанные недостатки Вас не коснутся. TSLab кубиками — самое простое, чтобы быстро запустить своего робота. 
3. Если торгуете ММВБ, то qLua. Вот мнение по этому поводу. Смотрите посты Albus — у него роботы на Lua.
4. Amibroker. Я выбрал эту программу. Почему:
— вот мнение Ubertrader. Мне добавить нечего. Только он там пишет, что из Ами нельзя торговать — да, нельзя было в 2012, уже давно можно. Например, форумчани SenSor торгует на Ами. Смотрите его посты.
— вот ссылка на amisite.ru, где приведен пример готового робота.
— вот ссылка на Amisharp — надежный способ торговать через связку Quik-Amisharp-Amibroker.

avatar

1. Ну нет, я не собираюсь быть «программистом, а не трейдером», просто у меня как у трейдера много идей, чтобы любую из них можно было реализовать нужно быть неплохим программистом, отсюда вариант с C#. Про два года — как раз ищу короткий путь, если это будет Wealth-lab, то я уже на нём кодил когда-то стратегии — там моих знаний языка вполне достаточно было чтобы намайнить несколько стратегий. А если с торговлей этих стратегий не будет проблем, то считай момент когда готова стратегия — этоу уже момент когда можно торговать в бою, короче, по этому варианту, я уже почта готов запускать в бой робота)).
2. Не хочу привыкать к так себе платформе, чтобы потом выбирать другую. То что товарищ заработал 10 млн. никак не характеризует платформу кроме как того, что на ней можно зарабатывать)). Может он на любой другой платформе за это время заработал бы 100 млн.)))
3. qLua, MQL5 — всё это хорошо, они встроены в терминалы, заточены для торговли, но а) это не C#)), и я с этими языками ограничесн в выборе платформ и брокеров — я такое не люблю б) и там и там это решение проблемы с торговлей, но не с тестированием стратегий.
4. Опять-таки это не C#, а какой-то врунтренний язык, минусы как пункте (3).

За мнение спасибо. 

avatar
MetaStock в принципе не рассматривали? почему?
avatar
"… Руслан..", Рассматривал вроде — что-то не устроило — наверно там не C#, не помню.
avatar
o-s-a.net
Как вариант могу предложить 
Сам не так давно об этом проекте узнал и уже даже опробовал в торговле. Работает))
Из плюсов опенсорс и полная бесплатность, минусы сыровато, но развивается. Оптимизатора конечно как такового нет, но можно прикрутить. В целом что-то среднее между tslab и S#… Имхо мое мнение.
avatar

теги блога Replikant_mih

....все тэги



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