English Русский 中文 Español Deutsch 日本語
Previsão de preços utilizando redes neurais

Previsão de preços utilizando redes neurais

MetaTrader 4Negociação | 22 fevereiro 2016, 11:31
3 060 0
Shashev Sergei
Shashev Sergei

Introdução

Durante os últimos anos observamos que o interesse pelas redes neurais está crescendo, as redes neurais estão sendo utilizadas com sucesso em diferentes esferas: empresarial, médica, tecnológica, geológica e física. As redes neurais são amplamente utilizados em esferas que necessitam de previsão, classificação e gestão. Tal sucesso impressionante é determinado por várias razões:

  • Grandes possibilidades. As redes neurais são uma ferramenta de modelagem muito poderosa, permitindo a reprodução de relações imensamente complicadas. Em particular, as redes neurais são não-lineares por natureza. Ao longo de um período de muitos anos, a modelagem linear foi o principal método de modelagem na maioria das esferas pois os procedimentos de otimização para esta finalidade são bem desenvolvidos. Em tarefas em que a aproximação linear não é suficiente, modelos lineares funcionam mal. Além disso, as redes neurais superam "a praga da dimensionalidade", o que não permite modelar as relações lineares em caso de um grande número de variáveis.
  • Fácil utilização. Redes neurais aprenda por exemplos. O usuário de uma rede neural confronta dados representativos e, em seguida, inicia o algoritmo de treinamento, o qual aceita automaticamente a estrutura de dados. É claro que o usuário deve ter um conjunto de conhecimentos heurísticos sobre a maneira de selecionar e preparar os dados, de escolher a arquitetura de rede apropriada e a interpretação dos resultados. No entanto, o nível de conhecimento necessário para uma utilização bem sucedida de redes neurais, é muito mais baixo do que a necessário para os métodos tradicionais de estatística.

As redes neurais são atraentes do ponto de vista da intuição, porque elas baseiam-se no modelo biológico primitivo dos sistemas nervosos. No futuro, o desenvolvimento de tais modelos neurobiológicos poderão conduzir à criação de computadores realmente inteligentes. [1]

Prever séries financeiras é o primeiro passo de qualquer atividade de investimento. Toda a ideia de investimento - invista dinheiro agora com a finalidade de obter lucro no futuro - é baseado na ideia de previsão futura. Nestes termos, a previsão de séries financeiras está na raiz da indústria do investimento - todas as bolsas de valores e mercados de balcão (OTC).

Sabe-se que 99% de todos os trades são especulativos, ou seja, não se dirigem a um volume de trade real, mas em lucrar utilizando o esquema "comprar barato - vender caro". Eles são todos baseados nas previsões dos movimentos de preço por operadores. Importante: as previsões dos operadores são diferentes umas das outras. Assim, a quantidade de operações especulativas caracteriza a diferença entre as previsões dos participantes do mercado, na verdade, a imprevisibilidade das séries financeiras.

Esta característica mais importante de séries do mercado são a base da teoria do mercado "eficiente", descrita na tese de L. Bacharel em 1900. De acordo com esta tese, um investidor pode contar apenas com a rentabilidade média do mercado, avaliada por índices como Dow Jones ou S&P500 para a Bolsa de Valores de Nova Iorque. Qualquer lucro especulativo é de natureza aleatória e é como jogo (há algo de atraente nele, não é?). A razão para a natureza imprevisível das curvas do mercado é a mesma de como o dinheiro raramente se deita no chão em locais públicos: são muitas querendo pegá-lo.

Naturalmente, a teoria de um mercado eficiente não é suportada pelos participantes de mercado (que estão procurando o dinheiro). Muitos deles pensam que, apesar da aparente estocasticidade, que todas as séries de tempo são cheias de regularidades escondidas, ou seja, são previsíveis, pelo menos parcialmente. Em seus artigos, na década de 30, o fundador da análise de onda R. Elliot tentou encontrar tais regularidades empíricas escondidas.

Na década de 80 esse ponto de vista foi inesperadamente apoiado na recém descoberta teoria do caos dinâmico. Esta teoria baseia-se na contraposição do estado caótico e estocástico (aleatoriedade). As série caóticas só parecem aleatórias, mas como um processo dinâmico determinista que permite previsões de curto prazo. A esfera da previsão provável é restrita no tempo pelo horizonte de previsão, mas isso pode ser o suficiente para obter lucro real da previsão (Chorafas, 1994). E aqueles, que usam os melhores métodos matemáticos de extrair regularidades da série caótica barulhenta, pode esperar grandes lucros - em detrimento de companheiros menos equipados.

A última década foi caracterizada por um crescimento persistente da popularidade da análise técnica - um conjunto de regras empíricas com base em diferentes indicadores do comportamento do mercado. A análise técnica concentra-se no comportamento individual deste instrumento financeiro, além de outras garantias. Mas a análise técnica é muito subjetiva e funciona de forma eficiente na borda direita de um gráfico - exatamente onde precisamos da previsão da direção dos preços. É por isso que a análise de rede neural ganha mais popularidade, porque, ao contrário da análise técnica, ela não define quaisquer restrições sobre o tipo da informação de entrada. Isto podem ser indicadores da séries de indicadores fornecidos, assim como informações sobre o comportamento de outros instrumentos do mercado. Não é em vão que redes neurais são amplamente utilizadas por investidores institucionais (por exemplo, grandes fundos de pensão), que trabalham com grandes carteiras, colocando grande importância na correlação entre diferentes mercados.

A modelagem pura de rede neural pura é baseada apenas em dados, não utiliza quaisquer argumentos antecedentes. Este é seu ponto forte e fraco ao mesmo tempo. Os dados disponíveis podem ser insuficientes para o treinamento, a dimensionalidade dos potenciais de entradas pode ser muito grande.

É por isso que para uma boa previsão deve-se usar pacotes neurais com grande funcionalidade.



Preparação de dados

Para iniciar a operação devemos preparar dados. A correção deste trabalho influencia 80% de sucesso.

Os Gurus das redes neurais dizem que valores de cotações Ct não devem ser utilizados como valores de entradas e saídas. O que realmente importa é a alteraçãodas cotações. Enquanto a amplitude destas alterações é ,em regra, menor do que as próprias cotações, há uma forte correlação entre os valores da cotação sucessivas - o valor de cotação mais provável, no momento seguinte, será igual ao seu valor anterior C(t+1)=C(t)+delta(C)=C(t).

Enquanto isso, para uma qualidade maior de treinamento devemos visar uma independência estatística de entradas, isto é, evitando tais correlações. É por isso que é lógico escolher como variáveis de entrada valores mais independentes estatisticamente, por exemplo alterações de cotações delta(C) ou log de incremento de logaritmo relativo (C(t)/C(t+1)).

A última opção é melhor para uma série de longo período, quando a influência da inflação é sensata. Em tal caso, simples diferenças nas partes das séries terão diferentes amplitudes, porque elas são realmente validadas em unidades diferentes. E pelo contrário, as relações de cotações sucessivas não dependem das unidades de medida e serão de mesma escala independentemente da mudança inflacional das unidades de medição. Como resultado, a grande estocasticidade das séries permite usar um grande histórico para treinamento proporcionando, assim, uma melhor formação.

A desvantagem da imersão no espaço tardio é a "visão" restrita da rede. Pelo contrário, a análise técnica não fixa uma janela no passado, e, por vezes, usa os valores de série distantes. Por exemplo, valores de séries de máxima e mínima, mesmo em um passado relativamente distante, possuem um grande impacto sobre a psique dos operadores, e, consequentemente, são valiosos para a previsão. Uma janela com amplitude insuficiente de imersão no defasamento do espaço não é capaz de fornecer tais informações, o que, naturalmente, reduz a eficiência da previsão. Por outro lado, alargar a janela para tais dimensões, quando se inclui valores de séries muito extremos, aumenta a dimensionalidade da rede, o que resulta em uma precisão de previsão pior que a da rede neural.

O caminho para sair desta situação são métodos alternativos de codificação do comportamento anterior da série. Instintivamente, é claro, que quanto mais no passado vai o histórico da série, menos detalhes do seu comportamento irão influenciar o resultado da previsão. Baseia-se na psicologia da percepção subjetiva do passado por operadores, que são quem realmente faz o futuro. Consequentemente, temos que encontrar a apresentação da série dinâmica, o que teria uma precisão seletiva: ainda mais no futuro, menos detalhada, embora preservando a forma geral da curva.

Uma ferramenta bastante promissora aqui pode ser uma decomposição de onda. Em termos de informatividade ela é igual ao atraso de imersão, porém, aceita mais facilmente a compressão de dados que descrevem o passado com a precisão seletiva.



Escolha do Software

Há diferentes softwares destinados para trabalhar com redes neurais. Alguns deles são mais ou menos universais, outros são altamente especializados. Aqui está uma pequena lista de alguns programas:

1. Matlab é um laboratório de desktop para cálculos matemáticos, projetos de circuitos elétricos e modelação de sistemas complexos. Tem uma linguagem de programação embutida e um grande conjunto de ferramentas para redes neurais - Anfis Editor (educação, criação, formação e interface gráfica), interface de comando para as redes de programação, nnTool - para uma configuração mais precisa de uma rede.

2. Statistica é um poderoso software para análise de dados e busca de regularidades estatísticas. Neste pacote o trabalho com redes neurais é apresentado no bloco STATISTICA Neural Networks (abreviado, ST Neural Networks, pacote neuro-net da empresa StatSoft), que é uma realização de todo o conjunto de métodos de rede neural de análise de dados.

3. BrainMaker destina-se a tarefas de resolução que ainda não disponham de métodos e algoritmos formais, com dados de entrada incompletos, ruidosos e contraditórios. Para tais tarefas referimos intercâmbios e previsão financeira, modelagem de condições de crise, reconhecimento de padrões e outros.

4. NeuroShell Day Trader é um sistema de rede neural que atende os requisitos específicos dos traders e é bastante fácil de usar. Este programa é altamente especializado e destina-se ao trading, embora, na verdade, ele está muito perto de uma caixa preta.

5. Outros programas são menos populares.

Para a operação primária o Matlab é bastante adequado. Tentaremos definir a aptidão de uma rede neural para a previsão Forex.

As informações sobre o complexo MatLab podem ser encontradas na wikipédia em https://en.wikipedia.org/wiki/MATLAB

Muitas informações sobre o programa estão no site http://www.mathworks.com/

Você pode comprar o programa em http://www.mathworks.com/store/

Experimento

Preparação de dados

Os dados são facilmente adquiridos utilizando ferramentas padrão do MetaTrader:

Serviço -> Arquivo de Cotações -> Exportar

Como resultado, obtemos o arquivo *.csv, que é uma matéria-prima para a preparação de dados. Para transformar o arquivo em um conveniente para a operação do arquivo *.xls , importe dados do arquivo *.csv Para isto, no excel, faça o seguinte:

Dados -> Importar dados externos -> Importar dados e indicar o arquivo primário preparado. No mestre de importação todas as ações necessárias são feitas em 3 etapas:




Na terceira etapa substitua o separador do inteiro e a parte decimal de um ponto, usando Mais...

Para ter os dados aceitos como números, não strings, substitua o separador do inteiro e a parte decimal por um ponto:

Serviços -> Parâmetros -> Internacional -> Separador de inteiro e uma parte decimal.

As imagens mostram o exemplo dos preços de abertura e de fechamento, outros dados ainda não são necessários.

Agora transforme todos os dados em conformidade com o que queremos prever. Vamos prever o preço de fechamento do dia seguinte sobre as quatro anteriores (os dados são apresentados em cinco colunas, os preços estão em ordem cronológica).

1,2605

1,263

1,2641

1,2574

1,2584

1,2666

1,263

1,2641

1,2574

1,2584

1,2666

1,2569

1,2641

1,2574

1,2584

1,2666

1,2569

1,2506

1,2574

1,2584

1,2666

1,2569

1,2506

1,2586

1,2584

1,2666

1,2569

1,2506

1,2586

1,2574


Graças a manipulações fáceis em Excel, os dados são preparados em alguns minutos. Um exemplo de um arquivo de dados preparados está ligado ao arquivo.

Para o Matlab detectar os arquivos, os dados preparados devem ser salvos em arquivos no formato *.txt ou *.dat. Vamos salvá-los em arquivos *.txt. Em seguida, cada arquivo deve ser dividido - para a formação da rede (seleção) e seu teste (fora da seleção). De tal maneira, dados preparados euro.zip são adequados para operação adicional.



Familiaridade com o Matlab

A partir da linha de comando inicie o pacote ANFIS usando o comando anfisedit. O editor é composto por quatro barras - para dados (dados de carga), para geração de rede (Gerar FIS), para a formação (Formar FIS) e para o seu teste (Testar FIS). A barra superior é utilizado para pré-visualizar a estrutura de rede neural (ANFIS Info).

Aqui você encontra mais informações sobre a operação do pacote:

http://www.mathworks.com/access/helpdesk/help/toolbox/fuzzy/

Para iniciar a operação do carregamento de dados, preparado nas fases anteriores - cronometre Load Data e indique o arquivo com os dados selecionados. Em seguida, crie uma rede neural clicando em Generate FIS.


Para cada entrada de variável defina 3 variáveis linguísticas com uma função de referência triangular. Defina uma função linear como uma função de referência de uma função de saída.


Para o treinamento de redes neurais, o pacote AnfisEdit inclui 2 algoritmos de treinamento: um de propagação anterior e um híbrido. Com uma formação híbrida a rede é treinada dentro de duas ou três execuções. Em uma seleção de treino (60 valores) após o treinamento, a previsão pela rede difere da previsão real em muitos pontos.


Mas é o futuro que precisamos prever! Como os dados fora da seleção levaremos 9 dias após os dados dentro da seleção. Sobre os dados fora de seleção o quadrado de erros fez 32 pontos, o que é, evidentemente, inaceitável no trading real, mas mostra que a direção da rede neural pode ser mais desenvolvida - o jogo deve valer a pena.



O resultado do nosso trabalho é a rede neural híbrida multi camadas que pode prever valores de preços absolutos para um futuro próximo. Ela cardinalmente muda sua estrutura e propósitos de uma rede neural de uma camada, descrito por Y. Reshetov em seu artigo /ru/articles/1447 e lançado como Expert Advisor https://www.mql5.com/ru/code/10289.

Planejamos receber uma previsão de cotações mais ou menos tolerável, apesar dos especialistas em redes neurais recomendarem fortemente não fazer isso. Para visualizar a rede neural clique em Estrutura. Uma rede neural treinada está localizada no arquivo anexado neuro.zip.

Uma grande vantagem do pacote Matlab é a sua integrabilidade com outros programas, e há múltiplas variantes da sua integração DDE, com-objects, dll. Você não tem que criar a ferramenta do nada http://forum.mql4.com/ru/5220, você pode usar uma solução de programa pronta para trabalhar com redes neurais e algoritmos genéticos. Em seguida, após a obtenção de resultados de previsão estáveis, você pode integrar a rede neural no programa MetaTrader através de dll.

Conclusão

As redes neurais são uma ferramenta muito poderosa para trabalhar nos mercados financeiros, mas aprender esta tecnologia exige tempo e esforço, assim como aprender análise técnica.

Uma vantagem das redes neurais é a sua objetividade na tomada de decisões, a desvantagem é que as decisões são, na verdade, feitas por uma caixa preta.

O principal problema que pode ocorrer durante o trabalho com esta tecnologia está ligado ao o pré-processamento de dados. Esta fase tem um papel crucial na previsão de dados e muitas tentativas frustradas de trabalhar com redes neurais estão conectadas com este estágio.

A fim de aprender as redes corretamente você precisa experimentar muito, mas vale a pena. Se os investidores institucionais usarem esta ferramenta, os traders comum, em seguida, também poderão tentar obter sucesso utilizando redes neurais treinadas, porque qualquer coisa pode ser inserida na rede, de indicadores e preços até sinais de análise fundamental.



Lista de referência

1. Nejrokompyuting i ego primenenie v nauke i biznese. A. Ezhov, S. Shumskij. 1998


Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/1482

Arquivos anexados |
euro.zip (8.55 KB)
neuro.zip (4.64 KB)
Linguagem MQL4 para Iniciantes. Perguntas difíceis em frases simples Linguagem MQL4 para Iniciantes. Perguntas difíceis em frases simples
Este é o segundo artigo da série "Linguagem MQL4 para Iniciantes". Agora vamos examinar mais construções complexas e avançadas da linguagem, aprender novas opções e ver, como elas podem ser aplicadas na prática diária. Você vai se familiarizar com um novo tipo de ciclo ''enquanto'', um novo tipo de condição ''troca'', operadores ''pausa'' e ''continuação". Além disso, você vai aprender a escrever suas próprias funções e trabalhar com matrizes multidimensionais. E de bônus, preparei uma explicação sobre um pré-processador.
O que é Martingale? É sensato utilizá-lo? O que é Martingale? É sensato utilizá-lo?
Este artigo contém uma descrição detalhada do sistema Martingale, bem como cálculos matemáticos precisos necessários para responder a pergunta: "É sensato utilizar o sistema Martingale?"
Trading automatizado não padrão Trading automatizado não padrão
Trading bem sucedido e confortável utilizando a plataforma MT4 sem análise detalhada do mercado - é possível? Esse tipo de trading pode ser implementado na prática? Acredito que sim. Especialmente em termos de trading automatizado!
O envio do sinal de trade via feed RSS O envio do sinal de trade via feed RSS
Essa é minha ideia sobre como enviar sinal de trade como FEEDS RSS, um modo famoso de se comunicar com os membros da sua comunidade agora mesmo.