Friday 12 May 2017

Rede Forex


Finalmente, uma rede real de neurônios EA Free - Something New Commercial Member Juntou-se a setembro de 2008 911 Posts Olá a todos, tem sido um tempo. Normalmente, não tomo pausas tão longas de participar neste fórum, mas há mais de um ano que trabalhei em um projeto muito intensivo e depois de um ano de teste para frente estou aqui para compartilhá-lo com todos vocês. Meus amigos com muitos comerciantes profissionais e um grupo de nós se juntaram, combinaram nossa experiência e criaram um sistema automatizado de rede neural para o Metatrader que realmente funciona. Uma vez que estavam conscientes de que a maioria dos EAs são absolutamente inúteis ou pior, fraudes, pensamos que estarão fornecendo algo único ao comerciante de varejo médio de pessoas que realmente podem ser confiáveis. Este grupo é chamado de Metaneural. Nós usamos redes neurais e as aplicamos para negociar Forex com êxito no passado e decidimos traduzir esse método em um sistema Metatrader. É amplamente conhecido que as grandes empresas comerciais e os fundos de hedge usam inteligência artificial sofisticada e sistemas de rede nueral para lucrar com os mercados financeiros com uma precisão surpreendente. Nós pensamos, por que esse poder também não está disponível para nós - os investidores de pequeno dinheiro Então eu tirei uma pausa de todas as minhas outras atividades e trabalhei duro com a Metaneural para desenvolver esse sistema, o que eu acredito ser a única rede neural REAL EA. Na verdade, ele nem precisa ser EA, o código pode ser escrito em C para funcionar exatamente da mesma forma em tradestação, esignal, neuroshell ou qualquer plataforma que permita a importação de DLL e a coleta de dados, porque a criação da rede neural ocorre em Neurosolutions. Eu fiz indicadores e sistemas de negociação para a comunidade forexfactory por anos, então eu queria dar a vocês a única versão gratuita da Metaneural EA na internet. Quero receber seus comentários e impressões. Se esse tópico for bem e não se distrair, estenderei o teste. Tive me divertido decifrar o mercado forex com as grandes mentes neste fórum há anos e tenho o prazer de devolver. As redes de neurônios em EAs são o futuro, espero que vocês possam perceber isso e desenvolver seus próprios sistemas. O primeiro passo na criação de um cérebro da rede neuronal artificial é reunir os dados em torno dos quais a estrutura do cérebro será formada. Uma vez que estamos tentando criar um cérebro que saiba como negociar os mercados, devemos reunir dados de mercado. No entanto, não podemos simplesmente coletar uma massa de dados e despejá-la em nosso mecanismo neural para criar a estrutura do nosso cérebro. Devemos reunir os dados no formato que queremos que o cérebro processe esses dados e, eventualmente, o mesmo formato em que queremos que ele crie saída. Em outras palavras, não estavam apenas dizendo ao nosso cérebro o que pensar, dando-lhe dados brutos, Mas devemos dizer-lhe COMO pensar, formulando esses dados brutos em uma configuração inteligível. Nesse caso, nossa configuração inteligível é um padrão. Nós reunimos dados em segmentos, cada segmento consiste em uma série de barras definidas pelo comerciante em nosso indicador de coleção proprietário que vem com todos os nossos pacotes. Esse agrupamento de barras é coletado em relação ao próximo bar que vem após o agrupamento - chamaremos isso de barra futura. Quando estavam colecionando dados de mercado, a barra futura é conhecida, porque é todo o histórico, é o próximo bar após o agrupamento. A idéia é que o cérebro da rede neural encontre padrões complexos no agrupamento de barras e use as informações coletadas, incluindo a próxima barra após o agrupamento, para determinar quais padrões complexos precedem o resultado da próxima barra. Durante a negociação real, esse resultado será a barra futura que, de fato, permite saber com um alto grau de precisão a direção do mercado antes que isso aconteça. Os dados coletados são extraídos em uma planilha que exibe dados de preço como aberto, alto, baixo, fechado (OHLC). O OHLC de cada barra é coletado separadamente e colocado em sua própria coluna. No exemplo acima, cada linha representa 3 barras no total. Portanto, as colunas representam centenas ou milhares de barras coletadas voltando à história. Além de OHLC, você também pode coletar os valores de quase qualquer indicador que você selecionar, o que essencialmente dará a esse indicador a capacidade de pensar com base na mudança das condições de mercado e prever O próximo valor. Construção e Treinamento de Rede Neural Agora que temos nossos dados coletados, extraídos em um arquivo de planilha em uma configuração inteligível, podemos carregá-lo em nosso mecanismo de rede neural que criará a estrutura do cérebro artificial, treiná-lo e testar sua precisão antes Salvando a estrutura. Uma vez que os dados coletados são importados para o programa de construção de rede, você escolhe selecionar quais bits de dados você deseja usar para criar seu cérebro. Esta é uma característica importante porque permite que o usuário crie muitas estratégias diferentes com base em qualquer peça de dados que seja considerada necessária. O que estava fazendo essencialmente nesta etapa é determinar o que o motor usará para criar os padrões complexos mencionados anteriormente, o que acabará por decidir a capacidade de projeção da EA da rede neural. Por exemplo, diga que queria dizer à rede neural que apenas procure padrões nos preços abertos das barras em relação aos valores dos indicadores do seu indicador favorito. Você selecionaria então seu indicador no coletor e escolheria apenas as entradas abertas e de dados no software de construção descrito acima. Você também pode selecionar todas as entradas, exceto para a coluna output1, que significa seu valor de saída - selecionar todas as entradas criará o padrão de aprendizado mais complexo possível e, assim, permitir que seu cérebro responda a muitos cenários diferentes. Uma vez que as entradas e saídas desejadas são selecionadas, o software criará a estrutura do seu cérebro da rede neural e você pode começar a treiná-la. Uma parcela dos dados coletados é reservada e usada para treinar e testar a precisão do seu cérebro artificial, você verá que a saída desejada começa a estar de acordo com os dados de teste que aprende. Uma vez concluído este processo, você poderá exportar o cérebro artificial estruturado na forma de uma DLL que será usada pela MetaNeural EA. Uma vez que o cérebro é construído, treinado, testado e exportado como uma DLL, você pode começar a negociar com um cérebro de rede neural automatizado que verá padrões complexos que são impossíveis para um ser humano alcançar. Obtenha o Metaneural EA FREE agora, financiando uma conta na FinFX com qualquer quantidade e usando nosso serviço de copiadora comercial para refletir nossas tradições vencedoras profissionais em sua conta. Depois de 50 lotes completos são negociados, você receberá o EA Metaneural com funcionalidade completa para LIVRE. As contas devem ser financiadas com o link fornecido na seção de preços do site Metaneural. Coloque esses arquivos nas seguintes pastas no Metatrader: Expert Advisor - Metatrader 4experts Indicador do coletor (DatacollectorV2a) - Metatrader 4expertsindicators Indicador de rede neuronal (Metaneural NN Indicator) - Metatrader 4expertsindicators MQLLock e MT4NSAdapter Arquivos DLL - Metatrader 4expertslibraries Você precisará instalar o Neurosolutions 6 e Visual Studio 6 para o trabalho, as instruções sobre essas instalações podem ser encontradas no manual detalhado anexado a esta publicação. Você deve ler o manual Sim, ele pode ser aplicado em várias moedas simultaneamente porque pode ser treinado em cada moeda individualmente e uma estrutura de rede neural pode ser criada para cada moeda. Eu diria que a única dependência do corretor seria a integridade de seus preços, quanto mais estáveis ​​e consistentes, melhorariam os dados de treinamento e, posteriormente, os negócios. Não foram escalar necessariamente, de modo que a velocidade de execução não é muito importante. Obrigado pelo seu interesse. Parabéns pelo desenvolvimento de um sistema que ofereça retornos saudáveis. Sempre melhor do que imaginar EAs que normalmente acabam explodindo a conta. Eu sou um membro comercial, compartilhando meu sistema Fibonacci Makeover (ForexFibs) aqui para que eu possa entender por que você está oferecendo uma EA gratuita. A minha pergunta é que esta EA pode ser aplicada em várias moedas, pois esta é baseada em redes neuronais reais É dependente do corretor e velocidade de execuçãoSnowCron Neural Networks para FOREX Trading Neste artigo: um exemplo de uso do nosso software Neural Networks para criar um neural completo Sistema de comércio de rede. Este exemplo usa a linguagem de script incorporada do Cortex. Então leia o guia de linguagem de script primeiro. Usando Redes Neurais para criar FOREX Trading Strategy Neste tutorial on-line gratuito você encontrará o ciclo completo de uso de redes neurais (Cortex Neural Networks Software) para negociação Forex (ou negociação no mercado de ações. A idéia é a mesma). Você aprenderá como escolher entradas para as redes neurais artificiais. E como decidir o que usar como saída. Você encontrará um exemplo de um script pronto para usar que permite realizar a otimização das redes neurais tanto da estrutura da Rede Neural (número de neurônios) quanto do sistema de negociação forex (stop loss etc.) Finalmente (a parte que não está presente em A maioria dos tutoriais), você aprenderá o que fazer a seguir. Afinal, o Cortex Neural Networks Software não pode fazer negócios em tempo real, você precisa usar algo como Trade Station, MetaQuotes ou MetaTrader. Como transportar o sistema de negociação FOREX da Cortex para sua plataforma de negociação favorita Você tem que lidar com DLLs, controles ActiveX e programação de baixo nível. A resposta é NÃO. O software Cortex Neural Networks vem com o recurso fácil de usar que permite que você porta facilmente a rede Neural resultante (treinada) para a linguagem de script da sua plataforma de negociação. Sem DLLs, DDE, ActiveX ou quaisquer outras soluções de baixo nível - tudo é simples e simples. Nota importante: este não é um tutorial sobre o comércio. Em vez disso, ele informa como usar o software Cortex Neural Networks. Mas você ainda precisa inventar seu próprio sistema comercial. Aquele que usamos aqui é apenas um ponto de partida, e não deve ser usado como uma estratégia de negociação forex como está. A idéia deste texto é ensinar você a criar sistemas de negociação baseados em NN e portá-los para a plataforma comercial escolhida. O exemplo é, no entanto, ovesimplificado, e só pode ser usado como ilustração dos princípios de negociação. Da mesma forma, o sistema de negociação MACD, que pode ser encontrado em muitos tutoriais, já não está funcionando bem (como os mercados mudaram), mas ainda é um bom exemplo de usar indicadores de negociação mecânica. Em duas palavras: faça sua própria análise. Outra nota importante: o tutorial usa exemplos, muitos deles. Para tornar sua vida mais fácil, incluí todos eles, não apenas fragmentos. No entanto, torna o texto muito mais longo. Além disso, eu estou indo do primeiro, desajeitado, sistema de comércio forex. A mais avançado, explicando sempre o que melhorou e por quê. Seja paciente ou passe diretamente para a seção que você precisa. Nota importante final: o código não é algo esculpido em pedra, ele pode mudar enquanto este texto foi escrito. As versões finais dos arquivos de script estão incluídas no arquivo Cortex. Armadilhas de FOREX COMPRAR VENDER Sinais: O que há de errado com exemplos simples No guia de usuários do software Cortex Neural Networks, usamos um exemplo simples de uma Rede Neural Afifficial. Prevendo o preço do estoque GENZ. Para descobrir o que é errado com esta abordagem, vamos fazer o mesmo exemplo simples, usando MSFT. TXT, em vez do GENZ. TXT (use 800 registros no conjunto de aprendizado, como MSFT. TXT é um pouco mais curto, então GENZ. TXT). Simplesmente não funcionaria Porque o motivo se tornará evidente, se você se perguntar: qual é a razão pela qual a previsão da rede neural de valores futuros pode ser feita primeiro. A resposta é: é aprender a fazer o que é chamado de reconhecimento de padrões de redes neurais. Para reconhecer padrões, e se houver uma lógica oculta nesses padrões, então mesmo um novo padrão (com a mesma lógica) será reconhecido. Isso é um truque - com a mesma lógica. Não há nem um, mas três problemas aqui. Em primeiro lugar, se você olhar para o preço das ações da Microsofts, você notará que estava indo na parte de aprendizagem de nossos dados, e de lado - na parte de teste. Portanto, é possível que a lógica tenha mudado. Em segundo lugar, e ainda mais importante - QUAL É O PADRÃO Você vê, se ensinamos a rede neural no intervalo de 10 a 100, e depois apresentamos algo na faixa de 1 a 3 - são padrões diferentes 10, 20, 30 e 1, 2, 3 se parecem com o humano porque - PORQUE - temos essa capacidade de dividir por dez, quando apresentado com números que terminam com zero. É o que se chama pré-processamento dos dados e, por padrão, o NN não pode fazê-lo. Podemos ensiná-lo. Claro. O que é EXACTAMENTE, precisamos ensiná-lo. Este é o terceiro e o mais importante. Nós não precisamos da previsão de preços. Não nos importa O que precisamos é FOREX comprar sinais de venda. Agora, espere um minuto Precisamos de ter a nossa contribuição (aprendendo e testando) no mesmo intervalo, e precisamos de b) para poder tomar decisões comerciais com base nisso, não é o que chamamos de indicador Bingo Então, isso é O que vamos fazer - vamos construir um indicador, para alimentá-lo para o NN como uma entrada, e vamos tentar obter uma previsão do valor do indicador, e não o preço do estoque sem valor Em nosso primeiro exemplo, vamos carregar estoque Citações do disco, abra o arquivo Neural Network e inicie o aprendizado - tudo em um modo automatizado. Crie um novo arquivo de script (ou abra o que veio com o arquivo Cortex Neural Networks Software) e ligue para estocasnn. tsc. Em primeiro lugar, precisamos baixar os valores de preço do arquivo MSFT. TXT. Vamos usar o indicador CLV (veja abaixo), mas para o calcular, precisamos de valores ajustados por divisão para Alto e Baixo, não apenas para fechar. Aqui é como obtê-los. Stocknn. tsc, parte 1 A primeira linha atribui o caminho para a variável strStockPath, é claro, você terá que editá-la, se seu arquivo de dados estiver localizado no diretório diferente. Na segunda linha, especificamos que esse caminho não é relativo (o relativo à localização do arquivo Cortex. exe). O TABLELOADER recebe o caminho, a seqüência vazia para a linha de início, 1 - para ignorar a primeira linha (nomes das colunas), parte da linha do rodapé dos arquivos (a última linha no MSFT. TXT não contém dados), também é instruída Para carregar a coluna número 0 (e chamar arrDate), 2 (arrHigh), 3 (arrOow), 4 (arrC) e 6 (arr Close). Para obter uma descrição completa do TABLELOADER, consulte o guia de referência SLANG. Então, calculamos a divisão, dividindo o Fechar ajustado por fechar e use esse valor para ajustar baixo e alto. O arquivo MSFT. TXT contém os mais novos dados PRIMEIRAMENTE, enquanto nós os queremos DURAMENTE. Em seguida, precisamos criar um indicador. Digamos, será um indicador de Close Location Value, embora na vida real provavelmente use mais de um indicador como entrada NN. O indicador de Valor de localização de fechamento é calculado como CLV ((Close - Low) - (High - Close)) (High - Low), onde Close, Low e High são para o intervalo, não necessariamente para uma única barra. Note-se que queremos no intervalo 0-1, para facilitar a normalização para a nossa gama NNs (que é, novamente, 0-1). Stocknn. tsc, parte 3 Em seguida, precisamos criar um arquivo de atraso. Permite usar atrasos iguais a 1, 2. 9 (Para obter detalhes sobre as funções do arquivo, consulte o guia de referência SLANG). Observe que a caixa de diálogo Cortexs NN pode produzir atrasos simples automaticamente (você pode usar o botão Gerar lag). Mas, mais tarde, neste texto, vamos trabalhar com atrasos complexos (o que significa que eles não são 1, 2, 3. mas 1, 3, 64), então precisamos criar o código que pode lidar com essa tarefa em De forma mais flexível. Stocksnn. tsc, parte 4 Tendo o arquivo de atraso, estamos prontos para criar nossa primeira rede neural. Esta função requer muitos parâmetros, então fique atento. No entanto, o código é realmente simples. Por sinal, a maioria deste código pode ser removido, se você acha que pode lidar com números, em vez de nomes significativos em seu código, no entanto, essa seria uma prática de codificação muito ruim. Stocknn. tsc, parte 5 Agora, depois de ter uma rede neural e o arquivo atrasado com dados, precisamos ensinar a rede. O arquivo de atraso (msftind. lgg) possui 1074 registros, por isso é razoável usar 800 como um conjunto de aprendizado e o restante 274 como um conjunto de testes. Você pode, claro, abrir um arquivo de rede e clicar no botão Executar na guia Aprendizagem. Mas, como esta é uma introdução à programação avançada de software da Cortex Neural Networks, podemos usar linguagem de script embutida SLANG em vez disso. O código a seguir exibe a caixa de diálogo modal com configurações ann NN. Note-se que, se você quiser ter um privilégio de clicar no botão Executar, você precisa alterar o stocknn. tsc, parte 6 O bStartLearning pode ser 0, caso em que a caixa de diálogo aguardará sua entrada, ou 1, então a aprendizagem Começará de forma automática. O bResumeScript, se for igual a 1, retomará o script, se você fechar a caixa de diálogo clicando no botão OK. O bReset é usado para redefinir a rede antes que a aprendizagem comece. Execute o script e aguarde até que o contador de épocas ultrapasse 1000 e, em seguida, clique em Parar. Vá para a guia Aplicar e clique em Aplicar. Isso executará todo o conjunto de dados (aprendizado e teste) através do NN e crie o arquivo. APL, contendo tanto a entrada-saída original quanto a previsão gerada pelo NN, desta forma você pode facilmente traçá-los e compilar uns contra os outros . Vá para a guia Saída, selecione o arquivo msftind. apl, clique em Procurar arquivo, selecione os campos e, em seguida, selecione o número na caixa de listagem esquerda e (mantendo pressionada a tecla CTRL enquanto seleciona com o mouse) Clv e NN: Clv no Caixa de listagem direita. Clique em Gráfico para ver como é boa a nossa previsão. Bem. É mais ou menos bom, do que podemos dizer olhando para ele. Ainda assim, nada extraordinário. Este foi apenas um exemplo do que você pode fazer com scripts SLANG e como automatizar as tarefas de rotina do Cortexs. No entanto, até agora, não fizemos nada que você não pudesse fazer à mão. Bem. Quase nada, porque se você quiser criar um arquivo de atraso personalizado, com, digamos, Clv-100, Clv-50, Clv-25. Colunas, então você terá que usar SLANG (ou Excel.), Porque você não pode fazer no Cortex sem scripts. Estratégia de negociação FOREX: o que otimizar Aqui está o nosso próximo problema. Precisamos de uma previsão bem parecida, ou precisamos do que podemos usar para trocar com lucro. A questão parece estranha, mas apenas pense por um momento. Digamos que temos uma ótima previsão de 1 hora. 95 precisas. Ainda assim, até onde o preço pode ir em uma hora. Não muito longe, tenho medo. Compará-lo com a situação, quando você tiver uma predição bastante imprecisa de 10 horas. Será melhor Para responder a esta pergunta, precisamos realmente negociar, uma comparação simples dos erros médios produzidos pelos dois NNs não ajudará. A segunda parte (do mesmo problema) está na forma como definimos uma boa previsão. Digamos que temos uma rede, que produz a previsão, que é 75 precisas. Compará-lo com o NN, que está produzindo uma previsão precisa e 100. O último é melhor. Agora, DIVIDE a saída (predição) do NNR de 100 precisos em 10. Teremos uma rede MUITO imprecisa, pois seu sinal está longe do sinal que usamos como saída desejada. E, no entanto, pode ser usado da mesma forma que usamos 100 NN precisos, tudo o que temos a fazer é multiplicá-lo por 10 Veja, o NN é criado, ajustando o erro quadrático médio e não a correlação, pelo menos em Teoria, um NN melhor pode mostrar resultados ruins, quando usado para a negociação Forex real. Para resolver esse problema, precisamos testar nossos NNs usando a negociação e usar os resultados dessa negociação (lucro e redução) para decidir se esta NN é melhor do que a outra. Vamos fazer isso. Vamos criar um programa, que pode ser usado para ajustar o NN, e desta vez, por ajuste fino, iremos significar resultados comerciais. Neural Network Trading: Poucas notas curtas Em primeiro lugar, no nosso exemplo acima, a aprendizagem automática nunca irá parar, porque não especificamos nenhum critério de parada. No diálogo, ou na função CREATENN, você pode fornecer o min. Erro (quando o NN o atinge, ele pára e, se bResumeScript estiver definido como 1, a caixa de diálogo será fechada e o script será retomado). Também pode fornecer o número máximo de épocas, ou ambos. Eu não estou usando isso no exemplo abaixo, pelo menos nem sempre, porque estou planejando assistir a aprendizagem e clicar em STOP quando penso que o NN está pronto. Se quiser fazê-lo no modo totalmente automático, preste atenção a esses parâmetros. Segundo. Uma das maneiras de tornar uma rede menor, mais rápida e precisa é começar com a rede pequena e aumentar o tamanho, neurônio por neurônio. Obviamente, o número de neurônios de entrada é determinado pelo número de colunas de dados de entrada (mas podemos também variá-los) e o número de neurônios de saída deve ser igual ao número de colunas de dados de saída (geralmente um, mas não necessariamente ). Isso significa que precisamos otimizar o número de neurônios na (s) camada (s) oculta (s). Além disso, como mencionei, não sabemos quais dados usar. Will Clv-15 (15 dias atrasados) aumentam a precisão de nossa predição Precisamos de Clv-256 Será melhor usar os dois no mesmo NN, ou vai adicionar Clv-256 arruinar nosso desempenho Usando ciclos aninhados para tentar diferentes Parâmetros de entrada, você pode: criar o NN, da mesma forma que o fizemos para os dados do estoque (deixe-me repetir, para o NN, não há diferença entre os estoques e FOREX, aconteceu que eu tenho um par de arquivos de dados de alta qualidade para FOREX que eu quero processar, enquanto escrevo este texto). Experimente diferentes combinações de atrasos. Experimente diferentes números de neurônios na camada oculta. . E diferentes combinações de diferentes indicadores. . e assim por diante. No entanto, se você tentar todas as combinações possíveis de todos os parâmetros possíveis, você NUNCA obterá seus resultados, independentemente da rapidez com que seu computador esteja. Abaixo, usaremos alguns truques para reduzir os cálculos ao mínimo. Por sinal, pode parecer que, se você começar de um neurônio escondido, então eleva-o para 2, 3 e assim por diante, e em algum momento o erro (qualidade da previsão) ou o lucro (se você testar o NN por Negociação usando) começará a diminuir, então você tem o seu vencedor. Infelizmente, não posso provar que, após o primeiro pico de desempenho, não pode haver um segundo. Isso significa que o erro pode ser igual a 100, 30, 20, 40, 50 (foi apenas no mínimo, à direita) e depois 30, 20, 10, 15. (o segundo mínimo). Nós apenas temos que testar todos os números razoáveis. Terceiro. A otimização é uma espada de dois gumes. Se você otimizar demais o seu código, pode não funcionar fora dos dados que você usou para ajustá-lo. Eu farei o meu melhor para evitar essa armadilha. Se você deseja fazer otimizações adicionais para seu código ou NN, aconselho você a fazer uma pesquisa na Internet, para saber mais sobre problemas ocultos dessa abordagem. Além disso, vou prestar atenção à suavidade da curva de lucro. O lucro que parece 0, -500, 1000, -100, 10000 pode ser ótimo, mas o lucro 0, 100, 200, 300, 400. é melhor, pois é menos arriscado. Podemos conversar sobre isso mais tarde. Finalmente, para este exemplo, vamos usar o FOREX, em vez dos preços das ações. Do ponto de vista do NN, não há diferença, e do meu ponto - Forex é muito mais divertido de negociar. Se você preferir ações, o código pode ser facilmente modificado. Uma Estratégia de Negociação FOREX para jogar com Primeiro, vamos criar um protótipo do nosso código, que pode ser facilmente otimizado no futuro. Será um sistema de negociação, que usa uma Rede Neural para negociar e produz um gráfico (lucro contra o número comercial). Também calculará a redução, como medida de robustez do nosso sistema comercial. Forexnn01.tsc, parte 1 A principal diferença aqui é que usamos funções, em vez de colocar todo o código no bloco principal do programa. Desta forma, é muito mais fácil de gerenciar. Em segundo lugar, temos uma função TestNet. Estou usando um algoritmo de negociação muito simples. O indicador CLV está limitado ao intervalo de 0 a 1 (nossa versão do CLV é), então, quando o indicador cruza o dBuyLevel (veja o código acima), estou comprando, quando está cruzando o dSellLevel, estou vendendo. Obviamente, não é a melhor estratégia de negociação, mas fará para o nosso propósito (apenas por enquanto). Se você deseja aprimorá-lo, aqui estão alguns ponteiros. Primeiro, você pode querer ter um sistema, que não é SEMPRE no mercado. Em segundo lugar, você pode querer usar mais de um indicador como entradas e, talvez, mais de um NN, para que a decisão de negociação seja feita com base em poucos indicadores previstos. Vamos adicionar algumas melhorias ao algoritmo de negociação mais tarde. Usamos alguns pressupostos padrão da negociação FOREX: spread é de 5 pontos, leverade é 100, min. Muito é 100 (mini-FOREX). Vamos dar uma olhada no nosso sistema comercial. Mais uma vez, é uma simplificação excessiva. Uma nota importante: o TestNn () é chamado de último e tem acesso a todas as variáveis ​​que foram criadas nesse ponto. Então, se você vir uma variável que estou usando, sem inicializar, isso provavelmente significa que foi inicializado em NewNn (), TeachNn () ou em alguma outra função chamada antes de TestNn (). Para facilitar as coisas, os comentários são colocados no código. Forexnn01.tsc, parte 2 Poucas palavras sobre a redução. Existem algumas maneiras de calculá-lo, e estamos usando o que considero o mais honesto. A redução é uma medida de instabilidade do nosso sistema. O que é uma chance, que vai perder dinheiro. Digamos que o valor inicial é de 1000. Se o lucro for 100, 200, 300, 400, o recuo é 0. Se for 100, 200, 100, então a retirada é de 0,1 ( 10), já que acabamos de perder um valor, igual a 110 do depósito inicial (de 1200 a 1100). Eu recomendaria fortemente o uso de sistemas de negociação com grandes descontos. Além disso, aqui eu uso um drawdown, que é para ser usado com tamanho de lote variável. No entanto, nas amostras reais, que vêm com o livro eletrônico, você verá outra versão: como você pode ver, aqui sempre usamos 1000 (a quantidade inicial) para calcular a redução. A razão é simples: sempre usamos o mesmo tamanho de lote (sem gerenciamento de dinheiro ainda), então não há diferença, quanto dinheiro acumulamos em nossa conta, um lucro médio deve ser constante. O pior cenário possível neste caso parece assim: desde o início (1000 em conta) estamos perdendo dinheiro. Se usarmos 1000 para calcular a retirada, obteremos a pior redução. Isso nos ajudará a não nos enganar. Por exemplo, digamos, trocamos por algum tempo, e nós temos 10.000 em nossa conta. Então perdemos algum dinheiro, e agora temos 8.000. Então recuperamos, e conseguimos 12 mil. Bom sistema comercial Provavelmente não. Vamos repetir a lógica novamente, pois é muito importante (e será cada vez mais importante, quando começarmos a gerir dinheiro). Nós trocamos usando lotes de tamanho fixo. Então, estatisticamente, não há garantia de que a perda máxima não acontecerá no início, quando nós só possuímos 1000. E se isso acontecer, teremos -1,000 (10 000 - 8,000), então o sistema comercial provavelmente também será arriscado. Quando falamos sobre o gerenciamento de dinheiro (provavelmente, não neste texto), teremos que usar uma abordagem diferente para o cálculo de retirada. Observe que, neste sistema comercial, estou usando o pior cenário possível: estou comprando usando High e vendendo usando Low. Muitos testadores não seguem essas regras e criam sistemas de negociação, que funcionam bem em dados históricos. Mas na vida real, esses sistemas de negociação têm desempenho muito fraco. Por que dê uma olhada na barra de preços. Tem Open, High, Low e Close. Você sabe, como o preço estava se movendo dentro da barra No. Então, digamos, seu sistema de negociação gerou um sinal de compra, na parte inferior da barra de preços (se dLow Note que eu estou usando dLotSize igual a 0.1 lot (100). Obviamente, na negociação real, você se beneficiará muito, se o tamanho do lote for calculado dependendo do dinheiro que você tenha, algo como: forexnn01.tsc, parte 3 No entanto, estamos fazendo testes aqui, não negociando. E para testar, nós Precisa, entre outras coisas, de ver quão suave é a curva de lucro. Isso é muito mais fácil de fazer se o tamanho do lote for o mesmo (na situação ideal, para dLotSize 100, obteremos uma linha reta, com uma inclinação positiva, enquanto em Caso do tamanho do lote ajustável, obteremos um expoente, isso é muito mais difícil de analisar). Mais tarde, neste texto, aplicaremos regras de gerenciamento de dinheiro ao nosso sistema comercial, mas ainda não. Depois de terminarmos com a última parte do nosso Função de teste, vamos percorrer o resto do código. A seguinte função cria um indicador CLV. É preciso E intervalo como parâmetro, o que significa que podemos chamá-lo muitas vezes, durante a otimização, passando números diferentes. Observe que estou usando o NN que funciona no intervalo de 0 a 1. Os dados podem ser normalizados, é claro, mas optei por dividir o indicador em 2 e adicionar 0,5, de modo que esteja no intervalo de 0 a 1. Forexnn01.tsc, parte 4 Para fazer um arquivo de atraso, podemos usar a função CREATELAGFILE. Alternativamente, podemos fazê-lo fornecendo explicitamente todo o código necessário. Nesse caso, temos mais controle, e vamos precisar disso, se começarmos vários números de colunas atrasadas e assim por diante. Forexnn01.tsc, parte 5 O parâmetro nRemoveFirst é importante. Muitas funções, como indicadores, médias móveis, geradores de atraso, para esse assunto, não funcionam bem dentro dos primeiros registros do conjunto de dados. Digamos que temos MA (14) - o que irá colocar nos registros 1 - 13 Então, nós escolhemos simplesmente remover os primeiros registros (não confiáveis). Para o NewNn, bem como para todas as funções deste programa, precisamos passar como parâmetros apenas o que pode ser alterado durante o processo de otimização. Por exemplo, não é necessário passar um salto antes do parâmetro, pois é sempre o mesmo. Forexnn01.tsc, parte 6 A função TeachNn simplesmente exibe a caixa de diálogo NN. Forexnn01.tsc, parte 7 Finalmente, precisamos de uma função de gráficos. Não é obrigatório, mas é sempre uma boa idéia ver como é a nossa linha de lucro. O código a seguir usa o XML para produzir um gráfico, então é uma boa idéia ler o tutorial. Alternativamente, você pode desenhar o gráfico, em vez de salvá-lo em um arquivo. Para fazê-lo, use uma das amostras, que estão no diretório de amostras. Finalmente, você pode modificar o código, produzir HTML, em vez de XML. O HTML é mais fácil de aprender, mas o próprio código será um pouco menos legível. Forexnn01.tsc, parte 8 Compile and Run the script. Bem. Como esperado, o uso de 7 horas como intervalo para o CLV produziu resultados muito fracos: FOREX Estratégias de negociação e otimização O motivo dos resultados ruins é bastante óbvio: usamos os níveis Interval, Stop Loss, buy and sell e outros parâmetros que foram Puramente aleatório - acabamos de escolher primeiro que veio em mente E se tentarmos poucas combinações Sinais de negociação FOREX: O que otimizar Antes de tudo, ao superestimar os níveis de compra e venda, podemos arruinar nossa performance futura. No entanto, ainda podemos sintonizá-los, especialmente, se o desempenho for próximo de valores próximos de limites de compra e venda. Por exemplo, se tivermos -10 lucros no limite de compra igual a 0,3 e 1000 ganhos quando é igual a 0,35, então provavelmente há uma coincidência de sorte e não devemos usar 0,35 para o nosso sistema comercial, já que no futuro provavelmente não acontecerá novamente. Se, em vez disso, temos -10 e 10 (em vez de 1000), pode ser mais seguro de usar. Geralmente, nosso sistema de negociação deve ser construído para o cenário WORSE possível, como se durante a negociação real o desempenho fosse melhor, então, durante o teste, vamos sobreviver, mas não o contrário. Podemos variar o valor para o intervalo do indicador, desde que possamos negociações suficientes, para que possamos estar confiantes, em termos de estatísticas, no desempenho de um sistema. Nós certamente podemos variar o número de neurônios, eu não acho que ele pode ser simplificado com facilidade. Podemos variar o número de entradas e atrasos para as entradas. É possível superestimar isso, mas não é provável que aconteça. E, claro, podemos tentar diferentes indicadores. Sinais FOREX precisos: como otimizar Como já foi mencionado, se começarmos a tentar todas as combinações possíveis, isso levará uma eternidade. Então, vamos enganar. Vamos criar conjuntos de parâmetros pré-definidos, que pensamos serem razoáveis, e passá-los para o programa. Para fazer o menor número possível de cálculos, note-se que o Clv-1 e o Clv-2 são, provavelmente, importantes, mas e o Clv-128 E - se já possuímos o Clv-128, precisamos do Clv-129. Provavelmente, não. Então, vamos ter algo como Clv-1, Clv-2, Clv-4, Clv-8. Clv-128 com apenas algumas variações, o que tornará o nosso tempo de cálculo mais vezes menor. FOREX Negociação de sistema profissional: pode funcionar em tudo o que é exatamente o que queremos prever? Até este ponto, usamos um gráfico de 1 hora para EURUSD, e estávamos pregando os próximos bares CLV. Será que o CLV2 será melhor? O que há no CLV3 Além disso, especialmente considerando o mau desempenho do nosso primeiro sistema comercial, seria bom saber que, pelo menos no mundo ideal, o objetivo (negociação rentável) pode ser alcançado. Para responder a essas perguntas, criamos um programa de teste simples. Nós assumimos que nossa predição é 100 precisa e, com base nessa suposição, usaremos o CLVN, e não o NN previsto. Isso é certo - vamos tirar dados do futuro e usá-los em vez da previsão do NN. Esta abordagem não funcionaria na vida real, é claro, mas em leats, isso nos dará algumas idéias sobre o que esperar. Ao analisar os resultados, lembre-se de que não estamos usando qualquer gerenciamento avançado de dinheiro, nosso tamanho de lote é definido como um mínimo de 100. Se você usa tamanhos de lote variáveis, os resultados serão dramaticamente diferentes. Mas, mesmo com um tamanho muito definido para 0.1, podemos ver (abaixo) que obter a informação do futuro é um comerciante final de grama de sementes. Forexnn02.tsc, parte 1 Você já conhece esse código, ele foi usado em FOREXNN01.TSC. Ele lida com o carregamento de dados. A única diferença é na parte que obtém a lista de arquivos no diretório de imagens e exclui todos os arquivos com a extensão. PNG. A razão para este código é simples: durante nossos testes, vamos criar muitos - podem ser, milhares - arquivos de imagem. Nós não queremos que eles se deslocassem depois que terminarmos. Então, no início do script, estamos excluindo imagens, criadas por outros scripts. Forexnn02.tsc, parte 2 Apenas alguns comentários. Não queremos tentar todos os valores possíveis para, por exemplo, o intervalo CLV. Em vez disso, podemos criar uma matriz, que contém apenas valores que queremos testar. Então (veja abaixo) iremos atravessar esta matriz. Parar as perdas são parte importante de qualquer estratégia de negociação, então eu decidi também alterá-las. É uma idéia perigosa, no entanto, pois é fácil superestimar o sistema. Estou planejando testar diferentes valores para comprar e vender níveis, mas será feito em ciclo, sem usar arrays. Ao contrário do nosso exemplo anterior, queremos ter um grande arquivo XML, contendo muitas imagens. Para fazê-lo, movi o código, que está formando o cabeçalho XML e o rodapé fora da função Gráfico. Leia um dos tutoriais XML online para obter detalhes. Note-se que estou usando 0 como o primeiro atraso, o que significa que, primeiro, estou testando o indicador (CLV) que não foi deslocado do futuro. Apenas para ter uma idéia, como seria bom o sistema comercial sem NN (horrível, é a palavra certa. Está perdendo todo o dinheiro). Cortex usa o controle do Internet Explorer para exibir páginas XML. Quando as páginas crescem, é preciso muita memória. Se o seu computador não puder lidar com isso, considere criar várias páginas XML ou HTML, em vez disso. No caso de forexnn02, não deve ser um problema, já que a página é relativamente curta. Alternativamente (é o que estou fazendo nos scripts mais adiante neste texto), crie um arquivo XML, mas não o abra do Cortex. Abra-os usando o Internet Explorer em vez disso - ao contrário do controle do IE, o Internet Explorer não tem o problema de memória. Agora, o código que está tentando diferentes combinações de parâmetros. Forexnn02.tsc, parte 3 Aqui, nós estamos usando ciclos aninhados. Em cada ciclo, estamos assidindo alguma variável (por exemplo, nInterval para o ciclo externo). Desta forma, o ciclo atribuirá valores de todos os elementos de uma matriz correspondente, uma de cada vez. Então DENTRO, o ciclo interno é usado, e assim por diante, de modo que todas as combinações de todos os elementos da matriz sejam testadas. No ciclo mais íntimo, eu estou chamando a função Test (), para testar comércio e Chart () para adicionar uma nova imagem a uma lista de imagens salvas no disco. Observe que este gráfico () não mostra nenhuma imagem, até que todos os ciclos sejam concluídos. As funções Test () e CreateClv () são quase iguais às do exemplo anterior. A única diferença real deve-se ao fato de que é chamado mais de uma vez. Para fazê-lo, eu estou chamando ARRAYREMOVE para arrumar arrays. Além disso, observe que estamos apenas criando gráficos para as combinações de parâmetros, que produzem sistema de negociação com lucro positivo. Caso contrário, chamamos continuar, para ignorar a função Gráfico (). Finalmente, temos Take Profit agora, então nosso sistema comercial pode ser um pouco mais flexível. Forexnn02.tsc, parte 4 A função Chart () foi dividida em duas partes. O cabeçalho eo rodapé devem ser gravados no arquivo XML apenas uma vez, então eles foram movidos para a parte principal do programa. Além disso, estou usando o contador, para salvar arquivos sob os diferentes nomes. A informação sobre os parâmetros está escrita no cabeçalho de uma imagem, para que possamos facilmente ver qual delas é. Finalmente, as imagens só são salvas para configurações vencedoras, o que significa que o saldo no final deve ser mais, então, no início. Forexnn02.tsc, parte 5 Execute o programa (demorará algum tempo para ser concluído). Você acabará com uma grande página XML com imagens, uma para cada configuração vencedora. Alguns dos resultados são ótimos, no entanto, à medida que usamos dados do futuro, esse sistema não funcionará na vida real. Na verdade, se você olhar para a função Test (), notará que o ciclo pára antes de alcançar o último elemento de arrClose: for (nBar nRemoveFirst 1 nBar ESTE É C, apenas um exemplo. Como você pode ver, o código É realmente simples. Agora, vamos fazer o mesmo usando o script SLANG. Como em exemplos anteriores, manteremos a estrutura geral do código, de modo que este exemplo pareça familiar. A única diferença é que em vez de usar a função APPLYNN embutida , Nós chamamos a função do nosso próprio. O código que não usamos (como os ciclos) é comentado, mas não removido. Observe que a lógica por trás disso foi discutida no artigo de Neural Networks e Stock Forex Trading. Em resumo, o O resultado deste script é formateado para ser compatível com o mecanismo de script MQL MetaTraders. O MetaTrader é uma plataforma de negociação que usamos, se você quiser algo diferente, como a TradeStation, por exemplo, você terá que alterar o código para cumprir sua sintaxe. Então, nos capítulos seguintes, vamos inse Este código no indicador MetaTraders e para usá-lo para negociar. Script de portar para a plataforma de negociação O próximo passo não é realmente necessário, mas é algo que pode ser útil. Nós vamos criar uma versão de um arquivo tsc (um acima), mas desta vez, usaremos SLANG (linguagem de script Cortex) para emular a função APPLYNN. A razão é que, no próximo capítulo, vamos transferi-lo para a linguagem de script de uma plataforma de negociação MetaTrader, por isso é uma boa idéia garantir que tudo funcione. After we run this function, we discover, that the result it produces is the same, as the forexnn05a produced, which means the code works fine. Note, that there is a difference at the beginning of the charts, as our NN does not try to process the data at the beginning (where lag is incomplete), while the built-in NN does not know about this problem. Of course, it doesnt affect the result, as the beginning of the chart is ignored by using the nRemoveFirst parameter in our script (set to 200, which is guaranteed to be larger, then our lag). Using third-party trading platform We have the NN that (more or less) can be used. We have the script, implementing this NN without calls to the Cortex-specific NN functions. Now we are going to port it to the trading platform that can be used for the real trading, which means it can contact brocker, place orders and earn (or loose) money. As a trading platform, I am going to use MetaTrader Disclaimer: I am not related to MetaQuotes in any way. I do not work for them, I am not their affiliate and so on. I use MetaTrader, ONLY because I like it. I find this program user-friendly, flexible and powerful, and not a monster. Also, it is free (compare to other packages of this class). The only (minor) problem is that it is not always easy to find the dealer using MT in your area. Then, when you do a research, you may find couple of brockers, with screenshots on their web sites, that look suspiciously familiar. Yes, they use MetaTrader, but they dont call it MetaTrader I have asked for clarification at the companys forum, and they have told me, that they dont reveal brockers using their services. Very strange. One of the brockers that is not hiding the fact they use MT, is Alpari. They will allow you to open a Demo account, so that you can trade in a real time, but without risking your money. Warning I am not going to recommeng services of Alpari. Once again, I am not being paid for that. Try their Demo account, and use your own judgement. Or you can start your own research at Internet forums. Finally, if you do not like the MT, you can probably follow the example below using TS, MS or some other trading platform. This is just an example. Our MT-based trading system will include two files, the indicator and an expert. This is the way they call it in MQL (scripting language of MT), and I am going to follow this naming convention. The indicator implements the neural network and draws a chart. An expert takes these data and does trading. As MetaTrader has a strategy tester, we will be able to test our strategy, to see how good it is. I will assume, that you are familiar with MQL programming, it is quite close to SLANG and tutorials can be found both at MetaQuotes and Alpari. Finally, I am using the code structure, that is borrowed from MetaQuotes forum, permission to use it the author of the corresponding posts had granted me permission to use fragments of his code. Also, as some of our MetaTrader code is the same for all experts and indicators, we moved it to a separate library file. MetaTraders libraries are nothing but includable files. This library takes care of synhronization, when two or more expert are trying to run in the same time, as well as of few other things. If you use MetaTrader, it will help you to create robust experts, in any case, the MQL language is easy to understand. mylib. mql, a helper library The code should look familiar, all I did was re-writing it, using slightly different language syntax of MQL. This indicator has two buffers, and draws two lines, one for the original NOC, and one for the NN-predicted NOC. For trading, you dont have to draw both indicator lines, of course (see MQL tutorials to learn how to do it), but I have decided to show them together, so you can compare. Another difference, that you should know about, is the way MT performs testing. It may, in some cases, be more accurate, then one we did (we did the worse case scenario). Of course, you can always to change the SLANG script from the examples above, to implement any logic you want. The result of our testing in MT is a bit better, then in Cortex, due to all these reasons. Keep in mind, that MT calculates the DD in a different way. I still think, that my way is better. In should be especially noted, that no additional optimization had been performed using MetaTraders optimizer. We have just plugged our MTS (mechanical trading system) in, and it worked as expected. É isso. You can now create Cortex Neural Network, optimize it to do trading, and to port it to the trading platform of your choice. Download Cortex Order Cortex View Price List Visibility is very important for this site. If you like it please link to this URL

No comments:

Post a Comment