Como formar os valores de entrada para os NS corretamente. - página 29

 
sergeev писал (а) >>

Parafraseando, podemos dizer que aqui é uma prova de que é possível obter uma classificação linearmente separável para o mercado.

Eu mesmo, depois de ler alguns livros inteligentes no lugar sobre a impossibilidade de fazer "exclusivo ou" por rede linear, tomei como impossibilidade o uso de redes lineares para o mercado (por essa razão lógica esse mercado é muito mais complicado do que um simples "exclusivo ou" :).

E talvez não seja? Talvez Yuri esteja certo? E não precisamos foder um monte de livros em não-lineares, mas apenas bater tudo com aviões?

A classificação linear separável pode ser obtida para QUALQUER problema.

MAS você mesmo tem que procurar padrões e formar entradas com base neles, enquanto um perseptron não-linear pode encontrar padrões por si só.

Como escrevi acima - se você obtém resultados positivos com um perseptron linear, você não precisa de um, as regras já foram encontradas.

 
Bem, então a questão linear/não-linear está encerrada.
 

Modelo de rede. Funciona em uma linha separada (CWinThread).

Versão ainda não concluída conforme desejado. Sem controle de interrupção de fio.

Lógica mal implementada das operações de arquivo.

Muitos comentários incorretos sobre o código.

15.07.08

Arquivos anexados:
better1.rar  50 kb
 
Leitura feita a partir do fluxo de trabalho via temporizador (de modo a não carregar dados desnecessários)
Trouxe indicadores para ler informações de um fluxo de trabalho (para reduzir o número de cópias)
Função de plotagem do erro raiz-medo quadrado (para ver como a rede está "viajando" para os mínimos locais)
Adicionado botão para parar os cálculos e salvar os pesos atuais em um arquivo.
Comentários normais adicionados

16.08.08
Arquivos anexados:
better1_1.rar  53 kb
_hilo_1.mq4  4 kb
_target_2.mq4  2 kb
 
sergeev писал (а) >>
Leitura feita a partir do fluxo de trabalho via temporizador (para evitar sobrecarga de dados).
Trouxe indicadores para ler informações do fluxo de trabalho (para reduzir o número de cópias).
Função de plotagem do erro raiz-medo quadrado (para ver como a rede está "viajando" pelos mínimos locais)
Adicionado botão para parar os cálculos e salvar os pesos atuais em um arquivo.
Comentários normais adicionados

16.08.08

Prolificiência invejável de Sergeyev Alexey !

 
Sart писал (а) >>

Uma prolificidade invejável de Alexei Sergeev !

+1 :)

 
1. Fez uma troca mais ou menos normal entre MetaTrader e VC++ através de cabeçalhos.
- CreatePattern - cria arquivos vetoriais de entrada e saída, também escreve informações sobre o número de padrões e dimensões de saída/saída no cabeçalho.
- Então o VC++ lê e cria uma matriz semelhante em si mesmo. Após o processamento da grade, ele cria um arquivo com o mesmo nome, mas com o tipo .wgh onde registra os pesos da grade, os limites e no cabeçalho do modelo da grade (número de camadas, suas dimensões)
- indicador NeuroInd.mq4 (NeuroIndP) - ele lê o arquivo de pesos e constrói o modelo análogo em si mesmo e agora usa o mesmo algoritmo do CreatePattern para percorrer as barras e dar entradas a esta grade. O indicador constrói o vetor de saída. NeuroIndP - lê o mesmo, mas mostra os pontos de entrada.

O CreatePattern script e o NeuroInd são "relacionados" pelos mesmos algoritmos de vetores de entrada, mas com a diferença de que o NeuroInd pode ter dimensões diferentes do vetor de entrada (dependendo de como decidimos processar a rede). Devemos tentar universalizar este algoritmo de alguma forma e colocá-lo em um arquivo separado (por exemplo, em <InputPatternAlg.mqh>). Dessa forma, somente ela pode ser alterada neste complexo.

2. Eu me livrei dos CLayers intermediários na estrutura de classe VC++ (acho que foi um erro :) + nós levemente salvamos a memória + o algoritmo de cálculo da grade coincide com o algoritmo de cálculo no indicador).
Arquivos anexados:
 

Quanto mais eu trabalho com a rede, mais eu percebo que não são tanto as entradas, mas o par entrada/saída que são importantes. Os artigos da primeira página de StatBars serão muito "úteis para o aprendizado" a este respeito. Também notamos que se a saída é contínua em vez de binária, a aproximação é mais rápida e provavelmente melhor. (poucos pares de entrada e saída inconsistentes e repetitivos).

As entradas são basicamente boas. Um quadrado de traços (por exemplo, 5 períodos de 5 valores por período) dá entradas únicas e não repetitivas.

Quanto às saídas...

Testei a saída com a relação (Up-Dn)/(Up+Dn). Encaixa rapidamente.

O único inconveniente é que a relação não dá uma idéia aproximada do valor absoluto de Up e Dn, o que seria desejável :) Não faz diferença se é 10/20 ou 50/100.

Se apenas produzirmos um simples Up-Dn (para saber a magnitude do desvio de preço e em que direção) e depois o comprimirmos com um arctangente, verifica-se que a saturação dos valores ocorre.

(Devo dizer desde já que estou usando compressão arc-tangente e não linear, porque não quero procurar e ligar-me aos máximos).

É possível dividir (Up-Dn) por coeficiente para diminuir o valor de saturação, então a saturação ocorrerá em grandes valores, o que já será raro e não haverá grande repetibilidade e inconsistência.

Outra opção é tentar redes separadas apenas para mudar para cima e para o Dn.

Será que alguém tem algum outro resultado?

 
sergeev писал (а) >>

Quanto mais eu trabalho com a rede, mais eu percebo que não são tanto as entradas, mas o par entrada/saída que são importantes. Os artigos da primeira página de StatBars serão muito "úteis para o aprendizado" a este respeito. Também notamos que se a saída é contínua em vez de binária, a aproximação é mais rápida e provavelmente melhor. (poucos pares de entrada e saída inconsistentes e repetitivos).

As entradas são basicamente boas. Um quadrado de traços (por exemplo, 5 períodos de 5 valores por período) dá entradas únicas e não repetitivas.

Quanto às saídas...

Testei a relação (Up-Dn)/(Up+Dn) na saída. Ela converge rapidamente.

O único inconveniente - esta relação não dá uma idéia aproximada do valor absoluto de Up e Dn, o que seria desejável :) Não faz diferença se é 10/20 ou 50/100.

Se apenas produzirmos um simples Up-Dn (para saber a magnitude do desvio de preço e em que direção) e depois o comprimirmos com um arctangente, verifica-se que a saturação dos valores ocorre.

(Devo dizer desde já que estou usando compressão arc-tangente e não linear, porque não quero procurar e me ligar aos máximos).

É possível dividir (Up-Dn) por coeficiente para diminuir o valor de saturação, então a saturação ocorrerá em grandes valores, o que já será raro e não haverá grande repetibilidade e inconsistência.

Como outra opção, provavelmente é necessário tentar redes separadas apenas para mudar para cima e para o Dn.

Será que alguém tem algum outro resultado?

Você alimenta algum tipo de vetor de entrada em cada barra e requer uma saída em cada barra?

 
Esta versão do MPS é um pouco melhor, mas ainda não é o que você precisa, ou seja, curto é seguido por longo, e vice-versa.
Arquivos anexados:
mps.zip  7 kb
Razão: