The main advantage of OpenNN is its high performance. It is developed in C++ for better memory management and higher processing speed, and implements CPU parallelization by means of OpenMP and GPU acceleration with CUDA.
Estou olhando para opções que podem ser implementadas diretamente no MT5.
Estou interessado na variante que utiliza ALGLIB (https://www.mql5.com/ru/articles/2279), mas da descrição da rede resulta que se trata de uma rede sequencial sem feedbacks. E a desvantagem é que ele só pode ser treinado por um fio de processador (que processa o Expert Advisor com uma rede neural).
Eu acho que não seria muito difícil adicionar 2 camadas sequenciais ocultas à rede neural a partir do artigo https://www.mql5.com/ru/articles/497 e depois treiná-la por força bruta total ou genética no testador. Mas neste caso você pode usar muito mais tópicos computacionais (núcleos do seu processador, na rede e na nuvem). Estou a perceber bem?
Como adicionar instruções manuais para respostas corretas (compra e venda de locais) no treinamento de uma rede desse tipo?
Talvez já exista uma biblioteca para uma rede sequencial de várias camadas em algum lugar?
E também, eu não entendo muito bem a utilidade de usar camadas internas, para fins de negociação forex/exchange. Faz sentido adicioná-los? Porquê?
O MLP não é bom para previsão de mercado, veja os vídeos acima, ele precisa de RNN, ou seja, rede com memória.
N+1 совместно с МФТИ продолжает знакомить читателя с наиболее яркими аспектами современных исследований в области искусственного интеллекта. В прошлый раз мы писали об общих принципах машинного обучения и конкретно о методе обратного распространения ошибки для обучения нейросетей. Сегодня наш собеседник — Валентин Малых, младший научный...
Uma experiência para treinar uma rede neural (NS) para atravessar dois MAs falhou. Foi treinado para reconhecer apenas o crossover ascendente.
Para a experiência, o NS - 3,3,3,1 foi selecionado e testado para treinamento e reconhecimento de padrões criados artificialmente. No entanto, depois de aprender a reconhecer os MA, não foi reconhecido um único crossover. A razão - o NS precisa de mais imagens de contraste, e não se importa com todas as diferenças de 0,01-0,1 entre os inputs.
Para uma dada estrutura de NS é bastante possível obter um reconhecimento confiável com uma diferença de sinal não inferior a 0,2-0,3.
MLP você o tempo todo e vai dar tal bagunça, eu já experimentei com eles, não há como pegar as camadas - depois reciclar, depois reciclar não camadas suficientes, depois a quantidade deles
Renat Akhtyamov: Não consigo ver resultados satisfatórios mesmo em demonstração!
Ninguém vai passar meses a desenvolver uma estratégia e depois vai gabar-se dela numa conta de demonstração. Tais coisas são negociadas no real, e o histórico de transações é escondido de todos. Até li no fórum como as pessoas negociam propositadamente em dois corretores, revezando-se perdendo em um e compensando as perdas no outro, de modo que até o corretor não sabe quais negociações foram feitas usando a estratégia e quais foram falsas.
Há resultados. Às vezes, boas combinações de preditores e o modelo trazem lucro por um par de meses, mais frequentemente - menos. Mas eles são substituídos por outros.
Minha opinião pessoal - neurônica, floresta, regressões - tudo isso é muito fraco para forex. A razão é que o comportamento dos preços está sempre a mudar, as regras que hoje são lucrativas podem não ter sido lucrativas há uma semana atrás. E a abordagem padrão - tomar indicadores e preço por um par de meses e treinar a neurônica - significa que ela deve encontrar as mesmas regras de comportamento de preço para todos os dois meses. E não existem tais regras e ninguém sabe o que vai encontrar, mas estará errado 99% do tempo. Às vezes o modelo pode ter sorte e cair nesse 1%, mas está muito longe do graal e esses Expert Advisors geralmente negociam bem até a primeira parada de perda e depois podem ser jogados fora.
Estou estudando modelos de reconhecimento de padrões que observam o comportamento dos preços após padrões similares na história e uso essas estatísticas para negociação. Ainda não vi um pacote em R que faça tudo o que eu preciso, tenho um modelo montado em peças de outros, mais as minhas próprias motos. O mais próximo que eu vi de uma descrição de modelo está em outro fio, eu aconselharia começar a construir seu graal com isso (citação abaixo). Novos problemas surgirão no processo, você terá que pensar e experimentar sobre eles.
Procura no indicador do meu vizinho mais próximo na base de código. O método é bastante simples. Definir o comprimento do padrão atual, encontrar padrões similares da história (por exemplo, usar correlação como distância entre padrões), prever o comportamento futuro dos preços a partir de padrões passados, ponderando suas previsões individuais. Isto é essencialmente o mesmo que clustering, ou RBF, ou SVM, ou GRNN. Tudo depende de como você mede a distância do padrão atual para padrões passados similares. Leia sobre o GRNN e Bayes. Aí a teoria da previsão é descrita em termos de distribuições estatísticas. Há muito escrito sobre o GRNN e os métodos de previsão acima mencionados e tudo se resume a uma simples fórmula:
prediction y = SUM y[k]*exp(-d[k]/2s^2) / SUM exp(-d[k]/2s^2)
onde y[k] é o k-ésimo padrão passado, d[k] é a distância do k-ésimo padrão até o padrão atual. Se as distâncias têm distribuição gaussiana então d[k] = (x - x[k])^2. Para uma distribuição arbitrária (super gaussiana), d[k] = |x - x[k]|^p, onde você escolhe p dependendo se você quer dar mais peso aos vizinhos mais próximos (p grande), ou dar a todos os vizinhos quase o mesmo peso (p pequeno) como no socialismo. Com p=0, temos o socialismo total.
Depois de conhecer os vizinhos mais próximos e o GRNN, surge a próxima questão óbvia. Como medir a distância entre o padrão atual e os padrões passados se você levar em conta as distorções do eixo temporal (ou seja, padrões passados podem parecer padrões atuais, mas esticados ou comprimidos no tempo). É aqui que reside o problema.
Se não estou enganado, o RNN será extremamente difícil de implementar na MT5, e bons resultados requerem ou a compra ou o desenvolvimento interno com custos de mão-de-obra enormes.
Se você enviar para o MLP além de informações sobre preço e indicadores na barra atual, todas as mesmas informações para 10-30 barras anteriores, será uma espécie de memória. Alguns dos neurónios irão processar o estado actual e outros irão processar o desenvolvimento da situação no passado mais próximo.
Quando negociamos manualmente, olhamos também para as últimas barras, e não apenas para o estado actual dos indicadores.
É claro que a quantidade de cálculos vai aumentar, por isso estava interessado na possibilidade de transferir cálculos de um núcleo para todos os núcleos do processador, rede ou nuvem. Como é que isto pode ser feito? Pelo menos para o MLP.
É claro que a quantidade de computação vai aumentar, e é por isso que eu estava interessado na possibilidade de transferir computação de um núcleo para todos os núcleos do processador, da rede ou da nuvem. Como é que isto pode ser feito? Pelo menos para o MLP.
Na verdade, eles dizem que há muita neurônica na internet e em C++. Mas eu não os procurei.
http://www.opennn.net/
https://www.neuraldesigner.com/
Estou a começar a explorar as redes neurais.
Estou olhando para opções que podem ser implementadas diretamente no MT5.
Estou interessado na variante que utiliza ALGLIB (https://www.mql5.com/ru/articles/2279), mas da descrição da rede resulta que se trata de uma rede sequencial sem feedbacks. E a desvantagem é que ele só pode ser treinado por um fio de processador (que processa o Expert Advisor com uma rede neural).
Eu acho que não seria muito difícil adicionar 2 camadas sequenciais ocultas à rede neural a partir do artigo https://www.mql5.com/ru/articles/497 e depois treiná-la por força bruta total ou genética no testador. Mas neste caso você pode usar muito mais tópicos computacionais (núcleos do seu processador, na rede e na nuvem). Estou a perceber bem?
Como adicionar instruções manuais para respostas corretas (compra e venda de locais) no treinamento de uma rede desse tipo?
Talvez já exista uma biblioteca para uma rede sequencial de várias camadas em algum lugar?
E também, eu não entendo muito bem a utilidade de usar camadas internas, para fins de negociação forex/exchange. Faz sentido adicioná-los? Porquê?
O MLP não é bom para previsão de mercado, veja os vídeos acima, ele precisa de RNN, ou seja, rede com memória.
https://nplus1.ru/material/2016/11/04/recurrent-networks
E mesmo assim não há resultados comerciais satisfatórios, mesmo na demonstração!
É uma questão de optimização, ainda não vale a pena definir todas as versões, vou testá-la quando tiver implementado tudo completamente
Uma experiência para treinar uma rede neural (NS) para atravessar dois MAs falhou. Foi treinado para reconhecer apenas o crossover ascendente.
Para a experiência, o NS - 3,3,3,1 foi selecionado e testado para treinamento e reconhecimento de padrões criados artificialmente. No entanto, depois de aprender a reconhecer os MA, não foi reconhecido um único crossover. A razão - o NS precisa de mais imagens de contraste, e não se importa com todas as diferenças de 0,01-0,1 entre os inputs.
Para uma dada estrutura de NS é bastante possível obter um reconhecimento confiável com uma diferença de sinal não inferior a 0,2-0,3.
MLP você o tempo todo e vai dar tal bagunça, eu já experimentei com eles, não há como pegar as camadas - depois reciclar, depois reciclar não camadas suficientes, depois a quantidade deles
Não consigo ver resultados satisfatórios mesmo em demonstração!
Ninguém vai passar meses a desenvolver uma estratégia e depois vai gabar-se dela numa conta de demonstração. Tais coisas são negociadas no real, e o histórico de transações é escondido de todos. Até li no fórum como as pessoas negociam propositadamente em dois corretores, revezando-se perdendo em um e compensando as perdas no outro, de modo que até o corretor não sabe quais negociações foram feitas usando a estratégia e quais foram falsas.
Há resultados. Às vezes, boas combinações de preditores e o modelo trazem lucro por um par de meses, mais frequentemente - menos. Mas eles são substituídos por outros.
Minha opinião pessoal - neurônica, floresta, regressões - tudo isso é muito fraco para forex. A razão é que o comportamento dos preços está sempre a mudar, as regras que hoje são lucrativas podem não ter sido lucrativas há uma semana atrás. E a abordagem padrão - tomar indicadores e preço por um par de meses e treinar a neurônica - significa que ela deve encontrar as mesmas regras de comportamento de preço para todos os dois meses. E não existem tais regras e ninguém sabe o que vai encontrar, mas estará errado 99% do tempo. Às vezes o modelo pode ter sorte e cair nesse 1%, mas está muito longe do graal e esses Expert Advisors geralmente negociam bem até a primeira parada de perda e depois podem ser jogados fora.
Estou estudando modelos de reconhecimento de padrões que observam o comportamento dos preços após padrões similares na história e uso essas estatísticas para negociação.
Ainda não vi um pacote em R que faça tudo o que eu preciso, tenho um modelo montado em peças de outros, mais as minhas próprias motos. O mais próximo que eu vi de uma descrição de modelo está em outro fio, eu aconselharia começar a construir seu graal com isso (citação abaixo). Novos problemas surgirão no processo, você terá que pensar e experimentar sobre eles.
Fórum sobre negociação, sistemas de negociação automatizados e testes estratégicos
Analisar as características ESTATÍSTICAS mais importantes de um padrão e escolher um método de negociação com base nele.
Vladimir, 2017.04.06 06:20
Procura no indicador do meu vizinho mais próximo na base de código. O método é bastante simples. Definir o comprimento do padrão atual, encontrar padrões similares da história (por exemplo, usar correlação como distância entre padrões), prever o comportamento futuro dos preços a partir de padrões passados, ponderando suas previsões individuais. Isto é essencialmente o mesmo que clustering, ou RBF, ou SVM, ou GRNN. Tudo depende de como você mede a distância do padrão atual para padrões passados similares. Leia sobre o GRNN e Bayes. Aí a teoria da previsão é descrita em termos de distribuições estatísticas. Há muito escrito sobre o GRNN e os métodos de previsão acima mencionados e tudo se resume a uma simples fórmula:
prediction y = SUM y[k]*exp(-d[k]/2s^2) / SUM exp(-d[k]/2s^2)
onde y[k] é o k-ésimo padrão passado, d[k] é a distância do k-ésimo padrão até o padrão atual. Se as distâncias têm distribuição gaussiana então d[k] = (x - x[k])^2. Para uma distribuição arbitrária (super gaussiana), d[k] = |x - x[k]|^p, onde você escolhe p dependendo se você quer dar mais peso aos vizinhos mais próximos (p grande), ou dar a todos os vizinhos quase o mesmo peso (p pequeno) como no socialismo. Com p=0, temos o socialismo total.
Depois de conhecer os vizinhos mais próximos e o GRNN, surge a próxima questão óbvia. Como medir a distância entre o padrão atual e os padrões passados se você levar em conta as distorções do eixo temporal (ou seja, padrões passados podem parecer padrões atuais, mas esticados ou comprimidos no tempo). É aqui que reside o problema.
alguém tentou programação genética como um método ML?
Como o Chaos Hunter?
O MLP não é adequado para previsões de mercado, veja os vídeos acima, ele precisa do RNN, ou seja, rede com memória
https://nplus1.ru/material/2016/11/04/recurrent-networks
Se não estou enganado, o RNN será extremamente difícil de implementar na MT5, e bons resultados requerem ou a compra ou o desenvolvimento interno com custos de mão-de-obra enormes.
Se você enviar para o MLP além de informações sobre preço e indicadores na barra atual, todas as mesmas informações para 10-30 barras anteriores, será uma espécie de memória. Alguns dos neurónios irão processar o estado actual e outros irão processar o desenvolvimento da situação no passado mais próximo.
Quando negociamos manualmente, olhamos também para as últimas barras, e não apenas para o estado actual dos indicadores.
É claro que a quantidade de cálculos vai aumentar, por isso estava interessado na possibilidade de transferir cálculos de um núcleo para todos os núcleos do processador, rede ou nuvem. Como é que isto pode ser feito? Pelo menos para o MLP.
alguém tentou programação genética como um método ML?
Como o Chaos Hunter?
É claro que a quantidade de computação vai aumentar, e é por isso que eu estava interessado na possibilidade de transferir computação de um núcleo para todos os núcleos do processador, da rede ou da nuvem. Como é que isto pode ser feito? Pelo menos para o MLP.
No OpenCL, não se você não for preguiçoso ))