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

 
Aleksey Nikolayev #:
Обязательно надо написать градиентный бустинг на mql5, чтобы стать создателем самого корявого велосипеда.

А чем принципиально отличается бустинг на mql5 от написанного на любом другом языке? mql5 быстрый как C# и почти такой же быстрый как C++. Синтаксис мало чем отличается от этих языков. Для нужд МО очень много встроенных функций языка добавляется в последнее время. 
Штатный тестер удобен как готовая торговая среда, но всё, что касается МО и оптимизации может быть реализовано и без него, если в нём кому-то тесно.
Принципиальных ограничений нет в МТ5.
 
Andrey Dik #:

А чем принципиально отличается бустинг на mql5 от написанного на любом другом языке? mql5 быстрый как C# и почти такой же быстрый как C++. Синтаксис мало чем отличается от этих языков. Для нужд МО очень много встроенных функций языка добавляется в последнее время. 
Штатный тестер удобен как готовая торговая среда, но всё, что касается МО и оптимизации может быть реализовано и без него, если в нём кому-то тесно.
Принципиальных ограничений нет в МТ5.
Какие механизмы распараллеливания вычислений на CPU в mql5 вам известны?
 
Aleksey Nikolayev #:
Какие механизмы распараллеливания вычислений на CPU в mql5 вам известны?

OpenCL для более или менее продвинутых.

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

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

В статье покажу, как написать бинарный ГА с покрытием всех значимых цифр double числа с неограниченно малым шагом параметров на языке MQL5 (по факту ограниченно 16м знаком после запятой для double). И даже это не придел, на MQL5 можно написать расширения стандартных типов чисел.

 
Andrey Dik #:

OpenCL для более или менее продвинутых.

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

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

В статье покажу, как написать бинарный ГА с покрытием всех значимых цифр double числа с неограниченно малым шагом параметров на языке MQL5 (по факту ограниченно 16м знаком после запятой для double). И даже это не придел, на MQL5 можно написать расширения стандартных типов чисел.

Вот и я говорю - велосипед получится весьма знатной корявости.

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

Ладно, завязываю, а то буду забанен как Максим, если скажу всё что думаю о вашей демагогии.

 
Aleksey Nikolayev #:

Вот и я говорю - велосипед получится весьма знатной корявости.

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

Ладно, завязываю, а то буду забанен как Максим, если скажу всё что думаю о вашей демагогии.

Так  в чем конкретно корявость то? Если у вас проблемы с владением MQL5, то это не язык виноват, есть специальные профильные ветки для вопрошающих.

Какая моя "демогогия"? Дал вам огромный список литературы по вашей просьбе для прочтения, расширения кругозора, рассказываю и показываю конкретные реализации и стратегии поиска на MQL5. Что ещё от меня нужно, что бы мне не быть облитым помоями и не заставить вас боятся быть забаненым?

Очень удивляюсь с людей.

 

Немножко про избыточность рендом форест

берем датасет ирисов + тренируем форес + извлекаем правила из фореста + содаем датасет где каждое правило в виде признака.

получаем матрицу с правилами в колонках (около 700сот штук)

X <- iris[,-5]
target <- iris[,"Species"] 

library(inTrees)
library(RRF)

rules_dataset <- target |> 
                  RRF(x = X) |> 
                  RF2List() |> 
                  extractRules(X = X) |> 
                  sapply(\(r) eval(str2expression(r)))
ncol(rules_dataset)
[1] 698

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

remove_lin_comb <- caret::findLinearCombos(rules_dataset)$remove
clear_rules_dataset <- rules_dataset[, -remove_lin_comb]

и получаем

ncol(clear_rules_dataset)
[1] 32


Те весь датасет можно описать 32-мя правилами, а не 698


Такие дела..

форест в  698/32 = 21.8125 раз избыточней чем мог бы быть

 
mytarmailS #:

Немножко про избыточность рендом форест

берем датасет ирисов + тренируем форес + извлекаем правила из фореста + содаем датасет где каждое правило в виде признака.

получаем матрицу с правилами в колонках (около 700сот штук)

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

и получаем


Те весь датасет можно описать 32-мя правилами, а не 698


Такие дела..

форест в  698/32 = 21.8125 раз избыточней чем мог бы быть

А правила откуда взялись? Все правильно: горы информации на входе, сжимаем и получаем правила и потом их используем для предсказания, а не исходную информацию. Поэтому и называется "модель".

 
СанСаныч Фоменко #:

А правила откуда взялись? Все правильно: горы информации на входе, сжимаем и получаем правила и потом их используем для предсказания, а не исходную информацию. Поэтому и называется "модель".

читай внимательно что было написано

 
mytarmailS #:
Ты же хотел статью по правилам, или перехотел уже? Тема интересная наверное, поинтереснее минимизации тестовых функций. Или проблемы с их валидацией на оос? Или нет проблем, а просто лень писать.
 
Какой-то общий подход по отбору правил. Типа вот разбил дерево на правила, что потом.. в контексте ТС. Лучшие практики и инсайты. Было бы любопытно.

Только не случайные функции и рэндом волки, а ближе к профиту.
Причина обращения: