O "New Neural" é um projecto de motor de rede neural Open Source para a plataforma MetaTrader 5. - página 46
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
uma piada barbuda vem-me imediatamente à cabeça
Duvido dos "zeros" no momento do nascimento, além de pensar que os erros - as deflexões estão presentes o tempo todo.Mudei-o para que quando um objecto é criado via construtor com parâmetros, uma nova sequência seja rubricada no final da sequência.
Funcionará um pouco mais lentamente, mas a sequência será única o tempo todo.
Ao criar através do construtor padrão, você precisa chamar Srand() e a seqüência será a mesma, girando em círculo.
Eu proponho considerar uma bíblia de ordem virtual (emula a abertura/fecho no mercado. os comandos são quase os mesmos que para ordens reais).
Será útil quando você precisar executar um modelo sobre dados históricos (fora do testador de estratégia).
O que você esqueceu? O que podemos melhorar, acrescentar, mudar, modificar? - A biblioteca é muito básica.
Até agora só foram implementadas operações dos tipos buy-0 e sell-1.
Palestra 1 aqui https://www.mql5.com/ru/forum/4956/page23
Palestra 2 aqui https://www.mql5.com/ru/forum/4956/page34
Palestra 3 aqui https://www.mql5.com/ru/forum/4956/page36
Palestra 4. Aplicação da organização do córtex visual à transformação de séries temporais
Portanto, nossa tarefa é construir uma rede neural de classificação de padrões de preços de acordo com o princípio do cérebro. Esta rede pode ser dividida em dois módulos: o módulo de transformação de entradas (preço) e o módulo de classificação que pode ser construído de acordo com qualquer princípio conhecido (por exemplo, Máquina Vectorial de Suporte):
Na minha palestra anterior descrevi o modelo HMAX do córtex visual como um exemplo de transformação de informação biológica. A grande desvantagem deste modelo é que os valores de pesos (campos receptivos) não são treinados nele, mas simplesmente tirados de medições biológicas de neurónios do cérebro. Por exemplo, os campos receptivos de neurônios simples em V1 (S1) são medidos como mostrado no vídeo aqui https://www.youtube.com/watch?v=Cw5PKV9Rj3o(os cliques que você ouve são pulsos de neurônios). No nosso caso de citações de séries temporais, os "campos receptivos" de neurónios que transformam a informação são desconhecidos de antemão. Por isso, teremos de ser nós a encontrá-los. Por exemplo, a primeira camada de transformação de preços (camada S1) pode ser construída da seguinte forma, por analogia com a camada S1 do córtex visual:
Neste exemplo, a nossa camada S1 tem 6 subcamadas, numeradas de 0 a 5. Neurônios (círculos) do mesmo sub-camada têm os mesmos pesos de entrada (campos receptivos), convencionalmente mostrados nos retângulos da esquerda. Cada sub-camada de neurónios tem o seu próprio campo receptivo. Sabemos antecipadamente que se existe um sub-camada com campo receptivo w_0,k onde k=0...5 (direção "para cima"), então deve haver um sub-camada com campo receptivo -w_0,k (direção "para baixo"). Que as camadas com campo positivo sejam numeradas com números pares (0, 2, 4) e as suas contrapartidas negativas numeradas com números difusos (1, 3, 5). Além disso, sabemos que os subcamadas S1 devem ter campos receptivos de diferentes tamanhos. Deixe o tamanho do campo aumentar de sub-camada 0 (e sua contraparte negativa 1) para sub-camada 4 (e sua contraparte negativa 5). As entradas de todos os neurônios da mesma coluna são alimentadas com os mesmos preços (por exemplo, os neurônios da primeira coluna são alimentados com preços x_0...x_5). As entradas de neurónios na coluna seguinte são alimentadas com preços deslocados por 1 barra (x_1...x_6), etc. Assim, nossa camada S1 consiste em neurônios com campos receptivos de diferentes direções (para cima, para baixo), tamanhos e posições de tempo.
O aprendizado dos pesos de entrada dos neurônios da camada S1 é feito apenas para uma coluna de neurônios de diferentes subcamadas, e não importa qual delas. Então todos os pesos são copiados para os restantes neurónios em cada sub-camada. A aprendizagem é feita sem um professor, alimentando diferentes padrões de preços com insumos da camada S1 e mudando os pesos por alguma regra. Há muitas regras para a auto-aprendizagem dos pesos dos neurónios, bem descritas aqui:
Miller, K. D., e MacKay, D. J. C. (1994). O papel das restrições na aprendizagem Hebbian. Neural Computat., 6, 100-126.
A primeira regra de auto-aprendizagem neuronal foi postulada por Hebb em 1949(https://en.wikipedia.org/wiki/Hebbian_theory). Esta regra diz: "Se um neurônio recebe entrada de outro neurônio, e ambos são altamente ativos, o peso entre os neurônios deve ser aumentado". Matematicamente, está escrito da seguinte forma
dw_i = mu*x_i*y,
onde dw_i é o incremento de peso w_i, x_i é o valor na entrada i-ésimo, y é a saída de um neurônio, mu é a taxa de aprendizagem. Vamos usar a regra Oja (https://en.wikipedia.org/wiki/Oja's_rule), que pertence à classe das regras de aprendizagem competitivas :
dw_i = mu*y*(x_i - y*w_i/a),
onde dw_i é o peso incremental w_i, x_i é o preço no i-ésimo input, y é o output do neurónio calculado como y = SUM(w_i*x_i, i=0..m-1), mu é a taxa de aprendizagem, a é um parâmetro (soma dos quadrados de pesos SUM(w_i^2,i=0..m-1) tende para a). A vantagem desta regra é que ela automaticamente encontra pesos como principais vetores próprios das cotações de preços. Em outras palavras, a regra de Ogi reproduz a Abordagem da Componente Principal (PCA). Isto coincide com a suposição biológica de que os campos receptivos da camada S1 do córtex visual representam os principais vetores próprios da informação visual. O código C++ em anexo treina automaticamente os pesos dos 32 subcamadas S1 com aspas EURUSD M5 como entrada, mu=1, a=1. Estes pesos como funções de entrada são mostrados abaixo
Os pesos das duas primeiras subcamadas (0 e 1) são mostrados em vermelho. Eles têm apenas dois valores não zero: -0,707 e +0,707. Os pesos das subcamadas 2 e 3 são mostrados em laranja. Eles têm 4 valores diferentes de zero. Etc.
Para usar o código anexo, você precisa instalar as bibliotecas Boost e CImg http://cimg.sourceforge.net/. Eu não tenho as camadas superiores (C1, S2, C2) e provavelmente não o farei por muito tempo. Aqueles que leram minhas leções anteriores devem entender como todas as camadas HMAX funcionam e completar o módulo de conversão de cotações. Na próxima (última) palestra vou falar sobre a SparseNets.
Eu proponho considerar uma bíblia de ordem virtual (emula a abertura/fecho no mercado. os comandos são quase os mesmos que para ordens reais).
Será útil quando você precisar executar um modelo sobre dados históricos (fora do testador de estratégia).
O que você esqueceu? O que podemos melhorar, acrescentar, mudar, modificar? - A biblioteca é muito básica.
Até agora, só foram implementadas operações de compra-0 e venda-1.
Obrigado pela biblioteca. Posso ter um tutorial rápido sobre como usá-lo?
Na verdade, não há muito para contar.
Antes de cada execução do histórico, a fim de limpar o histórico do pedido, ligue
e depois, de acordo com a sua estratégia de negociação, chame os comandos necessários:
O spread é fixo, é definido durante a inicialização. Para um spread flutuante, teremos de adicionar a funcionalidade apropriada. Na minha opinião, não é necessário - basta definir o máximo possível de spread para um instrumento e pronto.
Não há muito para contar.
Antes de cada execução do histórico, para limpar o histórico da ordem, você precisa chamar os seguintes comandos:
e depois, de acordo com a estratégia de negociação, chamar os comandos necessários:
O spread é fixo, é definido durante a inicialização. Para um spread flutuante, teremos de adicionar a funcionalidade apropriada. Para mim não é necessário no inferno - basta definir o máximo possível de spread para um instrumento e pronto.
Desculpe, mas parece que calculei mal. Neste momento, não tenho praticamente nenhuma oportunidade de me envolver no projecto.
Embora o desejo de participar seja enorme, estou desesperadamente com falta de tempo e energia, o que é uma pena.
Eu poderei participar após os exames (meados de Dezembro). A propósito, um dos cursos está directamente relacionado com redes neurais.
A propósito. Há duas funções de alvo. Para regressão logística e simples regressão.
A classificação é um caso de regressão logística.
A função alvo é para a regressão logística:
E para a regressão normal:
embora os seus derivados sejam semelhantes. Talvez seja por isso que a distinção costuma ser silenciosa.
O primeiro é usado na camada sigmoidal de saída em problemas de classificação.
O segundo é usado para saída linear em problemas de previsão.
Desculpe, mas parece que calculei mal. Neste momento, não tenho praticamente nenhuma oportunidade de me envolver no projecto.
Embora o desejo de participar seja enorme, estou desesperadamente com falta de tempo e energia, o que é uma pena.
Eu poderei participar após os exames (meados de Dezembro). A propósito, um dos cursos está directamente relacionado com redes neurais.