Encontrar um conjunto de indicadores para alimentar as entradas da rede neural. Discussão. Uma ferramenta para avaliar os resultados.
O problema é próximo ao seu. A abordagem é diferente.
Sou ainda menos geneticista do que engenheiro, mas entendo isso de forma aproximada.
Deixe-me fazer-lhe algumas perguntas, a função objetivo de maximizar o placar não é a melhor opção. Se entendi corretamente pelo exemplo acima - você vai procurar um conjunto de sistemas, no seu caso - 9, bem, num relance otimizando os lucros de parada + mais fantasia total pelo menos um sistema (aqui usamos um indicador) tem pelo menos 2-300 variantes possíveis. Não vamos colocar essas variantes dentro do quadro, digamos CCI ou RSI cairão fora de vista. Então, temos um indicador mágico para o momento atual. Que se mova(20) -mov(10) > < 0. Como estimar ou pelo menos estimar quanto tempo a situação irá durar .
Tenho um perseptron autoescrito (em java) com um número arbitrário de camadas e neurônios em cada camada eu o treino com um algoritmo genético da biblioteca JGAP (http://jgap.sourceforge.net/).
Como você faz o treinamento? Por favor, descreva o algoritmo de treinamento.
Se bem me lembro - JGap, é apenas uma biblioteca de algoritmos genéticos e nada mais, nada mais a ver com NS. Talvez a questão seja como o genoma é formado e a correção da seleção da função de aptidão.
Há muitas armadilhas no treinamento de uma rede com Ga, que você dificilmente será capaz de resolver... No mínimo, a pergunta "Quanto tempo a rede funcionará, bem como em treinamento?" não me parece possível, quando se trata de treinamento com Ga.
Recomendo ir a uma solução padrão de previsão de problemas com o ns-i.
Como você conduz o treinamento? Por favor, descreva o algoritmo de treinamento.
Se bem me lembro - JGap é apenas uma biblioteca de algoritmos genéticos e nada mais, não tem nada a ver com NS. Talvez a questão seja como o genoma é formado e a correção da função da aptidão.
JGap é uma biblioteca que implementa um algoritmo genético. para mim é uma caixa preta que precisa receber uma função alvo que depende de um vetor de um determinado comprimento. o algoritmo genético desta biblioteca seleciona valores deste vetor de forma que a função alvo seja máxima. a minha função alvo sai lucros do histórico passa por um emulador comercial que reflete sinais de uma rede neural. o vetor cujos valores o algoritmo genético seleciona, determina os pesos das redes neurais.
O problema é próximo ao seu. A abordagem é diferente.
Sou menos geneticista do que engenheiro, mas entendo a essência do assunto.
Deixe-me fazer-lhe algumas perguntas, a função alvo maximizando a pontuação não é a melhor opção. Se entendi corretamente pelo exemplo acima - você vai procurar um conjunto de sistemas, no seu caso - 9, bem, num relance, otimizando lucros de parada + mais fantasia total pelo menos um sistema (aqui usamos um indicador) tem pelo menos 2-300 variantes possíveis. Não vamos colocar essas variantes dentro do quadro, digamos CCI ou RSI cairão fora de vista. Então, temos um indicador mágico para o momento atual. Que se mova(20) -mov(10) > < 0. Como estimar ou pelo menos estimar quanto tempo a situação benigna irá durar .
Infelizmente, não tenho recursos computacionais suficientes para procurar os indicadores ideais (rede 9-10-1 em 10 fios, 200 gerações, tamanho populacional 200 de 1-08-09 a 1-10-09 aprendido durante uma hora, embora o número de pesos de neurônio (comprimento vetorial que o algoritmo genético capta) = 181)
Eu preciso de um conjunto de indicadores que reflitam a situação do mercado. os indicadores devem ser simples, de preferência o MT4 padrão (questão de implementação e possíveis erros) há apenas 30 deles. nenhum indicador de metas deve dar informações para onde o mercado vai. eu preciso deles para obter o máximo de informações possíveis das flutuações de preços.
Eu gosto disto aqui... Penso que como e o que escrever, formular e mais compreensão aparece. graças ao fórum e a você ivandurak . :)
JGap é uma biblioteca que implementa um algoritmo genético. minha função alvo é uma caixa preta que precisa receber uma função alvo que depende de um vetor de um determinado comprimento. o algoritmo genético desta biblioteca se encaixa nos valores deste vetor para que a função alvo seja máxima. minha função alvo gera lucro com a história passa por um emulador comercial que processa sinais da rede neural. o vetor cujos valores o algoritmo genético se encaixa, define os pesos dos neurônios da rede neural.
É exatamente isso que quero dizer...
Como você forma um vetor que depois passa para JGap, é apenas um vetor de valores W ou são codificados valores W.
Qual é a f-função alvo. Posso dar um exemplo - se tomarmos como alvo a função F E[i](t) = D[i](t) - Y[i](t), onde E é um erro, D é um valor esperado na saída, Y é um valor obtido ao alimentar a amostra de treinamento X, i é norma de neurônio, t é número de época. Se tomarmos E[i](t) = Sign(D[i](t) - Y[i](t))*(D[i](t) - Y[i](t))^2 em uma série de tarefas, o resultado é muito melhor. Digamos, se formarmos uma série que reflita os atrativos dos sistemas dinâmicos clássicos (Lorenz, Henon, Rössler,...), podemos até mesmo treinar a rede para aproximar tais dados, não profundamente mas ainda assim.
Eu não tentei :) porque não acho que vai funcionar :)
Com um projeto como este, você pode conseguir um eviti quase vertical sem deslizamento. Você vai abordar a questão da retreinamento no neurônio?
E pode não haver qualquer reciclagem ... Se o autor grafa o erro na amostra de teste, você pode dizer imediatamente o que acontece com a reciclagem.
E o supertreinamento pode não acontecer ... Se o autor citar como um gráfico de erro em uma amostra de teste, você pode dizer num relance o que acontece com o excesso de treinamento.
Você não deveria estar usando os braços ondulantes. Ou melhor, você não deve utilizar apenas médias móveis. Tente experimentar um conjunto de diferentes tipos de indicadores, de preferência o algoritmo de cada indicador deve ser radicalmente diferente dos outros. Então, você obterá mais informações para a rede.
Mais um ponto.
Você está usando um sistema de comércio reverso baseado em sinais NN. Isto é exatamente o mesmo que o especialista em média móvel padrão. Não há melhor nem pior.
Procure uma maneira de determinar o tamanho SL e TP com a ajuda da NN, e formas de acompanhar as posições abertas. Também é possível abrir ao acaso.
StatBars escreveu :>>
No treinamento da rede com ha muitas armadilhas, que dificilmente podem ser resolvidas... No mínimo, resolver a questão "Por quanto tempo a rede funcionará, assim como em treinamento?" não me parece possível, quando se treina com Ga, de forma alguma.
Recomendo ir para uma solução padrão de previsão de problemas de n-ey.
GA é apenas uma ferramenta de otimização (chave de fenda para a máquina). Com diferenças mínimas você pode usá-lo ou qualquer outro algoritmo de otimização (chave de fenda).
Olá
Sempre tive interesse em aprender sobre NS, mas assim que começo a ler alguma literatura sobre o assunto minha cabeça começa a ferver e eventualmente não consigo nem mesmo entender o que é NS
você poderia dar um exemplo simples (por assim dizer, nos dedos) para explicar o que é
Obrigado
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Saudações a todos os participantes e visitantes do fórum.
Quero oferecer a todos os interessados para discutir e buscar um conjunto de indicadores mais adequados para alimentar as entradas da rede neural.
A rentabilidade do neurônio em meu programa pode ser usada como uma ferramenta de estimativa, eu também posso apresentar o MQL4 Expert Advisor com um neurônio treinado. Dentro de limites razoáveis, é claro.Eu tenho perseptron autoescrito (em java) com número arbitrário de camadas e neurônios em cada camada eu o treino com algoritmo genético da biblioteca JGAP (http://jgap.sourceforge.net/).
O número de neurônios na primeira camada é igual ao número de insumos e na segunda camada - arbitrariamente, na terceira camada 1 neurônio. O neurônio produz sinais comerciais (saída do neurônio >0,5 - compra, saída do neurônio<-0,5 - venda). Os sinais são processados por um testador comercial auto-escrito que, baseado no sinal do neurônio, inverte a posição (ou entra no mercado, se nenhuma posição for aberta). A função alvo do algoritmo genético é o lucro resultante. Tal abordagem, em minha opinião, nos permite minimizar todos os erros possíveis e trazer o treinamento o mais próximo possível da negociação real. Exporto a rede treinada para a MQL4 Expert Advisor e a testei no testador de estratégia da MT4. Eu formo as entradas para a rede neural no indicador MT4 e as descarrego em um arquivo. O indicador e o Expert Advisor são formados pelo programa e são escritos nos arquivos (menos confusão e menos erros).Para mim, as redes de 4 camadas não dão mais lucro (geralmente menos) do que as de 3 camadas, mas levam mais tempo para treinar.
Treinei uma rede 8-10-1 por 4 dias em um Core2 Quadro 2.3. 10 fios paralelos com diferentes populações iniciais competindo para ver "quem tem mais lucro". 4 dias passaram cerca de 4000 gerações com 200 cromossomos em uma população. O lucro máximo foi obtido nas primeiras 2000 gerações, além disso, o lucro não aumentou. O maior aumento de lucro foi nas primeiras 100 gerações.
Eu verifiquei os resultados desta rede no testador de estratégia MT4. Descobri que a rede quase nunca alcança o limiar +-0,5 e o sinal comercial não é acionado. O motivo não é claro, ou seja, eu verifiquei a exatidão da exportação para MQL4 (com os mesmos valores de entradas em Java e MQL4 a rede dá os mesmos valores, talvez todo o fluxo de entrada devesse ter sido submetido, e não alguns valores aleatórios). Baixei o limiar para 0,4 e parece funcionar... Depois descobri que o Expert Advisor não pode reverter uma posição de uma só vez. Meu consultor especializado fechará a barra e o preço tem tempo para se mover antes da próxima barra. No período de aprendizagem (estou aprendendo em 1-08-09 a 1-10-09) o lucro na MT4 foi menor do que no meu testador, no período de testes na MT4 (1-10-09 a 1-11-09), a rede foi rentável. Olhei para os pontos de entradas não rentáveis e fiquei com a impressão de que os dados que entram na rede neural trazem informações insuficientes...
Eu insero rede neural: (k=100)
Entendo como funcionam os indicadores, mas não os entendo o suficiente e o mercado para escolher um número mínimo de indicadores por mim mesmo...Procurei no fórum e encontrei (o autor do post do qual tirei a idéia, infelizmente, não me lembro):
estudado em 10 fios, 200 gerações, tamanho populacional 200 para o período 1-08-09 a 1-10-09 (meu testador de java dá os resultados):rede 9-10-1 : lucro 10521
9-20-1 líquido : lucro 10.434
9-30-1 rede : lucro 10361
9-50-1 rede : lucro 10059
o resultado é bom, mas parecia ser melhor com a versão anterior... terei que colocá-lo com as entradas anteriores (não salvei os resultados do último treinamento)
São necessários multiplicadores adicionais para ajustar os valores na faixa de -1 a +1
Depois de ler o que escrevi, comecei a pensar em um possível erro na exportação da rede neural treinada para o Expert Advisor - ela deve ser testada novamente.
P.S. Agora estou escrevendo uma rede neural recorrente de estrutura arbitrária (como entendo, a rede neural recorrente leva em conta não apenas o valor, mas também o ângulo de inclinação).