Thursday 10 August 2017

Indicadores Forex Da Rede Neural


MetaTrader 4 - Exemplos Usando Redes Neurais no MetaTrader Introdução Muitos de vocês provavelmente consideraram a possibilidade de usar redes neurais em sua EA. Este assunto foi muito quente especialmente após 2007 Automated Trading Championship e a vitória espetacular de Melhor com seu sistema baseado em redes neurais. Muitos fóruns na Internet foram inundados com tópicos relacionados a redes neurais e negociação Forex. Infelizmente, escrever a implementação nativa do MQL4 do NN não é fácil. Isso requer algumas habilidades de programação e o resultado não seria muito eficiente, especialmente se você quiser testar seu resultado final no testador em grande número de dados. Neste artigo, mostro-lhe como você pode usar a Biblioteca de Rede Neural Artificial Rápida (FPL) livremente disponível (em LGPL), em seu código MQL4, evitando certos obstáculos e limitações. Além disso, suponho que o leitor esteja familiarizado com as Redes Neurais Artificiais (ann) e a terminologia relacionada a este assunto, portanto, eu me concentrei em aspectos práticos de usar a implementação particular de ann na linguagem MQL4. Recursos de FANN Para entender completamente as possibilidades de implementação de FANN, é necessário familiarizar-se com sua documentação e as funções mais utilizadas. O uso típico do FANN é criar uma rede feedforward simples, treiná-la com alguns dados e executar. A rede criada e treinada pode então ser salva no arquivo e restaurada mais tarde para uso posterior. Para criar um ann, é necessário usar a função fanncreatestandard (). Vejamos a sua sintaxe: onde numllers representa o número total de camadas, incluindo a entrada e a camada de saída. O nnum e os seguintes argumentos representam 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 da seguinte maneira: 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 struct fann retornado anteriormente pelo fanncreatestandard () e vetor de dados de entrada e vetor de dados de saída. Os vetores de entrada e saída são de matriz de tipo de tipo de fanntype. Esse tipo é, na verdade, um tipo duplo ou flutuante, dependendo da forma 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 que implementa é definida da seguinte forma: Esta função leva o ponteiro para a estrutura fann que representa a rede criada anteriormente e um vetor de entrada do tipo definido (matriz dupla). O valor retornado é uma matriz de vetor de saída. Esse fato é importante, pois, para uma rede de utput, sempre obtemos uma matriz de elementos com o valor de saída em vez do próprio valor de saída. Infelizmente, a maioria das funções da FANN usa um ponteiro para uma estrutura fann que representa o ann que não pode ser processado diretamente pelo MQL4, que não suporta estruturas como tipos de dados. Para evitar essa limitação, devemos encerrar isso de alguma forma e ocultar do MQL4. O método mais fácil é criar uma matriz de ponteiros struct fann segurando os valores apropriados e referir-se a eles com um índice representado por uma variável int. Desta forma, podemos substituir o tipo de variável não suportado com o suportado e criar uma biblioteca de wrapper que pode ser facilmente integrada com o código MQL4. Enrolando o FANN em torno do meu melhor conhecimento, o MQL4 não suporta funções com lista de argumentos variáveis, então precisamos lidar com isso também. Por outro lado, se a função C (do comprimento dos argumentos variáveis) é 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 de invólucro resultante seria a seguinte: mudamos o fann líder com f2M (que significa FANN TO MQL), o número de argumentos estático usado (4 camadas) e o valor de retorno agora é um índice para a matriz interna de anns que contém a estrutura Dados fornecidos pela FANN para operar. Desta forma, podemos chamar facilmente essa função do código MQL. O mesmo vale para: Por último, mas não menos importante, é o fato de que você deve destruir o seu ann criado pela chamada para: Para liberar guias de ano, você deve destruir redes em ordem inversa do que foram criadas criadas. Alternativamente, você poderia usar: No entanto, tenho certeza de que alguns de vocês talvez preferem salvar sua rede treinada para uso posterior: Claro que a rede salva pode ser carregada (ou recriada) com: Uma vez que conhecemos as funções básicas, podemos tentar Use isso em nossa EA, mas primeiro precisamos instalar o pacote Fann2MQL. Instalando o Fann2MQL Para facilitar o uso deste pacote criei o instalador msi que contém todo o código-fonte mais as bibliotecas pré-compiladas e o arquivo de cabeçalho Fann2MQL. mqh que declara todas as funções do Fann2MQL. O procedimento de instalação é bastante direto. Primeiro, você está informado de que Fann2MQL está sob licença GPL: Instalação do Fann2MQL, passo 1. Em seguida, escolha a pasta para instalar o pacote. Você pode usar o Program FilesFann2MQL padrão ou instalar diretamente no seu diretório Meta Traderexperts. O mais tarde colocará todos os arquivos diretamente em seus locais, caso contrário você terá que copiá-los manualmente. Instalação do Fann2MQL, etapa 2 O instalador coloca os 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 também instala 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 desejar. Eu encorajo você a me enviar seus patches se você implementar algo interessante. Usando redes neurais no seu EA Depois que o Fann2MQL estiver instalado, você pode começar a escrever seu próprio EA ou indicador. Possui muito uso possível de NN. Você pode usá-los para prever futuros movimentos de preços, mas a qualidade de tais previsões e a possibilidade de tirar proveito real é duvidoso. Você pode tentar escrever sua própria estratégia usando técnicas de Reforço de Aprendizagem, diga um Q-Learning ou algo parecido. Você pode tentar usar o NN como um filtro de sinal para sua EA heurística ou combinar todas essas técnicas além do que você deseja. Você é limitado apenas por sua imaginação. Aqui vou mostrar um exemplo de usar o NN como um filtro simples para os sinais gerados pelo MACD. Não considere isso como uma EA valiosa, mas como um exemplo de aplicação do Fann2MQL. Durante a explicação da maneira como o exemplo EA: NeuroMACD. mq4 funciona, Ill mostra como o Fann2MQL pode ser efetivamente usado no MQL. A primeira coisa para cada EA é a declaração de variáveis ​​globais, define e inclui a seção. Aqui está o início 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, ou seja, 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 serão explicados mais tarde, bem como variáveis ​​globais. O ponto de entrada de cada EA é a função init (): Primeiro, verifica se a EA é aplicada no período de período de tempo correto. A variável AnnInputs contém o número de entradas de rede neural. Além disso, use 3 conjuntos de argumentos diferentes que queremos que ele seja divisível por 3. AnnPath é calculado para refletir o EA NAME e o MagicNumber. Que é calculado a partir do SlowMA. Os argumentos de entrada FastMA e SignalMA que posteriormente são usados ​​para a sinalização do indicador MACD. Uma vez que conhece o AnnPath, a EA tenta carregar redes neurais usando a função annload () que descrevo abaixo. A metade das redes carregadas destina-se à filtragem de posição longa e a outra metade é para calções. A variável AnnsLoaded é usada para indicar o fato de que todas as redes foram inicializadas corretamente. Como você provavelmente notou este exemplo, a EA está tentando carregar várias redes. Eu duvido que seja realmente necessário neste aplicativo, mas eu queria mostrar-lhe o potencial total do Fann2MQL, que está lidando com múltiplas redes ao mesmo tempo e pode processá-las em paralelo, aproveitando múltiplos núcleos ou CPUs. Para tornar possível Fann2MQL está aproveitando a tecnologia Intel Threading Building Blocks. A função f2Mparallelinit () é usada para inicializar essa interface. Aqui está a maneira como eu costumava inicializar redes: como você pode ver se o f2Mcreatefromfile () falhar, 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 escondida, neurônios AnnInput21 na 2ª camada oculta e 1 neurônio na camada de saída. F2Msetactfunctionhidden () é usado para configurar a função de ativação das camadas ocultas para SIGMOIDSYMMETRICSTEPWISE (consulte a documentação do Fann de fannactivationfuncenum) e o mesmo se aplica à camada de saída. Depois, há a chamada para f2mrandomizeweights () que é usado para inicializar os pesos de conexão do neurônio dentro da rede. Aqui usei o intervalo de lt-0.4 0.4gt, mas você pode usar qualquer outro dependendo da sua aplicação. Neste ponto, você provavelmente notou a função debug () que usei algumas vezes. É um dos métodos mais simples para alterar o nível detalhado de sua EA. Juntamente com ele e o parâmetro de entrada DebugLevel, você pode ajustar a forma como 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 é superior ao DebugLevel, a função não produz qualquer saída. Se for inferior a igual a cadeia de texto é impressa. Se o nível de depuração for 0, a string ERROR: é anexada ao início. Desta forma, você pode dividir o debug produzido pelo seu código em vários níveis. Os mais importantes são provavelmente erros, então eles são atribuídos ao nível 0. Eles serão impressos, a menos que você baixe seu DebugLevel para abaixo de 0 (o que não é recomendado). No nível 1, serão impressas algumas informações importantes, como a confirmação do carregamento ou criação de rede bem sucedida. 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 longa, preciso mostrar-lhe mais algumas funções destinadas a 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). O objetivo disso é bastante direto, mas esse é o ponto em que devo lembrar que os dados de entrada devem ser devidamente normalizados. Não há uma normalização sofisticada neste caso, eu simplesmente usei o MACD principal e os valores de sinal que nunca excedem o alcance 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 apropriados para entrada de rede, codificá-lo, decompor e normalizar é um dos fatores mais importantes no processamento da rede neural. Como mencionei antes, o Fann2MQL possui a capacidade de estender a funcionalidade normal do MetaTrader, que é o processamento paralelo de várias 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 por lidar com o trabalho da maneira multithread. Ele chama o f2mrunparallel () que leva como primeiro argumento o número de redes a processar, o segundo argumento é uma matriz contendo alças para todas as redes que você deseja executar, fornecendo o vetor de entrada como um terceiro argumento. Todas as redes devem ser executadas nos mesmos dados de entrada. Obter o resultado da rede é feito por várias chamadas para f2mgetoutput (). Agora, vejamos a função start (): descreverei-a brevemente, pois é bem comentado. O comercializado () verifica se é permitido o comércio. Basicamente, ele verifica a variável AnnsLoaded indicando que todos os anns foram inicializados corretamente e, em seguida, verifica o equilíbrio da conta mínima do período do período de tempo apropriado e, ao mesmo tempo, permite trocar somente no primeiro tic de uma nova barra. As duas funções seguintes que são usadas para preparar a entrada de rede e executar o processamento da rede foram descritas apenas algumas linhas acima. Em seguida, calculamos e colocamos em variáveis ​​para posterior processamento dos valores de MACD do sinal e da linha principal para a última barra de acumulação e a anterior. A barra atual é omitida, pois não é acumulada ainda e provavelmente será redrapped. O SellSignal e o BuySignal são calculados de acordo com o sinal MACD e crossover da linha principal. Ambos os sinais são usados ​​para um processamento de posição longo e curto, que são simétricos, então eu descrevo apenas o caso para longos. A variável LongTicket manté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 estiver configurado, isso pode indicar boa oportunidade para abrir a posição longa. Se a variável NeuroFilter não estiver configurada, a posição longa é aberta e esse é o caso sem a rede neural de filtragem de sinais - a ordem é enviada para comprar. Neste ponto, a variável LongInput deve lembrar o InputVector preparado por annprepareinput () para uso posterior. Se a variável LongTicekt conter o número do ticket válido, o EA verifica se esta é ainda aberta ou foi fechada pelo StopLoss ou 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 de -1 se a ordem foi fechada com perda ou 1 se a ordem foi fechada com lucro . Esse valor é passado para a função anntrain () e todas as redes responsáveis ​​pela manipulação da posição longa são treinadas com ela. Como o vetor de entrada, a variável LongInput é usada, que mantém o InputVector no momento da abertura da posição. Desta forma, a rede ensina qual sinal traz lucros e qual não é. Depois de ter uma rede treinada, mudar o NeuroFilter para true transforma a filtragem de rede. O annwiselong () está usando a rede neural 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 limiar que indica que o sinal filtrado é válido ou não. Como muitos outros valores obtidos através do processo de otimização. Agora, uma vez que sabemos como funciona, eu mostro como ele pode ser usado. O par de teste é, naturalmente, EURUSD. Eu usei os dados da Alpari. Convertido no prazo M5. Utilizei o período de 2007.12.31 a 2009.01.01 para a optimização da formação e 2009.01.01-2009.03.22 para fins de teste. Na primeira execução, tentei obter os valores mais rentáveis ​​para o argumento StopLoss, TakeProfit, SlowMA, FastMA e SignalMA, que eu codifiquei no arquivo NeuroMACD. mq4. O NeuroFIlter foi desligado, bem como SaveAnn. AnnsNumber foi definido como 0 para evitar o processamento neural. Usei o algoritmo genético para o processo de otimização. Uma vez que os valores foram obtidos, o relatório resultante teve o seguinte aspecto: Relatório sobre os dados de treinamento após a otimização básica dos parâmetros. Como você pode ver, executei esta EA na mini conta com o tamanho do Lote de 0,01 e o saldo inicial de 200. No entanto, você pode ajustar esses parâmetros de acordo com as configurações ou preferências da sua conta. Neste ponto, temos bastante lucrativo e perdemos negociações para que possamos ativar o SaveAnn e configurar o AnnsNumber para 30. Uma vez feito, então eu executei o testador mais uma vez. O resultado foi exatamente o mesmo com a exceção do fato de que o processo foi muito mais lento (como resultado do processamento neural) e a pasta C: ANN foi preenchida com as redes treinadas como mostrado na imagem abaixo. Certifique-se de que a pasta C: ANN existia antes dessa execução A pasta C: ANN. Uma vez que temos redes treinadas, é hora de testar como ela se comporta. Primeiro, experimente os dados de treinamento. Mude o NeuroFilter para true e SaveAnn para false e inicie o testador. O resultado obtido é mostrado abaixo. Observe que ele pode variar ligeiramente para você, pois há alguma aleatoriedade dentro de redes em pesos de conexão de neurônio fornecidos no processo de inicialização de rede (neste exemplo eu usei uma 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, isso 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 treino. O resultado que obtive do período de teste (2009.01.01 - 2009.30.28) é mostrado abaixo: Resultado obtido a partir de dados de teste com filtragem neural ativada. O número de transações realizadas é bastante baixo e é difícil dizer a qualidade desta estratégia, mas eu não vou mostrar-lhe como escrever a melhor EA rentável, mas para explicar como você poderia usar redes neurais no seu código MQL4. O efeito real do uso de redes neurais neste caso só pode ser visto quando comparados os resultados da EA em dados de teste com NeuroFilter ativados e desativados. Abaixo está o resultado obtido a partir do período de dados de teste sem filtragem de sinal neural: Resultados a partir de dados de teste sem filtragem neural. A diferença é bastante óbvia. Como você pode ver, o filtro de sinal neural transformou a EA perdedora em uma conclusão rentável. Espero que você tenha aprendido com este artigo como usar redes neurais no MetaTrader. Com a ajuda do pacote simples, gratuito e de código aberto Fann2MQL, você pode adicionar facilmente a camada de rede neural a praticamente qualquer Consultor Especialista ou começar a escrever sua própria, que seja total ou parcialmente baseada em redes neurais. O recurso multithreading exclusivo pode acelerar seu processamento muitas vezes, dependendo do número de núcleos da CPU, especialmente ao otimizar determinados parâmetros. Em um caso, reduziu a otimização do meu processamento de EA baseada em reforço baseado em aproximadamente 4 dias para apenas 28 horas em uma CPU Intel de 4 núcleos. Durante a redação deste artigo, decidi colocar o Fann2MQL em seu próprio site: fann2mql. wordpress. Você pode encontrar a versão mais recente do Fann2MQL e, possivelmente, todas as versões futuras, bem como a documentação de todas as funções. Eu prometo manter este software sob a licença GPL para todos os lançamentos, então, se você me enviar comentários, solicitações de recursos ou patches que eu encontrei interessantes, certifique-se de encontrar os próximos lançamentos. Observe que este artigo mostra apenas o uso muito básico do 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 a FANN na página inicial da Biblioteca de Redes Neurais Artificiais Rápidas: leenissen. dkfann Post Scriptum Depois de escrever este artigo, encontrei Um erro insignificante no NeuroMACD. mq4. A função OrderClose () para posição curta foi alimentada com um número de ticket de posição longo. Isso resultou em uma estratégia distorcida que era mais provável para manter shorts e longs longos: na versão correta do script eu corrigi esse erro e removi a estratégia OrderClose (). Isso não alterou a imagem geral da influência da filtragem neural na EA, mas a forma da curva de equilíbrio era bastante diferente. Você pode encontrar ambas as versões desta EA anexadas a este artigo. Finalmente, uma rede real de neurônios EA Free - Something New Commercial Member Juntou-se a setembro de 2008 911 Posts Olá a todos, tem sido um tempo. Normalmente, não tomo pausas tão longas de participar neste fórum, mas há mais de um ano eu trabalhei em um projeto muito intensivo e depois de um ano de teste para frente estou aqui para compartilhá-lo com todos vocês. Meus amigos com muitos comerciantes profissionais e um grupo de nós juntos, combinamos nossa experiência e criamos um sistema automatizado de redes neurais para o Metatrader que realmente funciona. Uma vez que estavam conscientes de que a maioria dos EAs são absolutamente inúteis ou pior, fraudes, pensamos que estarão fornecendo algo único ao comerciante de varejo médio de pessoas que realmente podem ser confiáveis. Este grupo é chamado de Metaneural. Nós usamos redes neurais e as aplicamos no Forex com sucesso no passado e decidimos traduzir esse método para um sistema Metatrader. É amplamente conhecido que as grandes empresas comerciais e fundos de hedge usam inteligência artificial sofisticada e sistemas de rede nueral para lucrar com os mercados financeiros com uma precisão surpreendente. Nós pensamos, por que esse poder também está disponível para nós - os investidores de pequeno dinheiro Então, tirei uma pausa de todas as minhas outras atividades e trabalhei duro com a Metaneural para desenvolver este sistema, o que eu acredito ser a única rede neural REAL EA. Na verdade, ele nem precisa ser EA, o código pode ser escrito em C para funcionar exatamente da mesma maneira em tradestação, esignal, neuroshell ou qualquer plataforma que permita a importação de DLL e a coleta de dados, porque a criação da rede neural ocorre em Neurosolutions. Eu fiz indicadores e sistemas de negociação para a comunidade forexfactory por anos, então eu queria dar a vocês a única versão gratuita da Metaneural EA na internet. Quero receber seus comentários e impressões. Se esse tópico for bem e não se desviou, estarei o teste. Eu tive diversão decifrando o mercado forex com as grandes mentes neste fórum há anos e tenho o prazer de devolver. As redes neurais em EAs são o futuro, espero que vocês possam perceber isso e desenvolver seus próprios sistemas. O primeiro passo na criação de um cérebro de rede neural artificial é reunir os dados em torno dos quais a estrutura do cérebro será formada. Uma vez que estamos tentando criar um cérebro que saberá trocar os mercados, devemos reunir os dados do mercado. No entanto, não podemos simplesmente coletar uma massa de dados e despejá-la em nosso mecanismo neural para criar a estrutura do nosso cérebro. Devemos reunir os dados no formato que queremos que o cérebro processe esses dados e, eventualmente, o mesmo formato em que queremos que ele crie saída. Em outras palavras, não só diziam ao nosso cérebro o que pensar, dando-lhe dados brutos, Mas devemos dizer-lhe COMO pensar, formulando esses dados brutos em uma configuração inteligível. Nesse caso, nossa configuração inteligível é um padrão. Nós reunimos dados em segmentos, cada segmento consiste em uma série de barras definidas pelo comerciante em nosso indicador de coleção proprietário que vem com todos os nossos pacotes. Esse agrupamento de barras é coletado em relação ao próximo bar que vem após o agrupamento - vamos chamar isso de barra futura. Quando estavam coletando dados de mercado, a barra futura é conhecida, porque é tudo histórico, é o próximo bar após o agrupamento. A idéia é que o cérebro da rede neural encontre padrões complexos no agrupamento de barras e use as informações coletadas, incluindo a próxima barra após o agrupamento, para determinar quais padrões complexos precedem o resultado da próxima barra. Durante a negociação real, esse resultado será a barra futura que, de fato, permite saber com um alto grau de precisão a direção do mercado antes que isso aconteça. Os dados coletados são extraídos em uma planilha que exibe dados de preço como aberto, alto, baixo, fechado (OHLC). O OHLC de cada barra é coletado separadamente e colocado em sua própria coluna. No exemplo acima, cada linha representa 3 barras no total. Portanto, as colunas representam centenas ou milhares de barras coletadas voltando à história. Além de OHLC, você também pode coletar os valores de quase qualquer indicador que você selecionar, o que essencialmente dará a esse indicador a capacidade de pensar com base na mudança das condições do mercado e prever O próximo valor. Construção e Treinamento de Rede Neural Agora que temos nossos dados coletados, extraídos em um arquivo de planilha em uma configuração inteligível, podemos carregá-lo em nosso mecanismo de rede neural que criará a estrutura do cérebro artificial, treiná-lo e testar sua precisão antes Salvando a estrutura. Uma vez que os dados coletados são importados para o programa de construção de rede, você escolhe escolher quais bits de dados você deseja usar para criar seu cérebro. Esta é uma característica importante porque permite ao usuário criar muitas estratégias diferentes com base em qualquer peça de dados que seja considerada necessária. O que essencialmente faz neste passo é determinar o que o motor usará para criar os padrões complexos mencionados anteriormente, o que acabará por decidir a capacidade de projeção da EA da rede neural. Por exemplo, diga que você quis dizer à rede neural que procure apenas padrões nos preços abertos das barras em relação aos valores dos indicadores do seu indicador favorito. Você selecionaria o seu indicador no coletor e escolheria apenas as entradas de dados abertas e de dados no software de construção descrito acima. Você também pode selecionar todas as entradas, exceto a coluna output1, que significa seu valor de saída - selecionar todas as entradas criará o padrão de aprendizado mais complexo possível e, assim, permitir que seu cérebro responda a muitos cenários diferentes. Uma vez que as entradas e saídas desejadas são selecionadas, o software criará a estrutura do seu cérebro da rede neural e você pode começar a treiná-la. Uma parte dos dados coletados é reservada e usada para treinar e testar a precisão do seu cérebro artificial, você verá que a saída desejada começa a estar de acordo com os dados de teste, como ele aprende. Uma vez que este processo esteja completo, você poderá exportar o cérebro artificial estruturado na forma de uma DLL que será usada pela MetaNeural EA. Uma vez que o cérebro é construído, treinado, testado e exportado como uma DLL, você pode começar a negociar com um cérebro de rede neural automatizado que verá padrões complexos que são impossíveis para um ser humano alcançar. Obtenha o Metaneural EA GRATUITO agora, financiando uma conta na FinFX com qualquer quantidade e usando nosso serviço de copiadora comercial para refletir nossas tradições vencedoras profissionais em sua conta. Depois de 50 lotes completos são negociados, você receberá o EA Metaneural com funcionalidade completa para LIVRE As contas devem ser financiadas com o link fornecido na seção de preços do site Metaneural. Coloque esses arquivos nas seguintes pastas no Metatrader: Expert Advisor - Metatrader 4experts Indicador do coletor (DatacollectorV2a) - Metatrader 4expertsindicators Indicador de rede neuronal (Metaneural NN Indicator) - Metatrader 4expertsindicators MQLLock e MT4NSAdapter DLL files - Metatrader 4expertslibraries Você precisará instalar o Neurosolutions 6 e Visual Studio 6 para o trabalho, as instruções sobre essas instalações podem ser encontradas no manual detalhado anexado a esta publicação. Você deve ler o manual Sim, ele pode ser aplicado a várias moedas simultaneamente porque pode ser treinado em cada moeda individualmente e uma estrutura de rede neural pode ser criada para cada moeda. Eu diria que a única dependência do corretor seria a integridade de seus preços, quanto mais estáveis ​​e consistentes alimentassem, melhores serão os dados de treinamento e, posteriormente, os negócios. Não foram escalar necessariamente, de modo que a velocidade de execução não é muito importante. Obrigado pelo seu interesse. Parabéns pelo desenvolvimento de um sistema que ofereça retornos saudáveis. Sempre melhor do que imaginar EAs que geralmente acabam explodindo a conta. Eu sou um membro comercial, compartilhando meu sistema Fibonacci Makeover (ForexFibs) aqui para que eu possa entender por que você está oferecendo uma EA gratuita. A minha pergunta é que esta EA pode ser aplicada a várias moedas, pois esta é baseada em redes neuronais reais É dependente do corretor e da velocidade de execuçãoDescrição: Duas redes de distribuição direta de neurônios do indicador Forex - rede de distribuição direta de feedforward, que é aprendendo por propagação traseira de Erros (backpropagation). A rede é carregada através de um arquivo DLL, código-fonte C que está anexado. A rede Neuron é nada mais do que um modelo não-linear, como uma função das entradas. Nas entradas atendidas, os dados do usuário, como as séries temporais da amostra. O significado da saída também é definido pelo usuário, por exemplo, sinais 1 comprar 0 vender. A estrutura da rede, novamente definida pelo usuário. A rede consiste em uma distribuição direta - A camada de entrada (camada de entrada), cujos elementos são entradas, camadas ocultas (camadas ocultas), consistindo de nós computacionais chamados neurônio s e A camada de saída (camada de saída), que consiste em um ou mais Neurônio s, rendimentos são rendimentos em toda a rede. Todos os nós das camadas vizinhas estão ligados. Essas conexões são chamadas de sinapses. Cada sinapse tem um peso (peso w i, j, k), que são multiplicados pelos dados transmitidos por sinapses. Os movimentos de dados da esquerda para a direita são entradas da rede para suas saídas. Daí o nome da rede de distribuição direta. A amostra total desta rede está representada na imagem abaixo. Os dados são processados ​​neurônio s em duas etapas: 1. 1. Todas as entradas multiplicadas pelo peso apropriado, você é adicionado 2. 2. Então, a quantidade resultante manipulou a ativação Neurônio de função (função de ativação ou disparo) e (função de ativação ou disparo) e enviado para a única saída. O significado do neurônio da função de ativação como o neurônio do trabalho de modelagem e o cérebro: o neurônio é desencadeado somente após a informação ter atingido um certo limiar. Nos aspectos matemáticos, ele apenas fornece a rede de não-linearidade. Sem ele, a perda líquida do neurônio seria um modelo auto-regressivo linear (modelo de predição linear). O neurônio da função de ativação mais comum é uma função sigmoid f (x) 1 (1exp (-x)) f (x) 1 (1 exp (-x)) O limite de ativação dessa função é 0. Esse limite pode ser deslocado No eixo horizontal à custa de um neurônio de entrada adicional (entrada de polarização), e chamado de viés de entrada (entrada de polarização), que é atribuído a um determinado peso da mesma maneira que o neurônio de outras entradas. Assim, o número de insumos, camadas, neurônios em cada camada e os pesos da rede neuronal de neurônios de entrada, ou seja, modelo não-linear, que ele cria. Para usar este modelo, você precisa saber o peso. Os pesos são calculados através da formação da rede em dados passados, ou seja, com quaisquer dados de entrada anteriores eram valores conhecidos do sinal de saída. Os pesos da rede são otimizados para corresponder a sua saída com a solução de teste. Normalmente, as entradas para a rede apresentaram vários conjuntos de entrada e dados de saída correspondentes e desvio de erro médio calculado da saída do teste de rede. A rede de treinamento é para reduzir esse problema ao otimizar os pesos. Existem vários métodos de otimização, entre os quais o principal meio de propagação de erros (ALO) eo método de melhoria genética. Arquivos anexados: Train () Test (). O arquivo BPNN. cpp da biblioteca contém duas funções: Train () e Test (). Train () é projetado para treinar a rede para fornecer dados de entrada e saída. Test () é para calcular dados de saída com base nos pesos obtidos após o funcionamento do Train (). Parâmetros de entrada (cor verde) e saída (azul) da função Train () são: double inpTrain - input (older first) double outTarget - Imprint (o mais antigo primeiro) double outTrain - sai da rede após o treinamento int ntr - o número de treinamento Conjuntos de input-output int UEW - Gerenciando valores externos chave para inicializar os pesos (1 use extInitWt, 0 usam números aleatórios) extInitWt - valores originais de pesos double trainedWt - os valores de pesos após o treinamento int numLayers - número de camadas na rede Incluindo entrada, oculto e saída int lSz - tamanho da matriz numLayers, que manteve o número de neurônios s em cada camada. LSz0 lSz 0 especifica o número de entradas de rede int OAF - uma característica chave na ativação do neurônio de saída s (1 função habilitada, 0 não) duplo LR - velocidade de treinamento duplo MF - o momento da taxa de aprendizado int nep - o número máximo de Passos de treinamento (épocas). Epoch consiste em verificar todos os conjuntos de treinamento. Duplo maxMSE - erro médio, no qual a aprendizagem pára. Os parâmetros de entrada (verde) e de saída (azul) da função Test () são: double inpTest - dados de entrada (primeiro antigo) double outTest - Imprint int ntt - conjuntos de dados de entrada e saída double extInitWt - valores originais de pesos numLayers - número De camadas na rede, incluindo entrada, oculto e saída int lSz - tamanho da matriz numLayers, que manteve o número de neurônios s em cada camada. L lz 0 especifica o número de entradas de rede int OAF - uma característica chave na ativação do neurônio de saída s (1 função habilitada, 0 não) O uso da ativação do neurônio de saída depende da natureza da saída. Se os sinais de saída da rede forem binomiais (0 1), então você deve usar a função de ativação (OAF 1). Se a saída for uma previsão de preço, a função de ativação na camada de saída não é necessária (OAF 0). Exemplos de indicadores usados ​​rede de neurônios: BPNN Predictor. mq4 - previsão de preços futuros. Parâmetros de entrada de rede são os incrementos relativos nos preços: x i Barra de teste aberta Abra o atraso da barra de teste i -1.0 onde atraso eu tirei da série Fibonacci. A produção da rede prevê um aumento relativo dos preços futuros. A função de ativação na camada de saída é desativada. Os parâmetros de entrada são um indicador externo int lastBar - número da última barra extern int futBars - o número de barras futuras previstas extern int numLayers - número de camadas na rede incluindo entrada, oculto e saída extern int numInputs - o número de entradas de rede extern Int numNeurons1 - o número de neurônios s em uma camada número 1 extern int numNeurons2 - o número de neurônios s na camada número 2 extern int numNeurons3 extern int numNeurons4 extern int numNeurons5 extern int ntr - o número de conjuntos de treinamento de entrada-saída extern LR dupla - a velocidade da rede de aprendizagem externo duplo MF - o coeficiente da rede de aprendizado do tempo extern int nep - o número máximo de etapas de treinamento (épocas) extern int maxMSEpwr - expoente usado para calcular o erro médio-limite máximo permitido aprendendo maxMSE 10 maxMSEpwr Buy-Sell Classificator. mq4 - buysell. Buy-Sell Classificator. mq4 - indicador preditivo de comprar sinais de venda. Como no exemplo anterior, a rede de entrada foi servida xiOpentestbarOpentestbardelayi-1.0 x i Abra a barra de teste Open testbar delay i -1.0 para barras, que no passado recebeu o sinal para comprar ou vender. Estes últimos sinais são ideais como sinais de entrada para obter um lucro determinado. O sinal de saída de rede é 1 ou 0 comprar vender. A função de ativação da camada de saída. Extern int lastBar - número da última barra extern int minProfit - o lucro mínimo para encontrar o ponto de entrada ideal no último limite externo passado - o limite para reconhecer os sinais de saída como 0 ou 1 extern int numLayers - número de camadas em A rede incluindo entrada, oculto e saída extern int numInput - o número de entradas de rede extern int numNeurons1 - o número de neurônios s em uma camada número 1 extern int numNeurons2 - o número de neurônios s na camada número 2 extern int numNeurons3 extern int NumNeurons3 extern int numNeurons4 extern int numNeurons4 extern int numNeurons5 extern int ntr - o número de conjuntos de treinamento de entrada-saída (depende do número de sinais de venda de venda no passado, 0 seleciona todos os sinais válidos) extern double LR - a velocidade de aprendizagem Rede externa duplo MF - coeficiente da rede de aprendizagem de tempo extern int nep - o número máximo de etapas de treinamento (épocas) extern int maxMSEpwr - expoente usado para calcular o máximo de todos Erro de quadrado médio incorreto, aprendendo maxMSE 10 maxMSEpwr A seta à direita das linhas verdes verticais indica sinais de venda de compra gerados pela rede para testar as futuras barras. As setas à esquerda mostram o ponto de entrada ideal no passado. Instalação de arquivos: Copiar arquivo DLL anexado no C: Arquivos de Programas Bibliotecas de especialistas MetaTrader 4 Permite o uso de DLL no metatrader: Ferramentas - Opções - Expert Advisors - Permitir importações DLL Se o arquivo DLL não funcionar, compile-se. Todos os arquivos necessários estão contidos em BPNN. zip.

No comments:

Post a Comment