Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 192

 
Yury Reshetov:

Весь мир с нетерпением ждал этого момента, затаив дыхание.

И вот это событие наконец-то свершилось!

Вышел релиз 12-й версии jPrediction, генерирующий код обученных тернарных классификаторов на MQL. Пользователей терминалов MetaTrader больше нет необходимости портировать коды тернарных классификторов из Java в MQL. Весь код для ЯП MQL теперь сохраняется в файлы с расширением mqh.

(Громкие аплодисменты и крики "Ура!")

Но и это ещё не всё. jPrediction 12 теперь выполняет вычисления быстрее примерно на 12% по сравнению с предыдущей версией!

(Громкие апплодисменты с одновременным подкидыванием чепчиков)

Многочисленные пользователи jPrediction могут бесплатно скачать и использовать 12 версию, загрузив её с моего сайта (ссылка в моём профиле, первое сообщение на главной странице сайта).

(Стук клавиш и движение индикаторов загрузок на мониторах)

Поздравления принимаются в устном виде, а также в письменном, можно в виде подарков и денежных переводов через WebMoney.

Стесняюсь спросить, для какой версии МКУЛЬ??? 4 или 5???
 
Mihail Marchukajtes:
Стесняюсь спросить, для какой версии МКУЛЬ??? 4 или 5???
Я проверял на 5-ке. Но там в кодах нет ООП и прочих фич, свойственных только 5-ке. Так что вроде бы совместимость с 4-кой должна быть? ИМХО конечно, поскольку на 4-ке не проверял.
 
Yury Reshetov:
Я проверял на 5-ке. Но там в кодах нет ООП и прочих фич, свойственных только 5-ке. Так что вроде бы совместимость с 4-кой должна быть? ИМХО конечно, поскольку на 4-ке не проверял.

Ну отлично, только чтос равнил код который генерирует Предикшн с кодом который был у меня написан, результат единтичен. Просто переживал вдруг у меня ошибка где, как помнишь с 1d было, проверил теперь всё сходится, результат идентичен. За сегодняшний день выборка по сигналам для покупки так плохо тренировалась, что я решил оставить вчерашную, и вроде как не прогадал, а 12 релиз с оптимизировал  с результатом лучше но и входов меньше.. всего три. Так что в целом нормально, но нужно будет завтра посмотреть более детально. Так что заватра отпишусь по конкретней.... Ну а так, за сегодня картина маслом... судите сами.....Грех жаловатся. Причём объясню ещё раз, те сигналы которые сеть определила как "Незнаю" (точки без стрелок). Мы определяем уже по факту. За сегодня это истина. Тоесть когда сеть говорит "Незнаю" подразумеваем что это истина...

 

 
Yury Reshetov:  Вышел релиз 12-й версии jPrediction...
Его пример другим наука;
Но, боже мой, какая скука
С больным сидеть и день и ночь,
Не отходя ни шагу прочь!
Какое низкое коварство
Полуживого забавлять,
Ему подушки поправлять,
Печально подносить лекарство,
Вздыхать и думать про себя:
Когда же черт возьмет тебя!)))
 
Ввиду того что сегодня как и вчера объём вырос а открытый интерес упал, тоесть сегодняшний день такойже как и вчера, решил не перетренировывать модели, а торговать по ним. Так что оценить в полной мере работу 12-го релиза пока что не могу. Но будет время, будет репорт :-)
 

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

ч

пакет partykit 

 
.
N+1: научные статьи, новости, открытия
  • nplus1.ru
Чуть больше, чем наука
 

Вышла 14-я версия jPrediction.

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

jPrediction 14 можно бесплатно скачать и использовать для задач классификации, загрузив с моего сайта (ссылка в моём профиле, самое верхнее сообщение на главной странице моего сайта).

 

Примеры(индикаторы) взяты чисто для иллюстрации я настоятельно не рекомендую пользоваться индикаторами

Давайте на миг представим такую ситуацию : есть у нас 5 предикторов и цена, нам нужно спрогнозировать движение цены с высокой вероятностью  более 70% скажем…  Мы читеры)) и заранее знаем что есть только один паттерн в этих предикторах с помощью которого можно спрогнозировать рынок с такой точностью. Это когда RSI и stochastic делают мини зигзаг вниз в области ~50


sq 

 Кстати заметьте паттерн лежит так сказать в двух плоскостях видения, цифровом (паттерн в области ~50 )  и образном (зигзаг - образ), так что при поиске паттернов есть смысл учитывать такие плоскости…

И все, больше рабочих паттернов в этих предикторах нет, все остальное просто шум, те первые три индикатора изначально шум, а в  RSI и stochastic есть всего один паттерн ,  все остальное в  RSI и stoch тоже полнейший шум…

Теперь давайте подумаем как можно искать такие паттерны в данных… Смогут ли это делать обычные МО ?  

Ответ нет,  почему?

Потому что целевая у МО нацелена на предсказание всех движений, это или зигзаг или цвет след. Свечи или направление или.. или…  все целевые заставляют МО обяснить все движения цены , а это невозможно в предикторах шума под 99%...

В догонку расскажу небольшую историю с моралью, создал я синтетическую выборку в которой было 20 предикторов, 4 предиктора взаимодействуя вместе, полностью объясняли целевую, остальные 16 предикторов просто рандомный шум, после обучения на новых данных «OOS»  модель отгадала все новые значения те показала ошибку 0%....  Мораль сей басни такова, если в данных есть предикторы способны полностью объяснить  целевую то МО и обучиться и на  OOS будет себя вести нормально… Наши же результаты говорят об обратном те в тех выборках что мы подаем в МО присутствует дай бог 5% полезной информации которая может объяснить 5%  целевой, а мы хотим все 100% понимаете утопию подхода???  Потому МО и переобучаются, мы сами заставляем их переобучаться желая предсказать все 100%

Итак возвращаемся к главному, как же искать эти рабочие паттерны? Как же находить эту «иголку» робастности в «стоге»  данных ??

Я предлагаю отказаться от МО в принципе, все что нам нужно это просто разбить каждый предиктор на маленькие кусочки из похожих ситуаций (паттернов)  и методом перебора всевозможных комбинаций сравнивая с целевой мы будем находить то что мы ищем…  Теперь поподробней, как разбивать предикторы? Чем?

Ответ прост, хотя я и не сразу допер, нужно просто тупо кластеризировать каждый предиктор, ну скажем на 30 кластеров

fd

Все разрисовывать не стал но думаю суть уже понятна, мы просто делим каждый предиктор на части те кластера, и теперь пробуя различные комбинации между кластерами мы можем найти некие паттерны которые работают, как на рисунке  типа – когда у стохастика кластер 1 и у РСИ кластер 2 то будет рост…

Теперь сама суть, как делать поиск рабочих паттернов

Это наша гипотетическая выборка,  target.label это целевая, которая допустим означает  рост/падение

dat
  cluster1 cluster2 cluster3 cluster4 cluster5 target.label
1        24        5       18       21       16            1
2         2       15       12        7       22            1
3        13       13       16       29       24            0
4        23       28       22       10        4            1
5         6       12       20       25       11            0
6        25       17       14       24       25            1
7        30       27        2        4       14            0
8        11        2       21        6        9            0
9        20       20       29       17       10            1
10        7       30       25       11       15            0
11       19        8       15        8       18            0
12        3       18        1       16       26            0
13       17        9       23       14        8            0
14        5        6        5       22       19            0
15        9       19        9       12       20            1
16       21        3        3       13       23            1
17       10       16        4       26        2            1
18       18        4       28        3        6            0
19       28       24        7       20       12            0
20        8       11       11       23        7            1
21       15       14        6       27       27            0
22       26       29       26       28       29            1
23       16        1       10        2       17            0
24        1        7       17       15       21            0
25       27       23       30        5       13            1
26       12       22       19        9       30            1
Табл. 1

Пример как искать рост

ищем такие строчки которые повторяются не менее 10 раз в всей выборке и в каждой из найденных одинаковых групок которые повторялись, количество "1" в target.label должно превышать 70% по отношению к "0"


cluster1 cluster2 cluster3 cluster4 cluster5  target.label
1        24        5       18       21       16            1
2        24        5       18       21       16            1
3        24        5       18       21       16            0
4        24        5       18       21       16            1
5        24        5       18       21       16            1
6        24        5       18       21       16            1
7        24        5       18       21       16            1
8        24        5       18       21       16            0
9        24        5       18       21       16            1
10       24        5       18       21       16            1
.....
Талб. 2

вот найденные одинаковые строчки единичек больше чем нулей...

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

Так же нужно перебирать не только всевозможные комбинации из номеров кластеров в каждом предикторе, а еще и комбинации из самих кластеров те брать только 1 и 4 кластера или 1, 3, 5 кластера итп…

Плюсы метода перед обычным МО, вернее даже не плюсы, это то чего нет в МО, а здравый смысл говорит что быть должно…

      1)Метод объясняет только ту часть целевой которую действительно может объяснить, а не старается объяснить все 100% целевой  как это делают все МО в том числе и Решетова

2)Метод глубокий, он не то что отбирает лучшие предикторы он отбирает  лучшие  ситуации внутри самих предикторов, это намного более глубокий способ анализа чем у других МО

3)За счет пунктов 1) и 2) метод автоматически сам находит такие признаки которые
отлично разделяют плоскость признаков

qe

      4) Есть некий справедливый статистический барьер,  когда мы находим группу из одинаковых ситуаций   см. Табл. 2  то их должно быть минимум 10(можно регулировать), этот минимум дает надежду что статистический результат по целевой будет достоверный , в обычных МО может быть всего две похожих ситуации которые по целевой закончились скажем падением и все! МО уже будет считать это шортовым паттерном, всего с двумя наблюдениями, понимаете жуть ситуации ?

  5) Есть некий справедливый вероятностный барьер  , когда мы находим группу из одинаковых ситуаций   см. Табл. 2 то количество(для лонга) единичек в этой группе должна быть больше на 70% чем нулей, это тоже дает надежду на то что вероятность сильная и не есть случайна.. Опять же в обычном МО такого нет там перевес в 1% единичек уже будет считаться лонговым паттерном, тоже жуть не так  ли??

6) Алгоритм работает с взаимосвязями в предикторах , это не все МО делают

7) Легко можно визуализировать или запрограмировать найденный паттерн, проще говоря можно просто понять

и интерпретировать найденную закономерность, это не все МО могут

Примеры(индикаторы) взяты чисто для иллюстрации я настоятельно не рекомендую пользоваться индикаторами

 
mytarmailS:

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

Может быть вы про паттерны говорите? Зелёный паттерн - цена падает вниз и потом вверх. Жёлтый - растёт снизу вверх. Красный: вверх->вниз. Угадал?

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