Делаем торговую систему на Python для МТ. - страница 10

 
Yuriy Asaulenko:

Я не занимаюсь оптимизацией и всяческим подбором-перебором параметров. Другая методология, но и среда нужна типа MatLab, R, SciLab и пр. Питон подходит не хуже.

Мне также не нужны 10^6 баров. За все - про все хватает 6, максимум 9 мес на минутах. Сейчас тест 3 мес -2.5 м, правда и система пока несложная.

Самое долгое - это обучение ML, но здесь лучше Питона ничего не придумаешь, и здесь он только как язык сценариев. Скажем, отклик нейросети 5 слоев, около 60 нейронов - 3-5 мс.

Пока реальных подтверждений страшилкам не вижу.

Не, я не в коем случае не пытаюсь пужать или даже сгущать краски, сам факт того что вы сами пишите всю аналитическую инфраструктуру это уже - супер! 

Вы всё правильно делаете, я просто мысли в слух выражаю, по поводу того с чем сам сталкивался и спотыкался, если не угодно я не буду мешаться под ногами))

 
pantural:

Не, я не в коем случае не пытаюсь пужать или даже сгущать краски, сам факт того что вы сами пишите всю аналитическую инфраструктуру это уже - супер! 

Вы всё правильно делаете, я просто мысли в слух выражаю, по поводу того с чем сам сталкивался и спотыкался, если не угодно я не буду мешаться под ногами))

Да, нормально общаемся. Разные мнения - это нормально. Оппоненты всегда хорошо.)

 
Yuriy Asaulenko:

Да, нормально общаемся. Разные мнения - это нормально. Оппоненты всегда хорошо.)

Ок. Ну что тогда можно ещё сказать после ознакомления с https://c.mql5.com/3/236/Public.zip ...

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

Как минимум нужно сделать четкое разделение на что то подобное "интерфейсов" модулей датафидов, их(датафидов) аналитики\прогнозирования , исполнения и аналитики результатов торговли, в идеале эти модули должны быть независимыми

Абстрагируясь от частностей, в main должны быть как минимум четыре комплексных объекта, данных, моделей этих данных, имплементации(исполнения) моделей на рынок и объект эстимации этой деятельности.

В простейшем случае фидом будет просто массив свечек, единственная тонкость работы с таким фидом чтобы была надёжная защита модулей моделей\исполнения\эстимации от подглядывания в будущее, простейшей моделью может быть любой индикатор, например RSI, стохастик, или нейросетевой индикатор, как либо смодулированный или в чистом виде. Вырожденная система исполнения(стратегий) это интерпретация прогнозов в торговый сигнал и его холостое\реальное исполнение, например при пересечении каких то уровней от модуля прогноза и тд. ну а эстимация -  "тестирование", по сути тестер это просто холостой прогон по всему ряду датафида, технически правильней работать с текущим состоянием рынка, модулям моделей\исполнения\эстимации как в реальности, но так будет существенно медленнее, чем если сразу выдать сигналы на весь ряд а затем прогнать их отдельно в тестере, но так есть большая опасность подсмотреть будущее и получить не реалистичные результаты.


PS: Сейчас на меня кинутся все гуру форекса, но нужно сказать, в алготрейдинге  стоплосы и трейлингстопы - вредная технология, они только для ручной, эпизодической торговли, в случае когда открыл позицию на фарт и поехал на пикник, а когда ИИ непрерывно смотрит за рынком, то действовать в зависимости от СВОЕЙ локальной просадки нет никакого смысла, нет зависимости будущего движения рынка от этого совсем и решения ИИ не должны на этом основании приниматься.

 
pantural:

Ок. Ну что тогда можно ещё сказать после ознакомления с https://c.mql5.com/3/236/Public.zip ...

Вы напрасно накинулись на Public. Это всего-лишь простой шаблон стратегий с заложенной туда простейшей стратегией на 2-х МА, трейлинг-стопом и тестером. В нем должен быть по возможности простой код, в котором каждый желающий сможет разобраться, и ничего лишнего. Кроме того, в нем есть возможность поэкспериментировать с индикаторными стратегиями. И, если кому в голову придет заняться моделированием стратегий на Питон, то этот шаблон можно изменять или развивать по своему усмотрению.

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

 
pantural:

PS Кстати а почему вы думаете что ваш тестер работает верно? Тестер штука коварная....

pantural:

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

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

Что такое тестер - это всего лишь цикл, который должен сообщать стратегии номер свечи (или номер чего-то там еще, тика, скажем) с которой тестеру предстоит работать. Кроме того, тестер собирает данные о состоянии стратегии и как-то их систематизирует в архиве для последующей обработки пользователем. Все. Чего бояться-то, в чем здесь коварство? Даже если тестер оч постарается, то он ничего не сможет сделать.)

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

Пока мы используем в стратегии только Open или только Close, и при условии, что и в реале будет использовано только это и ничего более, нам ничего не угрожает (если нет явных ошибок, разумеется). Но как только при тестировании мы попытаемся использовать OHLCV, у нас появляется масса возможностей заглянуть в будущее. Во первых, у HL нет временных меток, и, во вторых, цена внутри свечи может вести себя как ей заблагорассудится, и какие-то предположения о поведении цены могут привести только к искажению теста.

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

ЗЫ Преполагаю, что сейчас о тестировании на тиках заговорят.) Я не использую тики при тестировании, и считаю, что анализ тиков аналогичен попыткам вычислить траекторию и параметры движения самолета измеряя вибрации его фюзеляжа и флуктуации траектории.

 
А мне пришлось делать свой тестер, там происходит не подбор параметров, хотя и это затрагивает, а создание стратегии в виде определения условий входа/выхода, расчёта TP/SL, получаемая стратегия не является "чёрным ящиком". К вопросу "заглядывания в будущее" подошёл очень основательно, это один из самых важных вопросов, тестер находит в данных информацию о будущем при её наличии.
 
Yuriy Asaulenko:

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

Что такое тестер - это всего лишь цикл, который должен сообщать стратегии номер свечи (или номер чего-то там еще, тика, скажем) с которой тестеру предстоит работать. Кроме того, тестер собирает данные о состоянии стратегии и как-то их систематизирует в архиве для последующей обработки пользователем. Все. Чего бояться-то, в чем здесь коварство? Даже если тестер оч постарается, то он ничего не сможет сделать.)

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

Пока мы используем в стратегии только Open или только Close, и при условии, что и в реале будет использовано только это и ничего более, нам ничего не угрожает (если нет явных ошибок, разумеется). Но как только при тестировании мы попытаемся использовать OHLCV, у нас появляется масса возможностей заглянуть в будущее. Во первых, у HL нет временных меток, и, во вторых, цена внутри свечи может вести себя как ей заблагорассудится, и какие-то предположения о поведении цены могут привести только к искажению теста.

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

ЗЫ Преполагаю, что сейчас о тестировании на тиках заговорят.) Я не использую тики при тестировании, и считаю, что анализ тиков аналогичен попыткам вычислить траекторию и параметры движения самолета измеряя вибрации его фюзеляжа и флуктуации траектории.

Со многим согласен, тестер нужен свой, прозрачный и шустрый, сам алгоритм в простом случае(когда только маркеты по бест(бид,саск)) это около 10 строк кода, но даже и в нём можно пульнуть себе в ногу. Ну например если использовать "мгновенное исполнение", то есть вычислять сделку в момент сигнала, так происходит когда человек взял из свечек к примеру один клос и потом взял от этого ряда какие нибуть  разницы машек и потом на их переломе опять по клосу(бида или аска) открыл\закрыл сделку в момент возникновения сигнала, эта ошибка даст чуть более позитивный результат тестирования чем реал, она не будет очевидна. С другой стороны если брать следующую свечу для сделки по сигналу предыдущей то результат будет существенно негативнее реала, классически сигнал считают по опенам, а сделку считают по клосам той же свечи, но это тоже не совсем гуд, практика показывает что лучше сигналы по опенам, а сделки отрабатывать по среднему (H+L+C)/3, хотя некоторые миксуют более мудрённо.

На счет тиков кстати всё вполне чинно и благородно если их упаковать в "тикосвечи", то есть структуры свечей  содержащий тики которые прошли между опеном и клосом, индикатор считать можно по свечкам, а исполняться по тикам внутри свечки, хотя ИМХО смысла не так уж и много, результаты будут достаточно близкие.

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

 
pantural:

Со многим согласен, тестер нужен свой, прозрачный и шустрый, сам алгоритм в простом случае(когда только маркеты по бест(бид,саск)) это около 10 строк кода, но даже и в нём можно пульнуть себе в ногу. Ну например если использовать "мгновенное исполнение", то есть вычислять сделку в момент сигнала, так происходит когда человек взял из свечек к примеру один клос и потом взял от этого ряда какие нибуть  разницы машек и потом на их переломе опять по клосу(бида или аска) открыл\закрыл сделку в момент возникновения сигнала, эта ошибка даст чуть более позитивный результат тестирования чем реал, она не будет очевидна. С другой стороны если брать следующую свечу для сделки по сигналу предыдущей то результат будет существенно негативнее реала, классически сигнал считают по опенам, а сделку считают по клосам той же свечи, но это тоже не совсем гуд, практика показывает что лучше сигналы по опенам, а сделки отрабатывать по среднему (H+L+C)/3, хотя некоторые миксуют более мудрённо.

На счет тиков кстати всё вполне чинно и благородно если их упаковать в "тикосвечи", то есть структуры свечей  содержащий тики которые прошли между опеном и клосом, индикатор считать можно по свечкам, а исполняться по тикам внутри свечки, хотя ИМХО смысла не так уж и много, результаты будут достаточно близкие.

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

А Вы знаете, я даже как то влюбилась в Вас. Как четко Вы написали то, чего делать не нужно. А многие ведь. Этого не понимают!!! Не удивительно, что Вас заблокировали. Ах, как странно
 

Придумал индикатор, назвал Stochastic Oscillator.)  В общем и есть глубокая модернизация классического Stochastic Oscillator, однако, не смотря на общие гены, у потомка оч. мало общего с классическим Stochastic Oscillator. Математика совершенно другая, но внешняя схожесть налицо.

Пока индикатор реализован только на Python. Его назначение - определение момента входа в сделку и как часть механизма ее сопровождения. Из рисунка уже можно видеть, что делает он это хорошо и вовремя.

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

Подумываю, а не переложить-ли индикатор на MQL, и не выставить-ли его в Маркет.

 

Тем, кто читает тему От теории к практике  уже известно, что моя система и система А_К2 строятся примерно по одной идеологии - работа в канале. С той-лишь разницей, что моя построена год назад. Я уже писал ранее, что сейчас эта стратегия с небольшими изменениями реализована и протестирована на Python, но запускать ее в работу нет никакого смысла - ничего нового не ожидается.

Т.к. идей особенно не было, занимался разработкой всяческих индикаторов - один из них постом выше. Штук десять наклепал. В результате сформировалась мысль скрестить ужа с ежом: совместить работу в канале с работой по тренду в одну непротиворечивую систему. В целом пока не пробовал, но часть элементов уже отработал. Вроде все сходится, но вопросы есть. Что получится на практике сказать трудно, может и ничего. Будем посмотреть.

Причина обращения: