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

 
Maxim Dmitrievsky:

Sim, é apenas a minha função de transformação com cos e grau aleatório, não um kernel.

RDF salvar sua própria estrutura se arquivo, então se muitas amostras ou recursos - arquivos podem ser muito grandes, não tenho certeza sobre milhões de agentes :) Mas você pode diminuir o erro de classificação e aumentar a estabilidade do modelo, aumentando o número de agentes com características diferentes

Próximo momento - na minha experiência, dados maiores != melhor precisão em novos dados. Se os prognosticadores forem maus, o resultado será o mesmo mau

Também a gdmh pode trabalhar com conjuntos de dados extremamente pequenos, e aproximá-los bons para dados futuros.

Mas... podemos aplicar um modelo simples como regressão logística + gdmh (em vez de RDF), assim o processo de aprendizagem será muito rápido, mas não sabemos sobre a precisão

Em relação à GMDH, foi exactamente isso que vos informei quando mencionaram pela primeira vez sobre a GMDH. Porque a própria GMDH atua como uma rede neural e, portanto, não há uso de RDF aqui.

 
Maxim Dmitrievsky:

Sim, há diferenças. Para tomar uma decisão com o RDF, ele deve passar por todos os nós e folhas. Portanto, se a estrutura do RDF for grande - será necessário mais tempo para cada decisão

Para este modo é melhor usar modelos extremamente rápidos (NN de aprendizagem rápida) com resposta rápida. Ou hardware melhor, incluindo GPU

Mais um problema - o RDF é sensível ao ruído nos dados, por isso, quase sempre é montado em excesso. Para reduzir este efeito do ruído, é bom incorporar a camada LDA ou PCA no algoritmo

por isso esta não é uma tarefa tão trivial como poderia parecer à primeira vista.

Você quer dizer que sua implementação atual do RDF e sua versão anterior do RDF são completamente diferentes? Esta versão do RDF utiliza a política ou outra coisa? Não tenho a certeza sobre os ficheiros ".rl". Pensei que fossem semelhantes aos ficheiros "Mtrees" da sua versão anterior.

Deixa-me ver o que está a acontecer com o treino e os testes. Eu notei que os modelos e agentes não parecem funcionar corretamente a um valor muito grande. Por exemplo, acabei de definir os agentes para 100 e os modelos para 100. Os agentes trabalharam, mas os modelos deixaram de funcionar a 50 para cada agente. Não sei por que razão.

A propósito, estou apenas testando meu algo com o RDF já que vocês já implementaram o código básico, porque já fiz milhares e milhares de combinações diferentes de otimização e testes em sua versão anterior e, portanto, tenho uma compreensão através da sua versão anterior do RDF. Caso contrário, tenho de escrever o código completo para "Monte carlo" algo usado em "ALPHA ZERO" para me integrar ao meu algo, o que pode demorar algum tempo para mim, uma vez que não sou um programador especializado.

 
Maxim Dmitrievsky:

Olá, tenta descobrir este código, para começar:

Aqui aprendemos RDF com cada 1 recurso (1 entrada) e salvamos os melhores números de recursos em uma matriz ordenada (modelos). A seguir podemos escolher os poucos melhores

Próximo tep - devemos combinar todos os melhores preditores com os outros e novamente verificar um erro, acho eu, e salvar o resultado. Nesta etapa, podemos aplicar algumas equações polinomiais

Ok, deixa-me ver agora como implementar o GMDH com este código.

Quanto mais você puder explicar o código, mais rápido eu consigo encontrar uma ponte. Na verdade, meu problema é que sou pouco fraco na sintaxe de alguns conceitos básicos de C++ como classe, objetos, arrays, etc e, portanto, levo mais tempo para entender a implementação desses conceitos, caso contrário, eu teria escrito diretamente o arquivo de classes do GMDH e o teria dado a vocês.

Seja como for, deixa-me ver.

Por favor, explique-me bem estas 3 linhas. Acho que é aqui que temos de aplicar a GMDH:

        m[i].Set(0,RDFpolicyMatrix[i][bf]); 
        m[i].Set(1,RDFpolicyMatrix[i][bf+1]);
        m[i].Set(2,RDFpolicyMatrix[i][bf+2]);

Por favor, comente estas 3 linhas

Acho que no meu código anterior cometi um pequeno erro no laço. Então eu acho que aqui é a ponte fornecida se você sabe exatamente o que você escreveu sobre RDF:))... porque eu não sei muito sobre a implementação da matriz...

 ///---Remaining values of Y starting from Y_1
  for(int i=1;i<3;i++)
  m[i]=CalculateNeuron(a);///---Calculate individual value of Y_1,Y_2,Y_3,...to feed to RDF inputs
 
 
Maxim Dmitrievsky:

isto é matriz 2d (matriz), formato de biblioteca "alglib", basta preenchê-la com número de preditor(bf) (índice 0 da matriz), a seguir (1,2) são os valores de saída... erro aqui :) precisamos definir valores com os índices "features" e "features-1".

m - nossa matriz de currsent com 1 características e 2 saídas, masa RDFpolicyMatrix contém todas as características + otputs

fixo

você pode ler sobre aqui http://www.alglib.net/dataanalysis/generalprinciples.php#header0

Ok, então há algum mal entendido...deixa-me verificar novamente o código de como ligar isto à GMDH...

Se você tiver a idéia, apenas me atualize para que eu não tenha que perder meu tempo pensando:))

Acho que o RDF e o GMDH são semelhantes e, por isso, está a tornar-se difícil a integração um com o outro...

Deixe-me pensar novamente....

 
Maxim Dmitrievsky:

Não, é fácil de integrar... mudamos apenas os vetores de entrada com gdmh, apenas algumas transformações

Na próxima etapa, vamos verificar os grupos de preditores, combinando com que outros (apenas alguns da seleção anterior)

Então, este loop pode fazer tudo pela transformação de características a que você se refere:

A seguir, esta é a função para calcular o Neuron:

A seguir, Y_Final=Y_All+Y_0;

Partimos agora as entradas em 3 peças e podemos expandi-las para qualquer número, se necessário...

Aqui as entradas são as características ou previsão e os pesos são pesos aleatórios...nós podemos pegar aqueles da função aleatória inicialmente e mais tarde aqueles serão armazenados dentro do RDF após o treinamento

 
Maxim Dmitrievsky:

tentar refazê-lo para matriz agora ))

mas... não precisamos de uma soma aqui, precisamos de preditores separados em cada passo, basta expandir nossa matriz para recursos adicionais e adicioná-los, e verificar os erros novamente

Ok, dá-me algum tempo e em breve estarei pronto.

Ok, então não há problema aqui, basta remover o sinal "+" para preditores separados e você terá preditores individuais:

/// --- Remaining values ​​of Y starting from Y_1 
  for ( int a = 1 ; a < 3 ; a ++) 
  Y_All [a]=CalculateNeuron (a); /// --- Calculate the individual value of Y_1, Y_2, Y_3, ... to feed to RDF inputs...Here feature transformation done

Mas se você tem maneiras melhores isso também é ótimo:))). Porque isso será muito lento devido a múltiplos para loops...Então uma implementação muito grosseira:))

Escrevi este código em apenas uma hora e por isso nem sequer gosto deste código:))

A matriz não entra no meu cérebro:)))))))))))))))))))))))))))))))))
 
Maxim Dmitrievsky:

hehe... que tal ordenar a matriz 2d? :)

Além disso, vou solicitar que você implemente pelo menos mais algumas variedades de preditores na versão final da EA:

1.Alguns indicadores oscilantes

2.Alguns indicadores de tendência

3.Algum indicador de volume

4.Alguns indicadores de prazos mais longos (bom filtro para sinais ruidosos)

5.Alguns preços de fechamento direto

Caso contrário, tenho de continuar a perguntar-lhe quando tenho de acrescentar algo :))))...

Se ele pode mudar instantaneamente de um sistema para outro a cada vela baseada na mudança do mercado, então será realmente ótimo!... Na verdade esse era o objetivo original que eu esperava desta versão quando você mencionou sobre spline, transformações de características e truque do kernel, etc... O truque do kernel teria ajudado a tornar o cálculo muito mais rápido mesmo em um servidor normal para grandes dados também... Então agora nós temos que confiar apenas em modelos perfeitamente treinados e transformação rápida...

A propósito, dos últimos 2 dias de testes para frente devo dizer que esta versão do RDF parece pouco mais estável e confiável em comparação com a versão anterior do RDF...quero dizer, testes para frente combinam um pouco com testes para trás...mas a versão anterior foi, na maioria das vezes, superajustada com dados de otimização

 
Maxim Dmitrievsky:

a versão anterior era apenas um conceito com ideias de base

você mesmo pode adicionar um indicador ou indicadores, em vez de fechar os preços

Não, nem um indicador...quero dizer que fico confuso quando aplico vários indicadores simultaneamente no laço da matriz do "ag1.agent".

o que devo usar no lugar de"ArraySize(ag1.agent)" quando uso um total de 100 características, mas 50 para fechar e 50 para alto

for(int i=0;i<ArraySize(ag1.agent);i++)///---here
     {   
      CopyClose(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for(int i=0;i<ArraySize(ag1.agent);i++)///---here
     {   
      CopyHigh(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }

Então, o código acima está correto para uma declaração de agente como esta abaixo?

CRLAgents *ag1=new CRLAgents("RlExp1iter",5,100,50,regularize,learn);///----Here

Bem, eu fui a primeira pessoa a comentar o seu fórum em inglês:))....desse dia eu executei pelo menos mais de 20.000 testes e otimizações diferentes em todos os meus servidores e todos os tipos de combinações de configurações e, portanto, tenho uma melhor compreensão do conceito geral...mas o meu principal problema às vezes até fico preso com um simples código....

E posso prometer-vos que mesmo que este algo possa apenas começar a convergir um pouco ao longo do tempo, então posso optimizar o código para que funcione pelo menos 2 a 3 vezes melhor do que aquilo que vão publicar :)))...tudo apenas a partir da minha experiência e observações :))).

Ou este código abaixo está correcto?

Or

for(int i=0;i<50;i++)///---here
     {   
      CopyClose(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for(int i=50;i<100;i++)///---here
     {   
      CopyHigh(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
 
Maxim Dmitrievsky:

Muito obrigado...Agora, acho que posso fazer mais indicadores:))))))))

 
Maxim Dmitrievsky:

Ou como aqui, mais simples

Sim, eu gosto disto....Isto é do meu tipo :))

O exemplo anterior é muito condicional e não pode aumentar mais preditores ....

A propósito, usei este método para simulações aleatórias de velas...mas tenho de alterar os preços de entrada e saída do comércio também para treino e por isso, fiquei confuso...

Por agora vou tentar estes métodos indicadores...e testá-lo e mais tarde vou tentar o método de simulação de velas...pois se for bem sucedido, então essa será a última versão de qualquer máquina de aprendizagem EA já criada no mercado forex:))))

Razão: