Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2882

 
Uladzimir Izerski #:

Só posso aconselhá-lo a não seguir o caminho dos falsos profetas.

Eu o faço.
 

Feliz Ano Novo!!!

é importante considerar cuidadosamente as compensações entre precisão e eficiência da IA

Em geral, essa me parece ser a regra máxima da vida. Não existe precisão na medição sem erro. E o erro depende do tempo de medição e da média.... por assim dizer...

 
Bem, eles o esfregaram e o baniram. O principal foi apagado: como criar um SIM holandês por alguns dólares))))
 
Valeriy Yastremskiy #:
Bem, eles o esfregaram e o baniram. O principal foi apagado: como criar um SIM holandês por alguns dólares))))

e graças a Deus).

 

Há algum script de gerenciamento de mani para o mt5?

como

1) se você entrou em uma operação, o stop é definido automaticamente.

2) se você tiver uma perda na conta, ele não permitirá que você abra mais negociações, etc.

 
mytarmailS #:

Existe algum script de gerenciamento para o mt5?

como

1) se você entrar em uma operação, o stop é definido automaticamente

2) se você tiver uma perda em sua conta, ele não permitirá que você abra mais negociações, etc.

É engraçado, ontem mesmo eu estava pensando: "E se o MO for usado não para a direção da entrada no mercado, mas para o gerenciamento, em particular, para gerenciar a transferência para o ponto de equilíbrio, definir stops e take-outs".

Deve haver muitas dessas coisas na base de código - procure por elas.

 
mytarmailS #:

Alexey, acho que você sabe, mas talvez não, então vou lhe mostrar como funcionam os algoritmos que recebem folhas/vetores de comprimento variável como entrada


Temos uma planilha com vetores de comprimento variável, um vetor == uma observação.

O que o modelo, o algoritmo "sob o capô", faz quando recebe esses dados? Ele os transforma em uma matriz.

Mas como para dados reais a matriz é enorme, o algoritmo transforma os dados em uma matriz esparsa com eficiência de memória.

Portanto, ainda é uma matriz sob o capô). (cuidado com os dados)


Todas as cestas de mercadorias são naturalmente reduzidas a vetores de tamanho fixo conhecido, igual ao número de itens na loja.

Nosso caso parece bem diferente. Para simplificar, deixe que os preços sejam uma sequência de barras de renko, cada uma rotulada como 1 ou -1. Para cada barra no local número N, o vetor de recursos é todas as barras anteriores - um vetor de 1s e -1s de comprimento N-1. Não há restrições a priori sobre o comprimento do vetor de características. O uso de um determinado (por nós) número fixo de barras para os recursos é uma medida forçada. Queremos nos afastar dessa restrição e criar algoritmos que possam lidar com vetores de comprimento arbitrário.

Considero as funções recursivas como fonte de material matemático para esses algoritmos. Elas recebem como entrada um vetor de qualquer tamanho, mas são definidas por meio de funções com um número fixo de argumentos. O exemplo mais simples é a média exponencial.

 
Aleksey Nikolayev #:

Todas as cestas de produtos são naturalmente reduzidas a vetores de tamanho pré-fixado conhecido, igual ao número de itens de todos os produtos da loja.

Nosso caso é bem diferente. Para simplificar, deixe que os preços sejam uma sequência de barras de renko, cada uma rotulada como 1 ou -1. Para cada barra no local número N, o vetor de recursos é composto por todas as barras anteriores - um vetor de 1s e -1s de comprimento N-1. Não há restrições a priori sobre o comprimento do vetor de recursos. O uso de um determinado (por nós) número fixo de barras para os recursos é uma medida forçada. Gostaríamos de nos afastar dessa restrição e criar algoritmos que possam lidar com vetores de comprimento arbitrário.

Encontrei funções recursivas como fonte de material matemático para esses algoritmos. Elas recebem como entrada um vetor de qualquer tamanho, mas são definidas por meio de funções com um número fixo de argumentos. O exemplo mais simples é a média exponencial.

O que exatamente você deseja pesquisar e de que forma?

Por exemplo, temos um padrão, três picos ou qualquer outra coisa (regra, evento, padrão, cluster).


Qualquer coisa pode acontecer entre eles, nós a consideramos como ruído e não a levamos em conta.

Tomamos um vetor/matriz com ruído como entrada e verificamos se há um padrão ou não....

Você está considerando esse conceito ou outro?

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

Eu o vejo como uma sequência de eventos que devem acontecer, e eles são descritos por regras lógicas...

evento == regra lógica.

Por exemplo: se o evento 1 aconteceu e não houve o evento 2, então esperamos pelo evento 3 etc. ....

Portanto, há dois tipos de regras/eventos, eventos "go" quando a pesquisa continua e eventos "stop" quando tudo é cancelado.


A arquitetura é a seguinte

1) as regras são geradas pela gramática

2) o algoritmo de geração pesquisa e aprimora as regras por meio de funções de adequação.

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

Aqui está um exemplo de uma gramática simples para dados multidimensionais, nesse caso, 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))


As regras que a gramática gera.

Esse bloco de regras é como uma única regra com várias condições.

"X" é uma matriz com atributos, o loop "i" caminha sobre ela e escolhe o que quiser, um sistema muito flexível.

                                                       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"]

Em princípio, tudo já está implementado; se houver interesse, posso lhe oferecer isso.



PS: não há restrição quanto ao tamanho da matriz de atributos, cada instância pode ser de qualquer tamanho, o principal aqui é que todas as regras funcionem em ordem, não há vinculação ao tempo.

 
mytarmailS #:

O que exatamente você quer procurar e de que forma?

Por exemplo, temos um padrão, três picos ou qualquer outra coisa (regra, evento, padrão, cluster).


Qualquer coisa pode acontecer entre eles, mas consideramos isso como ruído e não levamos em conta.

Portanto, tomamos um vetor/matriz com ruído como entrada e verificamos se há um padrão ou não....

Esse é um conceito que você está considerando ou outra coisa?

Meu conceito é o mais amplo possível, pois não há restrições especiais impostas, e muitas coisas se encaixam nele. Seu exemplo provavelmente também se encaixa nele. Especialmente importante é o fato de que não há um comprimento de padrão rigidamente definido.

De qualquer forma, para mim, a questão é que, no SB, a probabilidade de 1 ou -1 é sempre 0,5 e você deve procurar lugares em que a probabilidade (frequência) se desvie muito desse valor. Em seu padrão, isso poderia ser, por exemplo, as inclinações do terceiro pico.

Suponho que a regra "estamos na inclinação esquerda do terceiro pico" possa ser expressa por meio de funções recursivas. Mas eu realmente não acredito que essas funções possam ser facilmente escritas de forma explícita, portanto, você precisa de algoritmos de MO para construí-las.

 
Aleksey Nikolayev #:

Mas eu realmente não acredito que essas funções possam ser facilmente escritas de forma explícita, portanto, precisamos de algoritmos de MO para construí-las.

Bem, eu lhe propus um algoritmo que atende às suas necessidades


1) sem limite de tempo, pois nós mesmos escrevemos o que precisamos

2) qualquer lógica de busca de regularidades, pois nós mesmos escrevemos o que precisamos

3) qualquer escolha de descrição da regularidade, seja por regras de registro ou por funções , porque nós mesmos escrevemoso que precisamos.


Portanto, em meu conceito proposto.

esses padrões serão equivalentes, e os próprios padrões podem ser de qualquer complexidade.

     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

E nenhum AMO pode fazer isso.

E há regras de "parada", e nenhum AMO pode fazer isso também.

Refiro-me a uma AMO de uso geral com dados tabulares como entrada.

Razão: