Wednesday 16 August 2017

Hyperneat Forex Trading


MetaTrader 4 - Exemplos Usando Redes Neurais Em MetaTrader Introdução Muitos de vocês provavelmente consideraram a possibilidade de usar redes neurais em sua EA. Este assunto foi muito quente especialmente depois de 2007 Automated Trading Championship ea vitória espetacular por Better com seu sistema baseado em redes neurais. Muitos fóruns de internet foram inundados com tópicos relacionados a redes neurais e negociação de Forex. Infelizmente, a implementação MQL4 nativa de NN não é fácil. Ele requer algumas habilidades de programação eo resultado não seria muito eficiente especialmente se você gostaria de testar seu resultado final em testador em grande número de dados. Neste artigo Ill mostrar-lhe como você pode usar o livremente disponível (sob LGPL), renomado Fast Artificial Neural Network Library (FANN) em seu código MQL4, evitando certos obstáculos e limitações. Além disso, eu assumo que o leitor está familiarizado com Redes Neurais Artificiais (ann) e terminologia relacionada com este assunto tão mal se concentrar em aspectos práticos de utilização de implementação particular de ann em linguagem MQL4. Recursos do FANN Para entender completamente as possibilidades de implementação do FANN, é necessário familiarizar-se com a documentação e as funções mais utilizadas. O uso típico de FANN é criar uma rede feedforward simples, treiná-lo com alguns dados e executar. A rede criada e treinada pode então ser salva em arquivo e restaurada posteriormente para uso posterior. Para criar um ann um tem que usar a função fanncreatestandard (). Vamos ver a sua sintaxe: Onde numlayers representa o número total de camadas, incluindo a entrada ea camada de saída. O lNnum e argumentos a seguir representa o número de neurônios em cada camada começando com a camada de entrada e terminando com a camada de saída. Para criar uma rede com uma camada oculta com 5 neurônios, 10 entradas e 1 saída um teria que chamá-lo como segue: Uma vez que o ann é criado a próxima operação seria treiná-lo com alguns dados de entrada e saída. O método de treinamento mais simples é o treinamento incremental que pode ser alcançado pela seguinte função: Esta função leva o ponteiro para a estrutura fann retornada anteriormente por fanncreatestandard () e tanto o vetor de dados de entrada quanto o vetor de dados de saída. Os vetores de entrada e saída são de matriz de tipo fanntype. Esse tipo é, na verdade, um tipo duplo ou flutuante, dependendo da maneira como o FANN é compilado. Nesta implementação os vetores de entrada e saída serão matrizes de duplo. Uma vez que o ann é treinado o próximo recurso desejado seria executar essa rede. A função implementada é definida como segue: Esta função leva o ponteiro para struct fann representando a rede previamente criada e um vetor de entrada do tipo definido (matriz dupla). O valor retornado é uma matriz de vetor de saída. Este fato é importante como para uma rede utput nós allways obter uma matriz de elementos com o valor de saída em vez do valor de saída em si. Infelizmente, a maioria das funções FANN usam um ponteiro para uma estrutura fann que representa o ann que não pode ser tratada diretamente pelo MQL4 que não suporta estruturas como tipos de dados. Para evitar essa limitação temos que envolver isso de alguma forma e ocultar de MQL4. O método mais fácil é criar uma matriz de ponteiros struct fann segurando os valores apropriados e referenciá-los com um índice representado por uma variável int. Desta forma, podemos substituir o tipo não suportado de variável com um suportado e criar uma biblioteca wrapper que pode ser facilmente integrado com o código MQL4. Envolvendo o FANN em torno Como para o meu melhor conhecimento MQL4 não suporta funções com argumentos variáveis ​​lista por isso temos de lidar com isso também. Por outro lado, se a função C (do comprimento dos argumentos variáveis) for chamada com muitos argumentos, nada de errado acontece, então podemos assumir um número máximo fixo de argumentos na função MQL4 passada para a biblioteca C. A função wrapper resultante seria semelhante à seguinte: Mudamos o fann principal com f2M (que significa FANN TO MQL), usado número estático de argumentos (4 camadas) eo valor de retorno é agora um índice para matriz interna de anns segurando a estrutura Fann requeridos pelo FANN para operar. Desta forma, podemos facilmente chamar essa função de dentro do código MQL. O mesmo vale para: Por último, mas não menos importante é o fato de que você deve destruir o seu an uma vez criado pela chamada para: Para liberar alças anéis você deve destruir as redes em ordem inversa do que foram criados criados. Como alternativa, você pode usar: No entanto Im bastante certo alguns de vocês podem preferir salvar sua rede treinada para uso posterior com: Claro que a rede salva pode mais tarde ser carregado (ou melhor recriado) com: Uma vez que conhecemos as funções básicas que poderíamos tentar Use isso em nossa EA, mas primeiro precisamos instalar o pacote Fann2MQL. Instalando Fann2MQL Para facilitar o uso deste pacote eu tenho criar o instalador msi que contém todo o código-fonte mais bibliotecas pré-compiladas e arquivo de cabeçalho Fann2MQL. mqh que declara todas as funções Fann2MQL. O procedimento de instalação é bastante simples. Primeiro você é informado que Fann2MQL está sob licença GPL: Instalação de Fann2MQL, etapa 1 Em seguida, escolha a pasta para instalar o pacote. Você pode usar o programa padrão FilesFann2MQL ou instalar diretamente em seu diretório Meta Traderexperts. O mais tarde irá colocar todos os arquivos diretamente em seus lugares caso contrário você terá que copiá-los manualmente. Instalação do Fann2MQL, passo 2 O instalador coloca arquivos nas seguintes pastas: Se você optar por instalar na pasta Fann2MQL dedicada, copie o conteúdo de suas subpastas de inclusão e bibliotecas no diretório apropriado do Meta Trader. O instalador instala também a biblioteca FANN na pasta de bibliotecas do sistema (Windowssystem32 na maioria dos casos). A pasta src contém todo o código-fonte do Fann2MQL. Você pode ler o código fonte que é uma documentação final se você precisar de mais informações sobre os internos. Você também pode melhorar o código e adicionar recursos adicionais, se quiser. Encorajo-vos a enviar-me os seus patches se implementarem algo interessante. Usando redes neurais em sua EA Uma vez que o Fann2MQL está instalado, você pode começar a escrever seu próprio EA ou indicador. Theres abundância de possível utilização de NN. Você pode usá-los para prever futuros movimentos de preços, mas a qualidade de tais previsões e a possibilidade de aproveitá-la é duvidosa. Você pode tentar escrever sua própria estratégia usando técnicas de aprendizado de reforço, digamos um Q-Learning ou algo semelhante. Você pode tentar usar NN como um filtro de sinal para sua EA heurística ou combinar todas essas técnicas, além de tudo o que você realmente deseja. Youre limitado por sua imaginação somente. Aqui eu vou mostrar um exemplo de usar NN como um filtro simples para sinais gerados pelo MACD. Por favor, não considerá-lo como EA valioso, mas como um exemplo de aplicação de Fann2MQL. Durante a explicação da maneira como o exemplo EA: NeuroMACD. mq4 funciona Ill mostrar-lhe como o Fann2MQL pode ser utilizado eficazmente no MQL. A primeira coisa para cada EA é a declaração de variáveis ​​globais, define e inclui seção. Aqui está o começo do NeuroMACD contendo essas coisas: O comando include diz para carregar o arquivo de cabeçalho Fann2MQL. mqh contendo a declaração de todas as funções do Fann2MQL. Depois disso, todas as funções do pacote Fann2MQL estão disponíveis para uso no script. A constante ANNPATH define o caminho para armazenar e carregar arquivos com redes FANN treinadas. Você precisa criar essa pasta, por exemplo, C: ANN. A constante NAME contém o nome deste EA, que é usado mais tarde para carregar e salvar arquivos de rede. Os parâmetros de entrada são bastante óbvios e aqueles que não são explicados mais tarde, bem como variáveis ​​globais. O ponto de entrada de cada EA é a sua função init (): Primeiro, verifica se o EA é aplicado ao período de tempo correto. A variável AnnInputs contém o número de entradas de rede neural. Como bem usar 3 conjuntos de diferentes argumentos que queremos que seja divisível por 3. AnnPath é calculado para refletir o EA NAME e MagicNumber. Que é calculado a partir do SlowMA. FastMA e SignalMA argumentos de entrada que são mais tarde usados ​​para sinalização do indicador MACD. Uma vez que conhece o AnnPath, a EA tenta carregar redes neurais usando a função annload () que descreverei abaixo. Metade das redes carregadas destina-se a filtrar a posição longa ea outra metade é para curtas. A variável AnnsLoaded é usada para indicar o fato de que todas as redes foram inicializadas corretamente. Como você provavelmente notou este exemplo EA está tentando carregar várias redes. Duvido que seja realmente necessário nesta aplicação, no entanto, queria mostrar-lhe todo o potencial do Fann2MQL, que está a processar várias redes ao mesmo tempo e pode processá-las em paralelo, tirando partido de vários núcleos ou CPUs. Para torná-lo possível Fann2MQL está aproveitando a tecnologia Intel Threading Building Blocks. A função f2Mparallelinit () é usada para inicializar essa interface. Como você pode ver se o f2Mcreatefromfile () falha, o que é indicado pelo valor de retorno negativo, a rede é criada com a função f2Mcreatestandard () com argumentos que indicam que a rede criada deve ter 4 camadas (Incluindo entrada e saída), entradas AnnInput, neurônios AnnInput na primeira camada oculta, AnnInput / 21 neurônios na camada escondida 2 e 1 neurônio na camada de saída. F2Msetactfunctionhidden () é usado para definir a função de ativação de camadas ocultas para SIGMOIDSYMMETRICSTEPWISE (consulte a documentação FANN de fannactivationfuncenum) eo mesmo vale para a camada de saída. Então há a chamada para f2mrandomizeweights () que é usada para inicializar pesos de conexão de neurônio dentro da rede. Aqui eu usei a escala de lt-0.4 0.4gt mas você pode usar qualquer outro dependendo de sua aplicação. Neste ponto, você provavelmente já notou a função debug () eu usei um par de vezes. É um dos métodos mais simples para alterar o nível detalhado do EA. Juntamente com ele eo parâmetro de entrada DebugLevel você pode ajustar a maneira que seu código está produzindo a saída de depuração. Se o primeiro argumento da função debug (), o nível de depuração é maior do que DebugLevel a função não produz qualquer saída. Se seu menor de igual a seqüência de texto é impresso. Se o nível de depuração é 0, a string ERROR: é anexada ao início. Desta forma, você pode dividir depuração produzido pelo seu código para vários níveis. Os mais importantes são provavelmente erros para que eles sejam atribuídos ao nível 0. Eles serão impressos a menos que você baixe seu DebugLevel para abaixo de 0 (que não é aconselhável). No nível 1, algumas informações importantes serão impressas, como confirmação de carregamento ou criação bem-sucedida da rede. No nível 2 ou superior, a importância da informação impressa está diminuindo gradualmente. Antes da explicação detalhada da função start (), que é bastante demorada, preciso mostrar algumas funções mais para preparar a entrada de rede e executar as redes reais: A função annprepareinput () é usada para preparar o nome de entrada para as redes (Assim o nome). A finalidade dele é completamente direta, contudo este é o ponto que eu devo o lembrar que os dados de entrada têm que ser corretamente normalizados. Não há normalização sofisticada neste caso, eu simplesmente usei o MACD principais e valores de sinal que nunca excedem o intervalo desejado nos dados contabilizados. No exemplo real você provavelmente deve prestar mais atenção a esta questão. Como você provavelmente pode suspeitar de escolher os argumentos de entrada adequada para entrada de rede, codificando-o, decompor e normalizar é um dos fatores mais importantes no processamento de rede neural. Como eu mencionei antes, o Fann2MQL tem a capacidade de estender a funcionalidade normal do MetaTrader, que é paralelo multithreaded processamento de redes neurais. O argumento global Parallel controla esse comportamento. A função runanns () executa todas as redes inicializadas e obtém as saídas delas e armazena na matriz AnnOutput. A função annsrunparallel é responsável pela manipulação do job no modo multithread. Ele chama o f2mrunparallel () que toma como primeiro argumento o número de redes a processar, o segundo argumento é uma matriz contendo identificadores para todas as redes que você deseja executar fornecendo o vetor de entrada como um terceiro argumento. Todas as redes têm de ser executadas nos mesmos dados de entrada. A obtenção da saída da rede é feita por várias chamadas para f2mgetoutput (). Agora vamos ver a função start (): Ill descrevê-lo brevemente como é bastante bem comentado. O tradeallowed () verifica se é permitido o comércio. Basicamente ele verifica a variável AnnsLoaded indicando que todos os anns foram inicializados corretamente, então verifica o período de tempo adequado período mínimo saldo da conta e no final só permite negociar apenas no primeiro tick de uma nova barra. Próxima função dois que são usados ​​para preparar a entrada de rede e executar o processamento de rede foram descritos apenas algumas linhas acima. Em seguida, calculamos e colocamos em variáveis ​​para processamento posterior os valores MACD de sinal e linha principal para a última barra de acúmulo e a anterior. A barra atual é omitida, uma vez que ainda não está sendo construída e provavelmente será redesenhada. O SellSignal e BuySignal são calculados de acordo com o sinal de MACD e crossover de linha principal. Ambos os sinais são utilizados para o processamento de posição longa e curta que são simétricos assim Ill descrever apenas o caso para longs. A variável LongTicket contém o número do ticket da posição atualmente aberta. Se for igual a -1 nenhuma posição é aberta então se o BuySignal é definido que pode indicar boa oportunidade para abrir a posição longa. Se a variável NeuroFilter não é definida a posição longa é aberta e que é o caso sem a filtragem da rede neural de sinais - a ordem é enviada para comprar. Neste ponto, a variável LongInput destina-se a lembrar o InputVector preparado por annprepareinput () para uso posterior. Se a variável LongTicekt contiver o número de bilhete válido, o EA verificará se ele ainda está aberto ou foi fechado pelo StopLoss ou pelo TakeProfit. Se a ordem não for fechada, nada acontece, no entanto, se a ordem for fechada, o vetor de saída de trem, que tem apenas um otput, é calculado para manter o valor -1 se a ordem foi fechada com perda ou 1 se a ordem foi fechada com lucro . Esse valor é então passado para a função anntrain () e todas as redes responsáveis ​​pela manipulação da posição longa são treinadas com ele. Como o vetor de entrada é usada a variável LongInput, que está mantendo o InputVector no momento da abertura da posição. Desta forma, a rede é ensinada que sinal está trazendo lucros e qual não é. Depois de ter uma rede treinada comutação do NeuroFilter para true transforma a filtragem de rede. O annwiselong () está usando a rede neural sábia calculada como uma média de valores retornados por todas as redes destinadas a lidar com a posição longa. O parâmetro Delta é usado como um valor de limiar indicando que o sinal filtrado é válido ou não. Como muitos outros valores que foi obtido através do processo de otimização. Agora, uma vez que sabemos como funciona Ill mostrar-lhe como ele pode ser usado. O par de teste é, naturalmente, EURUSD. Eu usei os dados da Alpari. Convertido para o tempo M5. Eu usei o período de 2007.12.31 a 2009.01.01 para treinamento / otimização e 2009.01.01-2009.03.22 para fins de teste. Na primeira corrida eu tentei obter os valores mais rentáveis ​​para StopLoss, TakeProfit, SlowMA, FastMA e SignalMA argumento, que eu então codificado em NeuroMACD. mq4 arquivo. O NeuroFIlter foi desligado, bem como SaveAnn. O AnnsNumber foi definido como 0 para evitar o processamento neural. Eu usei o algoritmo genético para o processo de otimização. Uma vez que os valores foram obtidos o relatório resultante parecia o seguinte: Relatório sobre dados de treinamento após a otimização de parâmetros básicos. Como você pode ver, eu executei este EA na mini conta com o tamanho do lote de 0,01 eo saldo inicial de 200. No entanto, você pode ajustar esses parâmetros de acordo com suas configurações de conta ou preferências. Neste ponto, temos negócios suficientes e lucrativos para que possamos ativar o SaveAnn e definir o AnnsNumber para 30. Depois de feito isso, eu executar o testador mais uma vez. O resultado foi exatamente o mesmo com o exceto pelo fato de que o processo foi muito mais lento (como resultado do processamento neural) ea pasta C: ANN foi preenchida com as redes treinadas como mostrado na imagem abaixo. Certifique-se de que a pasta C: ANN existia antes desta execução A pasta C: ANN. Uma vez que temos redes treinadas seu tempo para testar como ele se comporta. Primeiro, experimente os dados de treinamento. Altere o NeuroFilter para true e SaveAnn para false e inicie o testador. O resultado que obtive é mostrado abaixo. Note que pode variar ligeiramente para o seu caso, pois há alguma aleatoriedade dentro de redes em pesos de conexão de neurônios fornecidos no processo de inicialização de rede (neste exemplo eu usei chamada explícita para f2Mrandomizeweights () dentro de annload ()). Resultado obtido em dados de treinamento com filtragem neural de sinal ativada. O lucro líquido é pouco maior (20,03 versus 16,92), mas o fator de lucro é muito maior (1,25 versus 1,1). O número de negócios é muito menor (83 vs 1188) eo número médio de perdas consecutivas é reduzido de 7 para 2. No entanto, ele só mostra que a filtragem de sinal neural está funcionando, mas não diz nada sobre como ele opera em dados que não foram usados ​​para Durante o treinamento. O resultado obtido a partir do período de teste (2009.01.01 - 2009.30.28) é mostrado abaixo: Resultado obtido a partir dos dados de teste com filtragem neural ativada. O número de operações realizadas é bastante baixo e é difícil dizer a qualidade desta estratégia, mas eu não ia mostrar-lhe como escrever a melhor EA rentável, mas para explicar como você poderia usar redes neurais em seu código MQL4. O efeito real da utilização de redes neurais neste caso só pode ser visto quando comparados os resultados da EA nos dados do teste com o NeuroFilter ligado e desligado. Abaixo está o resultado obtido a partir do período de dados de teste sem filtragem de sinal neural: Resultados de dados de teste sem filtragem neural. A diferença é óbvia. Como você pode ver a filtragem de sinal neural virou a EA perdedor em um lucrativo Conclusão Espero que você tenha aprendido a partir deste artigo como usar redes neurais em MetaTrader. Com a ajuda de Fann2MQL simples, livre e opensource você pode facilmente adicionar a camada de rede neural em praticamente qualquer Expert Advisor ou começar a escrever o seu próprio que é total ou parcialmente baseado em redes neurais. A capacidade única de multithreading pode acelerar o processamento muitas vezes, dependendo do número de núcleos do processador, especialmente ao otimizar determinados parâmetros. Em um caso, encurtou a otimização do meu processamento de EA baseado em Aprendizagem de Reforço de aproximadamente 4 dias para apenas 28 horas em uma CPU Intel de 4 núcleos. Durante a escrita deste artigo, decidi colocar Fann2MQL em seu próprio site: fann2mql. wordpress /. Você pode encontrar lá a versão a mais atrasada de Fann2MQL e possivelmente todas as versões futuras assim como a documentação de todas as funções. Eu prometo manter este software sob licença GPL para todos os lançamentos, então se você me enviar quaisquer comentários, solicitações de recurso ou patches que eu vou encontrar interessante certifique-se de encontrá-lo próximos lançamentos. Observe que este artigo mostra apenas o uso muito básico de Fann2MQL. Como este pacote não é muito mais do que o FANN, você pode usar todas as ferramentas projetadas para gerenciar redes FANN, como: E há muito mais sobre FANN na página da Biblioteca de Redes Neurais Artificiais Rápidas: leenissen. dk/fann/ Post Scriptum Depois de escrever este artigo Eu encontrei um erro insignificante em NeuroMACD. mq4. A função OrderClose () para posição curta foi alimentada com o número do ticket de posição longa. Resultou em uma estratégia distorcida que era mais provável segurar shorts e longs próximos: Na versão correta do certificado eu reparei este erro e removi a estratégia de OrderClose () em tudo. Isso não alterou o quadro geral da influência da filtragem neural na EA, mas a forma da curva de equilíbrio foi bastante diferente. Você pode encontrar ambas as versões deste EA anexado a este article. MetaTrader Expert Advisor Rede neural é um dos buzzwords mais recentes na negociação. Parece legal e sofisticado. Não muitas pessoas parecem entender o que são redes neurais. Neurônios no mundo real Nossos cérebros são fenomenalmente complicados. O que surpreende a maioria das pessoas, no entanto, é que o cérebro é mais ou menos uma enorme caixa de circuitos. Os neurônios são células que atuam como circuitos com fios elétricos, chamados axônios, que se esgotam e se conectam através do corpo humano. Cada movimento, percepção ou ação que você faz é a soma de todos os axônios que atiram impulsos elétricos. Mudança ocorre sempre que a freqüência de impulsos elétricos enviados a partir do neurônio varia. Mais impulsos causam uma reação, uma redução provoca outra. As redes neurais tentam emular processos do cérebro humano organizando informações em neurônios. Ao contrário das células neuronais reais, um neurônio de rede só existe na máquina. É um peso da máquina que contém informações sobre o que está sob estudo. Uma rede neural para um sistema de negociação pode decidir estudar indicadores comuns como uma média móvel, o oscilador RSI e estocástica. O valor da média móvel para a barra atual conta como seu próprio neurônio. O RSI é diferente, assim que começa a ser um neurônio separado. Se eu tiver dez indicadores na minha caixa de ferramentas, então eu tenho 10 neurônios na minha rede. Computadores tradicionalmente resolver problemas lineares, simples. Se você quiser saber o resultado de operações matemáticas como a raiz do cubo de 355, os computadores são perfeitos para a tarefa. Eles calculam rapidamente uma resposta precisa. Como nos cérebros humanos, as redes neurais formam sinapses com outros neurônios. Quando treinados, grupos de neurônios podem aprender a reconhecer padrões. É essa propriedade que torna as redes neurais tão úteis. Isso nos permite criar programas que seriam impossíveis com a computação tradicional. Criar um programa de software para reconhecer um rosto, por exemplo, seria extremamente difícil. É muito mais fácil treinar uma rede para reconhecer um rosto, mostrando repetidamente as faces da rede. O cérebro é um tema fascinante por direito próprio. Como um aparte, minha esposa e eu estamos fazendo um curso de pesquisa em neurociência através de uma série de vídeo dos Grandes Cursos. Se você tem algum interesse em tudo no assunto, eu recomendo altamente compreensão do cérebro por Jeanette Norden. Abrange em detalhes como os neurônios se conectam à anatomia em todo o cérebro e todo o corpo. Neural Networks e Forex Trading redes neurais entrar em jogo quando a resposta não é tão precisa. Furar com este tema de blogs de negociação forex, não há resposta certa para o que torna o sistema de comércio perfeito. Um investidor de varejo típico pode dizer que o melhor sistema de negociação é o que faz mais dinheiro. Outro pode dizer que o melhor sistema de negociação é aquele com o maior índice de Sharpe. Muitos querem algo no meio. O melhor problema do sistema de negociação é ambíguo, o que o torna um candidato ideal para atacar com redes neurais. O designer descreve conjuntos de regras que, na opinião dos comerciantes, formam uma maneira numérica de medir o melhor sistema. Os cérebros humanos hospedam aproximadamente 100 bilhões de neurônios. Apesar dos melhores esforços de muitos de nossos clientes, eu ainda tenho que encontrar alguém com 100 bilhões de indicadores de mercado à sua disposição. Uma maneira de ampliar o efeito dos neurônios em nossa caixa de ferramentas é criar camadas ocultas. Uma rede é composta de múltiplas camadas, cada uma composta por múltiplos neurônios. Cada neurônio é conectado a cada neurônio na próxima camada. Cada conexão carrega então seu próprio valor ponderado original. Um neurônio transmitirá seu valor multiplicando o valor do neurônio e pelo peso da conexão de saída. O neurônio no final da conexão de saída irá somar todas as suas conexões de entrada e propagar esse resultado para a próxima camada através de todas as suas conexões de saída. Imagens tornam a idéia muito mais intuitiva. A Figura 1 contém um pequeno exemplo. Os 2 e 3 à esquerda são as entradas na rede. Essas entradas são multiplicadas pelo peso da conexão com a próxima camada. O 2 é multiplicado por 0,5 dando-nos 1 e 3 por 2 dando-nos 6. A segunda camada contém um nó que resume os resultados da camada anterior, dando-nos 7. O próximo passo seria multiplicar 7 pelos pesos em As conexões de saída e passá-lo para a camada seguinte. Figura 1: Um exemplo de uma rede neural propagando resultados para a frente. O pequeno exemplo acima pode ser repetido e encadeado em conjunto para formar uma rede maior. Abaixo, na Figura 2, temos um exemplo de uma rede maior. A rede exemplo tem 3 entradas que estão conectadas a uma camada oculta. A camada oculta é então conectada a uma única saída. As camadas ocultas são para facilitar o treinamento. Quanto mais complexo o problema, mais camadas e nós precisam. Figura 2: Um exemplo de uma rede neural maior. A rede aprende atualizando os pesos de suas muitas conexões. Existem muitos algoritmos de software que são usados ​​para realizar o aprendizado em redes neurais. Eles se dividem em duas categorias: aprendizagem supervisionada e aprendizagem não supervisionada. A aprendizagem supervisionada é realizada com o usuário informando a rede se suas previsões estão corretas ou não. A rede então calcula seu erro e usa um dos algoritmos para corrigir o erro. Um exemplo disso é a propagação reversa, que calcula o erro de uma previsão de redes. A rede usa um algoritmo rápido para atualizar cada um dos pesos de conexão com esse erro. A propagação reversa é uma das estratégias de treinamento mais comuns. Aprendizagem não supervisionada utiliza algum tipo de aptidão ou algoritmo de pontuação em que a rede vai marcar-se com e tentar melhorar em cada tentativa subseqüente. Um exemplo de treinamento não supervisionado é o algoritmo genético. Este algoritmo cria uma população de redes neurais e usa um algoritmo de pontuação projetado pelo usuário para classificar a população. Depois disso, é a sobrevivência do mais apto. As redes mais bem classificadas conseguem ficar e se reproduzir e a classificação inferior é descartada. As redes se reproduzem misturando e combinando pesos de conexão. As redes neurais podem auxiliar substancialmente os operadores de sistemas em seu projeto de algoritmo explorando bilhões de combinações entre uma caixa de ferramentas relativamente pequena de indicadores. Isso difere da otimização padrão, que envolve a conexão de números em vários indicadores à procura de qualquer combinação retorna mais dinheiro. O fato de que as redes podem considerar múltiplas medidas (equilíbrio, Sharpe Ratio, etc) para determinar o melhor sistema de comércio ajuda a reduzir a probabilidade de que enfatiza demais uma determinada medida. Um bom exemplo disso é o saldo da conta. Se um sistema pesa o dar e receber entre o retorno líquido e o retorno ajustado ao risco, ele começa a se afastar do número crunching para descobrir os melhores números para usar e cabeça para aprendizagem real e reconhecimento de padrões. As redes neurais estão se provando muito úteis em uma ampla gama de aplicações, desde o reconhecimento facial às previsões do mercado cambial. Eles se destacam onde existem padrões que são difíceis de reconhecer. Essa habilidade torna as redes inestimáveis ​​na resolução de problemas difíceis envolvendo várias variáveis. O cão antigo com novos truques heres meu teste para o passado 12hrs mt4i / users / getting ajuste: for 4digits Forex cinco pares: UE GU UC UJ AU 16 fechou comércio lucro total 91.66 HiLo Self Optimizing TD. mq4 (53.5 KB) - magicNumber 1,2,3,4,5 - maxsimultaneousTermos de 10 para 2 - StopLoss de 200 a 20 - TakeProfit de 200 a 20 - useTrailingStop true - TrailingStop de 30 para 3 Total de barras usadas E as barras totais são aproximadamente 2000 quando começou o teste. Varia. Ive visto comércios institucionais vai 10 dígitos. Concedido, estes eram negócios de 3-4 bilhão de dólares. Hoje a EA se apresentou muito mal. Apenas testando E / U aqui. Existe de qualquer maneira para reduzir o uso de memória. Duas instâncias da EA come quase 2 GB então eu acho que para 10 pares eu precisaria de mais de 8 GB de RAM.

No comments:

Post a Comment