Saturday 28 October 2017

Bpnn Forex


MetaTrader 4 - Indicadores Próximo previsor de preços usando Rede Neural - indicador para MetaTrader 4 Histórico de Versões: 06/26/2009 - adicionado um novo indicador BPNN Predictor com Smoothing. mq4, em que os preços são alisados ​​usando EMA antes das previsões. 08/20/2009 - corrigido o código de cálculo da função de ativação de neurônios para evitar a exceção aritmética atualizada BPNN. cpp e BPNN. dll 08/21/2009 - adicionado desmarque de memória no final da execução DLL BPNN. cpp atualizado e BPNN. Dll Breve teoria das redes neurais: Rede neural é um modelo ajustável de saídas como funções de entradas. Consiste em várias camadas: camada de entrada. Que consiste em dados de entrada camada escondida. Que consiste em processar nós chamados camada de saída de neurônios. Que consiste em um ou vários neurônios, cujas saídas são as saídas de rede. Todos os nós de camadas adjacentes estão interligados. Essas conexões são chamadas sinapses. Cada sinapse tem um coeficiente de escalonamento atribuído, pelo qual os dados propagados através da sinapse são multiplicados. Estes coeficientes de dimensionamento são chamados de pesos (wijk). Em uma Rede Neural de Avanço Avançado (FFNN) os dados são propagados de entradas para as saídas. Aqui está um exemplo de FFNN com uma camada de entrada, uma camada de saída e duas camadas ocultas: A topologia de uma FFNN é freqüentemente abreviada da seguinte maneira: lt de inputsgt - lt de neurônios na primeira camada oculta de neurônios no segundo hidden Layergt - Lt de outputsgt. A rede acima pode ser referida como uma rede 4-3-3-1. Os dados são processados ​​por neurônios em duas etapas, correspondentemente mostradas dentro do círculo por um sinal de soma e um sinal de etapa: Todas as entradas são multiplicadas pelos pesos associados e somadas As somas resultantes são processadas pela função de ativação dos neurônios. Cuja saída é a saída do neurônio. É a função de ativação dos neurônios que dá não-linearidade ao modelo de rede neural. Sem ele, não há razão para ter camadas ocultas, ea rede neural se torna um modelo linear autorregressivo (AR). Arquivos de biblioteca fechados para funções NN permitem a seleção entre três funções de ativação: O limite de ativação dessas funções é x0. Este limiar pode ser movido ao longo do eixo x graças a uma entrada adicional de cada neurônio, chamada entrada de polarização. Que também tem um peso atribuído a ele. O número de entradas, saídas, camadas ocultas, neurônios nessas camadas e os valores dos pesos de sinapse descrevem completamente um FFNN, isto é, o modelo não-linear que ele cria. Para encontrar pesos a rede deve ser treinada. Durante um treinamento supervisionado. Vários conjuntos de entradas passadas e os resultados esperados correspondentes são alimentados à rede. Os pesos são otimizados para obter o menor erro entre as saídas da rede e as saídas esperadas. O método mais simples de otimização de peso é a retro-propagação de erros, que é um método de descida de gradiente. A função de treino fechada Train () usa uma variante deste método, chamada Improved Resilient back-Propagation Plus (iRProp). Este método é descrito aqui A principal desvantagem dos métodos de otimização baseados em gradiente é que eles geralmente encontram um mínimo local. Para séries caóticas, como uma série de preços, a superfície de erro de treinamento tem uma forma muito complexa com muitos mínimos locais. Para tais séries, um algoritmo genético é um método de treinamento preferido. Arquivos anexados: BPNN. dll - arquivo de biblioteca BPNN. zip - arquivo de todos os arquivos necessários para compilar BPNN. dll em C BPNN Predictor. mq4 - indicador prevendo futuros preços abertos BPNN Predictor com Smoothing. mq4 - indicador prevendo preços suavizados abertos Arquivo BPNN. Cpp tem duas funções: Train () Test (). Train () é usado para treinar a rede com base na entrada passada fornecida e valores de saída esperados. Test () é usado para calcular as saídas de rede usando pesos otimizados, encontrados por Train (). Aqui está a lista de parâmetros de saída de entrada (verde) de Train (): inpTrain dupla - dados de treinamento de entrada (matriz 1D com dados 2D, antigo primeiro) double outTarget - dados de destino de saída para treinamento (dados 2D como matriz 1D, Mais antigo 1) duplo outTrain - Saída 1D array para armazenar saídas líquidas de treinamento int ntr - de conjuntos de treinamento int UEW - Use Ext. Pesos para inicialização (1 use extInitWt, 0use rnd) double extInitWt - matriz de entrada 1D para armazenar matriz 3D de pesos iniciais externos dupla trainingWt - matriz de saída 1D para armazenar matriz 3D de pesos treinados int numLayers - de camadas incluindo entrada, oculto e saída int lSz - de neurônios em camadas. LSz0 é de entradas de rede int AFT - Tipo de função de ativação de neurônio (0: sigm, 1: tanh, 2: x / (1x)) int OAF - 1 habilita a função de ativação para a camada de saída 0 desabilita int nep - MaxMSE - O treinamento de Max MSE pára quando o maxMSE é atingido. Aqui está a lista de parâmetros de saída de entrada (verde) de Test (): duplo inpTest - dados de teste de entrada (dados 2D como matriz 1D, mais antigo primeiro) double outTest - Output 1D array para manter as saídas líquidas do treinamento ) Int ntt - de conjuntos de teste duplo extInitWt - matriz de entrada 1D para armazenar matriz 3D de pesos iniciais externos int numLayers - de camadas incluindo entrada, oculto e saída int lSz - de neurônios em camadas. LSz0 é de entradas líquidas int AFT - Tipo de função de ativação de neurônio (0: sigm, 1: tanh, 2: x / (1x)) int OAF - 1 habilita a função de ativação para a camada de saída 0 desabilita Se usar a função de ativação no Saída ou não (valor do parâmetro OAF) depende da natureza das saídas. Se as saídas são binárias, o que é freqüentemente o caso em problemas de classificação, então a função de ativação deve ser usada na camada de saída (OAF1). Por favor, preste atenção que a função de ativação 0 (sigmóide) tem 0 e 1 níveis saturados, enquanto que as funções de ativação 1 e 2 têm níveis -1 e 1. Se as saídas de rede for uma previsão de preço, então nenhuma função de ativação é necessária na camada de saída (OAF0). Exemplos de utilização da biblioteca NN: BPNN Predictor. mq4 - prevê futuros preços abertos. As entradas da rede são mudanças de preços relativos: onde delayi é computado como um número de Fibonacci (1,2,3,5,8,13,21 ..). A saída da rede é a mudança relativa prevista do próximo preço. A função de ativação é desativada na camada de saída (OAF0). Extern int lastBar - Last bar no passado data extern int futBars - das barras futuras para prever extern int numLayers - de camadas incluindo entrada, saída de amp escondida (2..6) extern int numInputs - de entradas extern int numNeurons1 - de neurônios em A primeira camada oculta ou de saída extern int numNeurons2 - dos neurônios na segunda camada oculta ou de saída extern int numNeurons3 - dos neurônios na terceira camada oculta ou externa extern numNeurons4 - dos neurônios na quarta camada escondida ou externa externum numNeurons5 - de Neurônios na quinta camada oculta ou de saída extern int ntr - de conjuntos de treinamento externo int nep - Máximo de epochs externo int maxMSEpwr - conjuntos maxMSE10maxMSEpwr treinamento pára lt maxMSE externo int AFT - Tipo de ativ. (0: sigm, 1: tanh, 2: x / (1x)) O indicador traça três curvas no gráfico: cor vermelha - previsões de preços futuros cor preta - preços abertos de treinamento passado, que foram utilizados como resultados esperados para o Rede de cor azul - saídas de rede para entradas de treinamento BPNN Predictor. mq4 - prevê futuro suavizado preços abertos. Ele usa suavização EMA com period smoothPer. Configurando tudo: Cópia incluída BPNN. DLL para C: Program FilesMetaTrader 4expertslibraries Em metatrader: Ferramentas - Opções - Expert Advisors - Permitir DLL importações Você também pode compilar seu próprio arquivo DLL usando códigos-fonte em BPNN. zip. Recomendações: Uma rede com três camadas (numLayers3: uma entrada, uma oculta e uma saída) é suficiente para a grande maioria dos casos. De acordo com o Teorema de Cybenko (1989), uma rede com uma camada oculta é capaz de aproximar qualquer função contínua e multivariada a qualquer grau de precisão desejado, uma rede com duas camadas ocultas é capaz de aproximar qualquer função descontínua e multivariada: Neurônios na camada oculta podem ser encontrados através de tentativa e erro. As seguintes quotrulas de polegar podem ser encontradas na literatura: de neurônios ocultos (de entradas de saídas) / 2, ou SQRT (de entradas de saídas). Acompanhe o erro de treinamento, informado pelo indicador na janela de especialistas do metatrader. Para a generalização, o número de conjuntos de treinamento (ntr) deve ser escolhido 2-5 vezes o número total de pesos na rede. Por exemplo, por padrão, o BPNN Predictor. mq4 usa uma rede 12-5-1. O número total de pesos é (121) 5671. Portanto, o número de conjuntos de treinamento (ntr) deve ser de pelo menos 142. O conceito de generalização e memorização (superposição) é explicado no gráfico abaixo. Os dados de entrada para a rede devem ser transformados em estacionários. Os preços de Forex não são estacionários. Recomenda-se também normalizar as entradas para a gama -1..1. O gráfico abaixo mostra uma função linear ybx (entrada x, saída y) cujas saídas são corrompidas por ruído. Este ruído adicionado faz com que a função de saída medidas (pontos pretos) se desviar de uma linha reta. A função yf (x) pode ser modelada por uma rede neural de feed forward. A rede com um grande número de pesos pode ser ajustada aos dados medidos com erro zero. Seu comportamento é mostrado como a curva vermelha passando por todos os pontos pretos. No entanto, esta curva vermelha não tem nada a ver com a função linear original ybx (verde). Quando esta rede sobrecarregada é usada para prever valores futuros da função y (x), resultará em erros grandes devido à aleatoriedade do ruído adicionado. Em troca de compartilhar esses códigos, o autor tem um pequeno favor a perguntar. Se você foi capaz de fazer um sistema de comércio rentável com base nesses códigos, por favor, compartilhe sua idéia comigo, enviando e-mail diretamente para vlad1004yahoo.

No comments:

Post a Comment