Tuesday 31 October 2017

Neural Rede Forex Indicadores


Os gráficos NeuroShell Trader e NeuroShell Day Trader podem conter várias páginas de gráfico, cada uma das quais referencia uma segurança diferente. As páginas de gráfico permitem que você visualize e comercialize seus sistemas de negociação em vários títulos ao mesmo tempo. Indicadores, estratégias de negociação e previsões de redes neurais adicionados ao gráfico são individualmente testados, otimizados e aplicados em todos os títulos ao mesmo tempo. Se você adicionar e remover páginas de gráfico na mosca, NeuroShell Trader automaticamente backtest e otimizar os títulos adicionados. Aplicar rapidamente previsões e sistemas de negociação em toda a sua carteira inteira de ações, moedas estrangeiras, etc O mais poderoso, ainda fácil de usar o software de negociação disponível para negociação forex, ações, índices, futuros e muito mais Copyright copy 2015 Deixe seus sistemas aprender a sabedoria de Idade e experiência Ward Systems Group, Inc. ALGUNS DOS MUNDOS AS EMPRESAS FINANCEIRAS MAIS RESPETADAS CONFIAM NOSSA TECNOLOGIA A interface de ponto e clique do NeuroShell Traders permite que você crie facilmente indicadores complexos de análise técnica, sistemas de negociação e previsões do mercado de redes neurais sem codificação de qualquer espécie. Construa poderosos sistemas de negociação em MINUTES, não em horas ou dias. Não se deixe enganar por sistemas de negociação que ficam muito bem no papel, mas perder dinheiro assim que você começar a comercializá-los. Use a otimização de negociação de papel NeuroShell Traders, de backtesting de amostra e de otimização de algoritmo genético walkforward para construir modelos automaticamente menos aptos a ajustar a curva dados passados ​​e confirmar uma capacidade de sistemas para executar em negociação futura. Descubra se seus sistemas de negociação mantêm-se em negociação futura ANTES de você negociar Não pode encontrar boas regras de negociação Use redes neurais para prever os melhores sinais de negociação NeuroShell Traders indicador, previsão e estratégia de negociação assistentes, how-to biblioteca de vídeo, Rápido e fácil para o comerciante novato para analisar e negociar forex, ações, índices e futuros. Projetado para TODOS de novato para comerciantes profissionais. Se você tem um conjunto de indicadores favoritos, mas não tem um conjunto de regras comerciais rentáveis, o reconhecimento de padrão de uma rede neural artificial pode ser a solução. As redes neurais analisam seus indicadores favoritos, reconhecem padrões multidimensionais muito complexos para visualizar, prever e prever os movimentos do mercado e, em seguida, gerar sinais de negociação com base nesses padrões, previsões e previsões. Com NeuroShell Traders proprietário de treinamento rápido Turboprop 2 algoritmo de rede neural você não precisa mais ser um especialista em redes neurais. Inserir um sistema de negociação de redes neurais é tão fácil como inserir um indicador. Ward Systems Group, Inc. QuotLet seus sistemas aprendem a sabedoria da idade e do comércio experiencequot Construir mercado de ações, futuros, índice e sistemas de negociação forex sem codificaçãoForex previsão Este exemplo é muito semelhante ao anterior. A única diferença é que ele mostra dados para divisas (forex) pares de moedas. Como trabalhar com o applet Se você ainda não viu o primeiro exemplo. Por favor, explore-o primeiro - descrição básica está disponível lá. Neste applet, os dados a seguir estão disponíveis. Todos eles são valores de fechamento de fim de dia para todo o ano de 2007, ou seja, 313 valores. Como no applet anterior, cada uma dessas séries cronológicas tem os seguintes valores: zero para intervalo abaixo de 0, valor próximo no intervalo 0-número de valores e novamente zero após o último valor conhecido. EURUSD - EUR USD forex dados sobre pares de moedas USDJPY - EUR USD forex dados sobre pares de moedas USDCHF - EUR USD forex dados sobre pares de moedas EURJPY - EUR USD forex moeda pares dados Observe novamente que este exemplo é fornecido apenas para ilustração. Negociação usando esta configuração simples geralmente não está longe de usar a previsão pelo último valor disponível. Observe também que para negociação precisamos desenvolver regras de entrada e saída, e que eles são mais importantes do que a previsão exata. Aguarde até que o applet seja carregado. Applet e descrição (c) Marek Obitko, 2008 a rede neural no applet usa classes Java BPNeuron e BPNet de NeuralWebspace, (c) Tom Vehovsk, 1998, que foram modificados para os propósitos deste applet. MetaTrader 4 - Exemplos Usando Neural Networks 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 no 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 usadas. 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 que implementa é 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 elemento com o valor de saída em vez do valor de saída em si. Infelizmente, a maioria das funções FANN usar um ponteiro para uma estrutura fann representando 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 corretos 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 de wrapper que pode ser facilmente integrado com 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) é 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 resultante do wrapper seria como segue: Nós 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 a sua vez criado ann pela chamada para: Para liberar anny handles 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 ser carregado mais tarde (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 de 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, etapa 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 seu EA Depois que o Fann2MQL estiver 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 possibilidade de tirar proveito real dela é duvidosa. Você pode tentar escrever sua própria estratégia usando técnicas de Reforço Aprendizagem, diga 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 a 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 é 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 queremos que ele seja divisível por 3. AnnPath é computado para refletir o EA NAME e MagicNumber. Que é calculado a partir do SlowMA. FastMA e SignalMA argumentos de entrada que são usados ​​mais tarde 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 e a 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 neste aplicativo, no entanto, eu queria mostrar a você o potencial completo do Fann2MQL, que está lidando com várias redes ao mesmo tempo e pode processá-las em paralelo, aproveitando vários núcleos ou CPUs. Para torná-lo possível, o 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, neurônios AnnInput21 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ônios 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 nenhuma saída. Se seu menor de igual a seqüência de texto é impresso. Se o nível de depuração é 0, a cadeia de caracteres 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 são atribuídos ao nível 0. Eles serão impressos a menos que você abaixar o 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, eu 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á nenhuma normalização sofisticada neste caso, eu simplesmente usei o MACD principais e valores de sinal que nunca estão excedendo 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 a entrada de rede, codificá-lo, decompor e normalizar é um dos fatores mais importantes no processamento de rede neural. Como eu mencionei antes do 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 de maneira 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, em seguida, 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 de 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 usados ​​para o processamento de posição longa e curta que são simétricos assim Ill descrever apenas o caso de longos. A variável LongTicket contém o número do ticket da posição atualmente aberta. Se o seu igual a -1 nenhuma posição é aberta, portanto, se o BuySignal é definido que pode indicar boa oportunidade para abrir posição longa. Se a variável NeuroFilter não é definida a posição longa é aberta e que é o caso sem a rede neural de filtragem 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, a EA verificará se ainda está aberta ou foi fechada pelo StopLoss ou pelo TakeProfit. Se a ordem não for fechada, nada acontece, no entanto, se a ordem é fechada, o vetor de saída de treino, que tem apenas uma 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 é 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 de abrir a 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 otimização de treinamento e 2009.01.01-2009.03.22 para fins de teste. Na primeira corrida, tentei obter os valores mais rentáveis ​​para o argumento StopLoss, TakeProfit, SlowMA, FastMA e SignalMA, que codifiquei no arquivo NeuroMACD. mq4. O NeuroFIlter foi desligado, bem como SaveAnn. O AnnsNumber foi definido como 0 para evitar 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 o suficiente rentável e perder negócios, para que pudéssemos ligar 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 você caso, como 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 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 de dados de teste com filtro neural ativado. O número de comércios realizados é 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 do período de dados de teste sem filtragem de sinal neural: Resultados de dados de teste sem filtragem neural. A diferença é bastante óbvia. Como você pode ver a filtragem de sinal neural virou a EA perdedor em um rentável Conclusão Espero que você tenha aprendido a partir deste artigo como usar redes neurais no MetaTrader. Com a ajuda de Fann2MQL simples, livre e opensource pacote 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 de multithreading única pode acelerar o seu processamento muitas vezes, dependendo do número de seus núcleos de CPU, especialmente ao otimizar determinados parâmetros. Em um caso, encurtou a otimização do meu processamento de EA baseada em Aprendizagem de Reforço de aproximadamente 4 dias para apenas 28 horas em uma CPU Intel de 4 núcleos. Durante a redação deste artigo eu 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 a 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 as redes FANN, como: E há muito mais sobre o FANN no Fast Artificial Neural Rede Biblioteca homepage: leenissen. dkfann Post Scriptum Depois de escrever este artigo eu encontrei Um erro insignificante em NeuroMACD. mq4. A função OrderClose () para a 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 sobre a EA, mas a forma da curva de equilíbrio foi bastante diferente. Você pode encontrar ambas as versões deste EA anexado a este artigo.

No comments:

Post a Comment