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

Uladzimir Izerski #:

Могу посоветовать только не идти по пути лжепророков

Так и делаю

С Новым Годом!!!

 важно тщательно учитывать компромиссы между точностью и эффективностью   это от ИИ

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

Ну ваще потерли и побанили. Главное стерли, как за пару баксов нидерландскую симку сделать))))
Valeriy Yastremskiy #:
Ну ваще потерли и побанили. Главное стерли, как за пару баксов нидерландскую симку сделать))))

и слава богу)

А есть какие то скрипы по мани менедженту для мт5 ?

ну типа

1) если вошел в сделку то стоп ставит автоматом

2) если получил н-ный убыток по счету то сделок больше открывать не дает итп

mytarmailS #:

А есть какие то скрипы по мани менедженту для мт5 ?

ну типа

1) если вошел в сделку то стоп ставит автоматом

2) если получил н-ный убыток по счету то сделок больше открывать не дает итп

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

В код базе такого много должно быть - поищите.

mytarmailS #:

Алексей, думаю вы знаете , но возможно таки  нет, потому  я всетаки  покажу  как работают алгоритмы которые на вход принимают  листы/вектора переменной длинны 


есть у нас лист с векторами переменной длинны , один вектор == одно наблюдение

Что делает модель, алгоритм "под капотом" когда принимает такие данные? он превращает это в матрицу

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

Так что под капотом всеравно матрица :) (акуратные данные)


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

Наш случай выглядит совсем по другому. Для простоты, пусть цены - последовательность баров ренко, каждый из которых обозначен как 1 или -1. Для каждого бара на месте с номером N вектор признаков это все предыдущие бары - вектор из 1 и -1 длиной N-1. Нет никаких априорных ограничений для длины вектора признаков. Использование для признаков заданного (нами) фиксированного количества баров - это вынужденная мера. Хочется отойти от этого ограничения и строить алгоритмы, которые могут работать с векторами произвольной длины.

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

Aleksey Nikolayev #:

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

Наш случай выглядит совсем по другому. Для простоты, пусть цены - последовательность баров ренко, каждый из которых обозначен как 1 или -1. Для каждого бара на месте с номером N вектор признаков это все предыдущие бары - вектор из 1 и -1 длиной N-1. Нет никаких априорных ограничений для длины вектора признаков. Использование для признаков заданного (нами) фиксированного количества баров - это вынужденная мера. Хочется отойти от этого ограничения и строить алгоритмы, которые могут работать с векторами произвольной длины.

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

Что именно вы хотите искать и каким способом?

Вот например есть у нас такой вот паттерн , три пика , или что угодно (правило, событие,паттерн, кластер)


между ними может случиться что угодно, мы это принимает как шум и не считаемся с этим

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

Вы эту концепцию разсматриваете или что другое?

========================================================

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

событие == лог. правило

Например : если случилось событие1 и не было события 2 то ждем события 3 итд...

Таким образом правила/события есть двух видов, события "go" при которых поиск продолжаеться и стобытия "stop" когда все отменяеться


Архитектура такая

1) правила генерируються граматикой

2) ген. алгоритм ищет и улучшает правила по фитнес. функц.

=========================

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

library(gramEvol)

Xcolnames <- c("open","high","low","close")

ruleDef <- list(
  res = grule(t(as.data.frame(multi.expr))),
  
  multi.expr = grule( c(single.expr, single.expr, single.expr,
                        single.expr, single.expr, single.expr)),
  
  single.expr = grule(list(r=c( go_rules   = as.character(expression(Expr)),
                                stop_rules = as.character(expression(Expr))))),
  
  
  Expr     = grule(expr, expr & expr ),
  
  expr     = grule(logy_op(one_var,one_var) ),
  one_var  = gsrule('X[<id>,<var_name>]'),
  
  id       = grule(i,numb,i+numb),
  numb     = gvrule(1:10),
  var_name = gvrule(Xcolnames),
  logy_op  = grule(">","<"))

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef, 1)
rbind.data.frame(eval(gr))


правила которые генерирует граматика.. 

Вот этот блок правил это как бы одно правило с кучей условий

"Х" это матрица с признаками , по ней шастает цикл "i" и выбирает что ему нравиться, очень гибкая система

                                                       go_rules
r   X[i, "low"] < X[2, "close"] & X[i + 3, "low"] > X[i + 2, "low"]
r.1                             X[i + 2, "open"] < X[i + 8, "high"]
r.2   X[2, "open"] < X[i + 3, "high"] & X[i, "high"] < X[8, "high"]
r.3                                   X[1, "low"] < X[i + 8, "low"]
r.4   X[3, "open"] > X[3, "close"] & X[i + 1, "open"] < X[2, "low"]
r.5                                 X[i, "high"] < X[i + 2, "open"]
                                                       stop_rules
r                                    X[i, "open"] > X[2, "close"]
r.1  X[i, "low"] > X[i, "high"] & X[i + 2, "high"] < X[i, "high"]
r.2                                  X[3, "high"] < X[2, "close"]
r.3    X[1, "high"] > X[2, "open"] & X[i, "high"] > X[i, "close"]
r.4                                  X[4, "open"] < X[2, "close"]
r.5 X[i, "high"] < X[1, "high"] & X[2, "low"] < X[i + 2, "close"]

В принцепе есть уже все реализовано, если есть интерес то могу скинуть



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

mytarmailS #:

Что именно вы хотите искать и каким способом?

Вот например есть у нас такой вот паттерн , три пика , или что угодно (правило, событие,паттерн, кластер)


между ними может случиться что угодно, мы это принимает как шум и не считаемся с этим

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

Вы эту концепцию разсматриваете или что другое?

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

В любом случае, для меня суть состоит в том, что при СБ вероятности 1 или -1 равны всегда 0.5 и нужно искать места, где вероятность (частота) сильно отклоняется от этого значения. В вашем паттерне это могут быть, например, склоны третьего пика.

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

Aleksey Nikolayev #:

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

Ну вот, я вам предложил алгоритм которые подходит под ваши требования


1) без привязки к времени, так как сами пишем что нам надо

2) любая логика поиска закономерностей  , так как сами пишем что нам надо

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


Те в предложеной мной концепции

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

     open high low close
[1,]    1    0   0     0
[2,]    0    1   0     0
[3,]    0    0   1     0
[4,]    0    0   0     1
[5,]    0    0   0     0
      open high low close
 [1,]    0    0   0     0
 [2,]    0    0   0     0
 [3,]    1    0   0     0
 [4,]    0    0   0     0
 [5,]    0    0   0     0
 [6,]    0    1   0     0
 [7,]    0    0   1     0
 [8,]    0    0   0     0
 [9,]    0    0   0     0
[10,]    0    0   0     1

и этого не может ниодин АМО 

а также есть "стоп" правила , этого тоже не может ниодин АМО 

Имееться ввиду АМО общего назначения с табличными данными на входе