Forex Algorithmic Trading: um conto prático para engenheiros.
Como você pode saber, o mercado cambial (Forex) é usado para negociação entre pares de moedas. Mas você pode não estar ciente de que é o mercado mais líquido do mundo.
Alguns anos atrás, impulsionados pela curiosidade, fiz os primeiros passos no mundo dos algoritmos de negociação Forex criando uma conta demo e jogando simulações (com dinheiro falso) na plataforma de negociação Meta Trader 4.
Depois de uma semana de "negociação", quase dobrava meu dinheiro. Impulsionado pelo meu próprio sucesso, cavei e, eventualmente, me inscrevi para vários fóruns. Logo, passava horas lendo sobre sistemas de negociação algorítmica (conjuntos de regras que determinam se você deve comprar ou vender), indicadores personalizados, modos de mercado e muito mais.
Meu primeiro cliente.
Por volta dessa época, por acaso, ouvi dizer que alguém estava tentando encontrar um desenvolvedor de software para automatizar um sistema comercial simples. Isso estava de volta aos dias da faculdade quando eu estava aprendendo sobre programação simultânea em Java (threads, semáforos e todo esse lixo). Eu pensei que este sistema automatizado não poderia ser muito mais complicado do que o meu curso avançado de ciências de dados funcionar, então eu perguntei sobre o trabalho e entrou a bordo.
O cliente queria que o sistema fosse construído com o MQL4, uma linguagem de programação funcional usada pela plataforma Meta Trader 4 para realizar ações relacionadas a estoque.
O papel da plataforma de negociação (Meta Trader 4, neste caso) é fornecer uma conexão com um corretor Forex. O corretor fornece uma plataforma com informações em tempo real sobre o mercado e executa suas ordens de compra / venda. Para leitores que não estão familiarizados com o comércio de Forex, aqui estão as informações fornecidas pelo feed de dados:
Através do Meta Trader 4, você pode acessar todos esses dados com funções internas, acessíveis em vários prazos: a cada minuto (M1), a cada cinco minutos (M5), M15, M30, a cada hora (H1), H4, D1, W1, MN .
O movimento do preço atual é chamado de tiquetaque. Em outras palavras, um tiquetaque é uma alteração no preço de lance ou pedido para um par de moedas. Durante os mercados ativos, pode haver vários carrapatos por segundo. Durante os mercados lentos, pode haver minutos sem um tiquetaque. O tiquetaque é o batimento cardíaco de um robô Forex.
Quando você faz um pedido através dessa plataforma, você compra ou vende um determinado volume de uma determinada moeda. Você também define os limites stop-loss e take-profit. O limite de stop-loss é a quantidade máxima de pips (variações de preço) que você pode perder antes de desistir de um comércio. O limite de lucro obtido é a quantidade de pips que você irá acumular a seu favor antes de descontar.
As especificações de negociação algorítmica do cliente eram simples: eles queriam um robô com base em dois indicadores. Para o fundo, os indicadores são muito úteis ao tentar definir um estado de mercado e tomar decisões comerciais, já que eles são baseados em dados passados (por exemplo, valor de preço mais alto nos últimos n dias). Muitos vieram integrados ao Meta Trader 4. No entanto, os indicadores de que meu cliente estava interessado vieram de um sistema de comércio personalizado.
Eles queriam trocar todas as vezes que dois desses indicadores personalizados se cruzassem, e apenas em certo ângulo.
À medida que eu resolvi as mãos, eu aprendi que os programas MQL4 têm a seguinte estrutura:
A função de início é o coração de cada programa MQL4, uma vez que é executado sempre que o mercado se move (ergo, esta função será executada uma vez por marca). Este é o caso, independentemente do prazo que você está usando. Por exemplo, você poderia estar operando no cronograma H1 (uma hora), mas a função inicial executaria muitos milhares de vezes por período de tempo.
Para contornar isso, forcei a função a executar uma vez por unidade de período:
Obtendo os valores dos indicadores:
A lógica de decisão, incluindo a interseção dos indicadores e seus ângulos:
Enviando os pedidos:
Se você estiver interessado, você pode encontrar o código completo e executável no GitHub.
Back-Testing.
Uma vez que eu construí meu sistema de negociação algorítmica, eu queria saber: 1) se estava se comportando apropriadamente, e 2) se fosse bom.
Back-testing é o processo de testar um sistema particular (automatizado ou não) sob os eventos do passado. Em outras palavras, você testa seu sistema usando o passado como um proxy para o presente.
MT4 vem com uma ferramenta aceitável para back-testing de um sistema de comércio Forex (hoje em dia, existem mais ferramentas profissionais que oferecem maior funcionalidade). Para começar, você configura seus prazos e executa seu programa sob uma simulação; A ferramenta irá simular cada tico sabendo que, para cada unidade, ele deve abrir a certo preço, fechar a um determinado preço e alcançar altos e baixos especificados.
Depois de comparar as ações do programa com preços históricos, você terá um bom senso se está ou não executando corretamente.
Do back-testing, eu verifiquei a razão de retorno do robô para alguns intervalos de tempo aleatórios; Escusado será dizer que sabia que o meu cliente não iria ficar rico com isso - os indicadores que ele havia escolhido, juntamente com a lógica da decisão, não eram lucrativos. Como amostra, aqui estão os resultados da execução do programa na janela M15 para 164 operações:
Observe que nosso equilíbrio (a linha azul) termina abaixo do seu ponto de partida.
Otimização de parâmetros e suas mentiras.
Embora o teste de back-up tivesse me desconfiado da utilidade desse robô, fiquei intrigado quando comecei a brincar com seus parâmetros externos e notei grandes diferenças na relação de retorno geral. Esta ciência particular é conhecida como otimização de parâmetros.
Eu fiz alguns testes difíceis para tentar inferir o significado dos parâmetros externos na Razão de retorno e surgiu algo como isto:
Você pode pensar (como eu fiz) que você deve usar o Parâmetro A. Mas a decisão não é tão direta como pode aparecer. Especificamente, observe a imprevisibilidade do Parâmetro A: para valores de erro pequenos, seu retorno muda drasticamente. Em outras palavras, o Parâmetro A é muito provável que a previsão excessiva de resultados futuros, uma vez que qualquer incerteza, qualquer alteração no total resultará em um desempenho pior.
Mas, de fato, o futuro é incerto! E o retorno do Parâmetro A também é incerto. A melhor escolha, de fato, é confiar na imprevisibilidade. Muitas vezes, um parâmetro com um retorno máximo mais baixo, mas uma previsibilidade superior (menor flutuação) será preferível a um parâmetro com alto retorno, mas uma previsibilidade fraca.
O único que você pode ter certeza é que você não conhece o futuro do mercado, e pensar que você sabe como o mercado vai atuar com base em dados passados é um erro. Por sua vez, você deve reconhecer essa imprevisibilidade.
Isso não significa necessariamente que devemos usar o Parâmetro B, porque mesmo os retornos mais baixos do Parâmetro A funcionam melhor do que o Parâmetro B; Isso é apenas para mostrar que os Parâmetros de Otimização podem resultar em testes que exageram os resultados futuros prováveis, e esse pensamento não é óbvio.
Considerações globais de comércio de algoritmo Forex.
Desde essa primeira experiência de negociação de Forex algorítmica, construí vários sistemas de negociação automatizada para clientes e posso dizer que há espaço para explorar. Por exemplo, recentemente construí um sistema baseado em encontrar os chamados movimentos de "Big Fish"; isto é, grandes variações de pips em pequenas e minúsculas unidades de tempo. Este é um assunto que me fascina.
Construir o seu próprio sistema de simulação é uma excelente opção para aprender mais sobre o mercado Forex e as possibilidades são infinitas. Por exemplo, você poderia tentar decifrar a distribuição de probabilidade das variações de preços em função da volatilidade em um mercado (EUR / USD, por exemplo), e talvez criar um modelo de simulação Montecarlo usando a distribuição por estado de volatilidade, usando qualquer grau de precisão você quer. Vou deixar isso como um exercício para o leitor ansioso.
O mundo Forex pode ser esmagador às vezes, mas espero que este artigo tenha dado alguns pontos sobre como ir.
Leitura adicional.
Hoje em dia, existe um vasto conjunto de ferramentas para construir, testar e melhorar as Automatizações do Sistema de Negociação: Trading Blox para testes, NinjaTrader para negociação, OCaml para programação, para citar alguns.
Eu li extensivamente sobre o mundo misterioso que é o mercado Forex. Aqui estão alguns write-ups que eu recomendo para programadores e leitores entusiasmados:
8 Tipos de Estratégias Algoritmicas de Forex.
Como prometido, aqui está a próxima parte da minha série em sistemas de negociação forex algorítmica. Certifique-se de verificar a primeira parte sobre o que você precisa saber sobre a Algo FX Trading antes de ler!
Essa abordagem comercial geralmente atrai aqueles que procuram eliminar ou reduzir a interferência emocional humana na tomada de decisões comerciais. Afinal, comprar ou vender sinais podem ser gerados usando um conjunto de instruções programadas e podem ser executados diretamente em sua plataforma de negociação.
"Amazeballs! Aqui está o meu dinheiro! Onde eu assino?"
Segure seus cavalos, jovem padawan! Coloque seu dinheiro suado de volta em sua carteira e gaste um pouco mais de tempo comprando a negociação algorítmica primeiro. Para começar, vamos dar uma olhada nas diferentes classificações desta abordagem comercial.
Estratégias de negociação algorítmica.
Existem oito principais tipos de troca de algo com base nas estratégias utilizadas. Muito esmagadora, hein? Claro que você pode misturar e combinar essas estratégias também, o que produz muitas combinações possíveis.
Uma das estratégias mais simples é simplesmente seguir as tendências do mercado, com ordens de compra ou venda geradas com base em um conjunto de condições cumpridas por indicadores técnicos. Esta estratégia também pode comparar os dados históricos e atuais para prever se as tendências provavelmente continuarão ou reverterão.
Outro tipo básico de estratégia de negociação é o sistema de reversão médio, que opera sob o pressuposto de que os mercados variam 80% do tempo. Caixas pretas que empregam esta estratégia tipicamente calculam um preço médio de ativos usando dados históricos e levam negócios em antecipação ao preço atual retornando ao preço médio.
Já tentou trocar as novidades? Bem, esta estratégia pode fazer isso por você! Um sistema de negociação algorítmica baseado em notícias geralmente é enganchado aos fios de notícias, gerando automaticamente sinais de comércio dependendo de como os dados reais se revelam em comparação com o consenso do mercado ou os dados anteriores.
Como você aprendeu na nossa lição da Escola sobre o sentimento do mercado, o posicionamento comercial e não comercial também pode ser usado para identificar os tops e os fundos do mercado. Estratégias Forex relacionadas com o sentimento do mercado podem envolver o uso do relatório COT ou de um sistema que detecta posições nítidas de curto ou longo prazo. Abordagens mais modernas também são capazes de escanear redes de mídia social para avaliar os viés de moeda.
Agora, é aqui que fica um pouco mais complicado do que o habitual. Fazer uso da arbitragem em negociações algorítmicas significa que o sistema caça por desequilíbrios de preços em diferentes mercados e faz lucro com esses. Uma vez que as diferenças de preços do forex são normalmente em micropips, você precisaria negociar posições realmente grandes para obter lucros consideráveis. A arbitragem triangular, que envolve dois pares de moedas e um cruzamento monetário entre os dois, também é uma estratégia popular nesta classificação.
Como o nome sugere, esse tipo de sistema comercial opera a velocidades rápidas, executando sinais de compra ou venda e negociações de fechamento em questão de milissegundos. Estes tipicamente usam estratégias de arbitragem ou scalping com base em flutuações rápidas de preços e envolvem altos volumes de negociação.
Esta é uma estratégia empregada por grandes instituições financeiras que são muito segredos sobre seus cargos forex. Em vez de colocar uma enorme posição longa ou curta com apenas um corretor, eles dividem seu comércio em posições menores e executá-los sob diferentes corretores. Seu algoritmo pode até permitir que essas ordens comerciais menores sejam colocadas em momentos diferentes para evitar que outros participantes do mercado descobrissem! Desta forma, as instituições financeiras podem executar negócios em condições normais de mercado sem flutuações repentinas de preços. Os comerciantes de varejo que acompanham os volumes de negociação podem ver apenas a "ponta do iceberg" quando se trata desses grandes negócios.
Se você acha que o iceberg é sneaky, então a estratégia furtiva é ainda mais furiosa! Iceberging tem sido uma prática tão comum nos últimos anos que os observadores do mercado hardcore conseguiram invadir essa idéia e chegar a um algoritmo para juntar essas ordens menores e descobrir se um grande jogador de mercado está por trás de tudo isso.
Como você provavelmente adivinhou, é preciso um histórico sólido na análise de mercado financeiro e na programação de computadores para poder projetar algoritmos de negociação tão sofisticados. Analistas quantitativos ou quants são normalmente treinados em C ++, C # ou programação Java antes que eles sejam capazes de criar sistemas de negociação algorítmica.
Não permita que isso o desencoraje! Os primeiros três ou quatro tipos de estratégias de negociação algorítmicas já devem ser muito familiares para você se você estiver negociando por algum tempo ou se você fosse um estudante diligente em nossa Escola de Pipsologia.
Fique atento para a próxima parte desta série, já que eu planejo deixar você entrar nos últimos desenvolvimentos e no futuro da negociação FX algorítmica. Até a próxima semana!
Nós somos o que repetidamente fazemos. A excelência, portanto, não é um ato, mas um hábito. Aristóteles.
O BabyPips ajuda os comerciantes individuais a aprender como negociar o mercado cambial.
Apresentamos as pessoas ao mundo do comércio de moeda e fornecemos conteúdos educacionais para ajudá-los a aprender a se tornarem comerciantes rentáveis. Nós também somos uma comunidade de comerciantes que se apoiam na nossa jornada de negociação diária.
SnowCron.
FREE E. Mail Classes.
Usando o Algoritmo Genético para criar Estratégia de Negociação FOREX lucrativa. Algoritmo Genético no Sistema de Redes Neurais do Cortex Feedforward Backpropagation Neural Network Aplicação para cálculos genéticos baseados em Forex trading.
Este exemplo usa conceitos e ideias do artigo anterior, então leia Algoritmo Genético de Rede Neural em Sistemas de Negociação FOREX primeiro, embora não seja obrigatório.
Sobre este texto.
Em primeiro lugar, leia o aviso legal. Este é um exemplo de usar a funcionalidade do algoritmo de algoritmo de algoritmo de redes nervosas Cortex, não um exemplo de como fazer negociação rentável. Eu não sou seu guru, nem eu devo ser responsável por suas perdas.
O software Cortex Neural Networks possui redes neurais, e a FFBP que discutimos antes é apenas uma maneira de escolher estratégias de negociação forex. É uma boa técnica, poderosa e quando aplicada corretamente, muito promissora. No entanto, tem um problema - para ensinar a Rede Neural, precisamos saber o "resultado desejado".
É bastante fácil de fazer quando fazemos a aproximação da função, apenas tomamos o valor "real" de uma função, porque sabemos o que deveria ser.
Quando fazemos a previsão da rede neural, utilizamos a técnica (descrita em artigos anteriores) de ensinar a Rede Neural na história, novamente, se prevermos, digamos, uma taxa de câmbio, sabemos (durante a formação) qual é a previsão correta .
No entanto, quando estamos construindo um sistema comercial, não temos idéia de qual é a decisão de negociação correta, mesmo que conheçamos a taxa de câmbio! Na verdade, temos muitas estratégias de negociação forex que podemos usar em qualquer ponto do tempo, e precisamos encontrar uma boa - como? O que devemos alimentar como o resultado desejado de nossa Rede Neural?
Se você seguiu nosso artigo anterior, você sabe, que nos enganamos para lidar com esse problema. Ensinamos a Rede Neural a fazer uma previsão de taxa de câmbio (ou taxa de câmbio), e então usamos essa previsão para fazer negociação. Então, fora da parte da rede Neural do programa, tomamos uma decisão sobre a qual a Rede Neural é a melhor.
Os algoritmos genéticos podem lidar diretamente com este problema, eles podem resolver o problema afirmado como "encontrar os melhores sinais comerciais".
Neste artigo, vamos usar o software Cortex Neural Networks para criar esse programa.
Usando o Algoritmo Genético.
Algoritmos genéticos são muito bem desenvolvidos e muito diversos. Se você quer aprender tudo sobre eles, sugiro que você use a Wikipedia, pois este artigo é apenas sobre o que o Cortex Neural Networks Software pode fazer.
Com o software Cortex Neural Networks, podemos criar uma Rede Neural que leve alguns dados, digamos, valores de um indicador, e produz algum resultado, digamos, sinais de negociação (comprar, vender, manter.) E parar a perda / tomar níveis de lucro para posições para ser aberto.
Claro, se semearmos os pesos desta Rede Neural ao acaso, os resultados comerciais serão terríveis. No entanto, digamos que criamos uma dúzia de tais NNs. Então podemos testar o desempenho de cada um deles, e escolher o melhor, o vencedor.
Esta foi a "primeira geração" dos NNs. Para continuar a segunda geração, precisamos permitir que nosso vencedor "procriar", mas para evitar a obtenção de cópias idênticas, vamos adicionar um pouco aleatório aos pesos das descentinas.
Na segunda geração, temos o nosso vencedor da primeira geração e são cópias imperfeitas (mutadas). Vamos fazer testes novamente. Teremos outro vencedor, que é melhor que qualquer outra Rede Neural na geração.
E assim por diante. Nós simplesmente permitimos que os vencedores criem, e eliminem os perdedores, assim como na evolução da vida real, e obteremos nossa Rede Neural de melhor negociação, sem nenhum conhecimento prévio do que o sistema de negociação (algoritmo genético) deveria ser.
Algoritmo Genético da Rede Neural: Exemplo 0.
Este é o primeiro exemplo de algoritmo genético, e muito simples. Nós vamos passar por ele passo a passo, para aprender todos os truques que os exemplos a seguir usarão.
O código tem comentários em linha, então vamos apenas nos concentrar nos momentos-chave.
Primeiro, criamos uma rede neural. É usar pesos aleatórios, e ainda não foi ensinado.
Então, no ciclo, fazemos 14 cópias, usando MUTATION_NN fumction. Esta função faz uma cópia de uma Rede Neural de origem, adicionando valores aleatórios de 0 para (no nosso caso) 0,1 para todos os pesos.
Mantivemos alças para 15 NNs resultantes em uma matriz, podemos fazê-lo, pois o identificador é apenas um número inteiro.
A razão pela qual usamos 15 NNs não tem nada a ver com a negociação: o software Cortex Neural Networks pode traçar até 15 linhas em um gráfico simultaneamente.
Podemos usar diferentes abordagens para o teste. Primeiro, podemos usar o conjunto de aprendizagem, tudo de uma vez. Em segundo lugar, podemos testar, digamos, 12000 resords (de 100000), e caminhar através do conjunto de aprendizagem, do começo ao fim. Isso tornará o know-how diferente, pois buscaremos redes da Neural que sejam lucrativas em qualquer parte de dados, e não apenas em todo o conjunto. A segunda abordagem pode nos dar problemas, se a mudança de dados, desde o início até o fim. Em seguida, a rede irá evoluir, obtendo capacidade de trocar no final do conjunto de dados e perdendo a capacidade de trocar no seu início.
Para resolver esse problema, vamos levar aleatoriamente 12.000 fragmentos de registros de dados e alimentá-lo para a Rede Neural.
Abaixo, adicionamos uma criança para cada rede, com pesos ligeiramente diferentes. Note-se que 0,1 para mutação tange não é a única escolha, como fato de fato, mesmo este parâmetro pode ser otimizado usando o algoritmo genético.
Os NNs recém-criados são adicionados após 15 existentes. Desta forma, temos 30 NNs em uma matriz, 15 antigos e 15 novos. Então vamos fazer o próximo ciclo de testes e matar perdedores, de ambas as gerações.
Para fazer testes, aplicamos a Rede Neural aos nossos dados, para produzir saídas, e depois chamar a função Test, que usa essas saídas para simular a negociação. Os resultados da negociação são usados para desidir, quais NNs são melhores.
Usamos um intervalo de registros nLearn, de nStart a nStart + nLearn, onde nStart é um ponto aleatório dentro do conjunto de aprendizado.
O código abaixo é um truque. A razão pela qual usamos é ilustrar o fato de que o algoritmo genético pode criar algoritmos genéticos, mas não será necessariamente o melhor e, também, sugerir que podemos melhorar o resultado, se implicarmos algumas limitações à aprendizagem processo.
É possível que nosso sistema comercial funcione muito bem em negócios longos, e muito pobre em curto, ou vice-versa. Se, digamos, os negócios longos são muito bons, esse algoritmo genético pode ganhar, mesmo com grandes perdas em transações curtas.
Para evitá-lo, atribuímos mais peso aos negócios longos em trocas ímpares e curtas em ciclos pares. Este é apenas um exemplo, não há garantia, que irá melhorar alguma coisa. Mais sobre isso abaixo, em discussão sobre correções. Tecnicamente, você não precisa fazê-lo, ou pode fazê-lo de forma diferente.
Adicione lucro a uma matriz ordenada. Ele retorna uma posição de inserção, então usamos essa posição para adicionar identificador de rede Neural, aprendendo e testando lucros para matrizes não ordenadas. Agora, temos dados para a Rede Neural atual no mesmo índice de matrizes que seu lucro.
A idéia é chegar a uma série de NNs, ordenados por rentabilidade. Como a matriz é classificada por lucro, para remover metade das redes, que são menos lucrativas, precisamos apenas remover NNs de 0 a 14.
As decisões de negociação são baseadas no valor do sinal da Rede Neural, desde este ponto de vista o programa é idêntico aos exemplos do artigo anterior.
FOREX Estratégia de Negociação: Discussing example 0.
Em primeiro lugar, vamos dar uma olhada nos gráficos. O primeiro gráfico de lucro durante a primeira iteração não é bom, como seria de esperar, a Rede Neural perde dinheiro (imagem evolution_00_gen_0.png copiada após a primeira iteração da pasta "imagens"):
A imagem com lucro no ciclo 15 é melhor, às vezes, o algoritmo genético pode aprender muito rápido:
No entanto, observe a saturação em uma curva de lucro.
É interessante também olhar para a forma como os lucros individuais mudam, tendo em mente, esse número de curva, digamos, 3 nem sempre é para a mesma Rede Neural, pois eles estão nascendo e terminaram o tempo todo:
Além disso, note que o pequeno sistema de negociação automatizado forex é pobre em transações curtas e muito melhor em longos, que pode ou não estar relacionado ao fato de que o dólar estava caindo em comparação com o euro durante esse período. Também pode ter algo a ver com parâmetros do nosso indicador (talvez, precisamos de um período diferente para shorts) ou a escolha de indicadores.
Aqui está o histórico após 92 e 248 ciclos:
Para nossa surpresa, o algoritmo genético falhou completamente. Vamos tentar descobrir o porquê, e como ajudar a situação.
Em primeiro lugar, cada geração não deve ser melhor do que a anterior? A resposta é não, pelo menos não dentro do modelo que usamos. Se tomarmos TODAS as aprendizagens definidas de uma vez, e usamos repetidamente para ensinar nossos NNs, então sim, eles melhorarão em cada geração. Mas, em vez disso, tomamos fragmentos aleatórios (12000 registros no tempo) e os usamos.
Duas perguntas: por que o sistema falhou em fragmentos aleatórios de conjunto de aprendizado e por que não usamos conjunto de aprendizado completo? Bem. Para responder a segunda pergunta, eu fiz. NNs apresentaram um grande desempenho - no aprendizado definido. E eles falharam no conjunto de testes, pelo mesmo motivo que falha quando usamos o aprendizado da FFPB. Para dizer de maneira diferente, nossos NNs se especializaram demais, eles aprenderam a sobreviver no ambiente ao qual eles estão acostumados, mas não fora dele. Isso acontece muito na natureza.
A abordagem que tomamos foi destinada a compensar isso, ao obrigar NNs a realizar bons em qualquer fragmento aleatório do conjunto de dados, de modo que, com sorte, eles também poderiam realizar em um conjunto de testes desconhecido. Em vez disso, eles falharam tanto no teste quanto no conjunto de aprendizado.
Imagine animais, vivendo em um deserto. Muito sol, sem neve. Este é um mercado de metafor para rizing, pois os nossos dados NNs desempenham o papel de meio ambiente. Os animais aprenderam a viver em um deserto.
Imagine animais, que vivem em clima frio. Neve e sem sol. Bem, eles se ajustaram.
No entanto, em nosso experimento, colocamos aleatoriamente nossos NNs em um deserto, na neve, na água, nas árvores. apresentando-lhes diferentes fragmentos de dados (aumentando aleatoriamente, caindo, plano). Os animais morreram.
Ou, de modo diferente, selecionamos a melhor Rede Neural para o conjunto de dados aleatórios 1, que, digamos, era para o aumento do mercado. Então, apresentamos, aos vencedores e seus filhos, uma queda dos dados do mercado. NNs funcionaram mal, nós melhoramos os melhores artistas, talvez, uma das crianças mutantes, que perdemos a capacidade de negociar no mercado em expansão, mas conseguiu alguma habilidade para lidar com a queda de um.
Em seguida, voltamos a mesa novamente e, novamente, conseguimos o melhor desempenho - mas melhor entre os mais pobres. Nós simplesmente não damos a nossos NNs chances de se tornarem universais.
Existem técnicas que permitem ao algoritmo genético aprender novas informações sem perder o desempenho em informações antigas (afinal, os animais podem viver no verão e no inverno, certo? Então, a evolução é capaz de lidar com mudanças repetitivas). Podemos discutir essas técnicas mais tarde, embora este artigo seja mais sobre o uso do software Cortex Neural Networks, do que sobre a construção de um sistema de negociação automatizado forex bem sucedido.
Algoritmo Genético da Rede Neural: Exemplo 1.
Agora é hora de falar sobre correções. Um algoritmo genético simples que criamos durante o passo anterior tem duas grandes falhas. Primeiro, não conseguiu negociar com lucro. Está tudo bem, podemos tentar usar sistema parcialmente treinado (foi lucrativo no início). A segunda falha é mais grave: não temos controle sobre as coisas, que esse sistema faz. Por exemplo, pode aprender a ser rentável, mas com grandes remessas.
É um fato bem conhecido, que na vida real, a evolução pode otimizar mais de um parâmetro simultaneamente. Por exemplo, podemos obter um animal, que pode correr rápido E ser resistente ao frio. Por que não tentar fazer o mesmo no nosso sistema de negociação automatizado forex?
É quando usamos as correções, que são apenas o conjunto de punições adicionais. Digamos, nosso sistema é negociado com drawdown 0.5, enquanto queremos confirmá-lo para 0 a 0.3 intervalo. Para "dizer" ao sistema que cometeu um erro, diminuímos o lucro (um usado para determinar, qual algoritmo genético ganhou) ao grau, que é proporcional ao tamanho do DD. Então, o algoritmo de evolução cuida do resto.
Existem alguns outros fatores que queremos levar em consideração: talvez queiramos ter um número de operações de compra e venda mais ou menos igual, queremos ter mais operações rentáveis, então de falhas, podemos querer que o gráfico de lucro ser linear e assim por diante.
Em evolution_01.tsc implementamos um conjunto simples de correções. Em primeiro lugar, usamos algum número grande para um valor de correção inicial. Multiplicamos isso para valores pequenos (geralmente, entre 0 e 1), dependendo da "punição" que queremos aplicar. Então, multiplicamos nosso lucro por esta correção. Como resultado, o lucro é corrigido, para refletir o quanto o algoritmo genético corresponde aos nossos outros critérios. Então usamos o resultado para encontrar uma Rede Neural de vencedores.
FOREX Estratégia de Negociação: Discutir o exemplo 1.
O exemplo 1 funciona muito melhor do que o exemplo 0. Durante os primeiros 100 ciclos, ele aprendeu muito, e os gráficos de lucro parecem tranquilizadores. No entanto, como no exemplo 0, os negócios longos são muito mais rentáveis, o que provavelmente significa que há um problema em nossa abordagem. No entanto, o sistema encontrou um equilíbrio entre algumas das condições iniciais contraditórias:
Existem algumas dinâmicas positivas, tanto no conjunto de aprendizado como, mais importante, no conjunto de testes.
Quanto ao aprendizado adicional, no ciclo 278 podemos ver, que nosso sistema foi superado. Isso significa que ainda temos progresso no aprendizado definido:
Mas o conjunto de testes mostra fraqueza:
Este é um problema comum com NNs: quando ensinamos isso no aprendizado definido, ele aprende a lidar com isso e, às vezes, ele aprende muito bem - até o grau, quando perde o desempenho no conjunto de testes.
Para lidar com esse problema, uma solução "tradicional" é usada: continuamos procurando a Rede Neural, que executa o melhor no conjunto de testes, e salve-o, substituindo o melhor possível, cada vez que o novo pico é alcançado. Esta é a mesma abordagem, que usamos no treinamento FFBP, exceto, desta vez, temos que fazê-lo nós mesmos (adicionando código, que procura uma melhor Rede Neural em um conjunto de testes e ligando para SAVE_NN ou exportando pesos da Rede Neural para um Arquivo). Desta forma, quando você parar seu treinamento, você terá o melhor desempenho ON TESTING SET salvo e esperando por você.
Observe também que não é o máximo. lucro que você está procurando, mas ótimo desempenho, então considere usar correções, ao procurar o melhor desempenho em um conjunto de testes.
Algoritmo Genético para Análise Técnica FOREX: Onde agora?
Depois de ter sua Rede Neural de vencedor, você pode seguir as etapas, descritas no artigo anterior, para exportar pesos da Rede Neural e depois usá-los em sua plataforma de negociação em tempo real, como Meta Trader, Trade Station e assim por diante.
Alternativamente, você pode se concentrar em outras formas de otimizar a Rede Neural, ao contrário do algoritmo FFBP, aqui você pode obter avay usando conjuntos de aprendizagem e teste e mover a aprendizagem seqüencial.
Algoritmos do sistema de negociação Forex.
Um algoritmo do sistema de negociação é uma série de etapas que mostram como o sistema gerencia as entradas, sai de uma perda (stop loss) e sai com lucro. Em última análise, estes precisam ser codificados em um sistema informático para automatizar sua negociação, mas a implementação é independente do algoritmo real.
Nesta publicação, vou discutir alguns algoritmos de suavização de preço.
Suavização de Preços & # 8211; Por que fazê-lo?
O comerciante geralmente tem que transformar uma série de dados de preços em sinais de negociação, mas os próprios dados de preço são muito barulhentos. É semelhante a tentar sintonizar uma estação de rádio através de muita estática. É difícil dizer o que é importante, e o que é apenas um barulho aleatório.
O ruído é o componente não negociável dos dados de preços. Se você tentar trocá-lo, reduzirá significativamente seus lucros. Claramente, o problema em questão é isolar o ruído do sinal. Isso suaviza a série de preços para que a direção subjacente seja destacada.
Este problema está bem definido no processamento de sinal e algumas técnicas bastante avançadas e eficazes estão disponíveis, mas, muitas vezes, os comerciantes usam abordagens muito grossas. Vou começar nesta postagem discutindo as abordagens tradicionais e como elas funcionam.
Abordagens brutas.
Gostaria de descrever dois filtros de ruído em bruto: o breakout e a média móvel (e suas variantes).
O breakout é um sinal de entrada ou saída que é acionado quando o preço atual excede (por exemplo) uma alta de 20 dias ou cai abaixo de um mínimo de 20 dias. Os parâmetros que podem ser modificados são o número de períodos e o valor pelo qual o preço deve exceder ou ser inferior ao alto ou baixo.
A maneira como isso funciona para filtrar o ruído é através de um filtro de volatilidade. Com efeito, o sistema tenta remover a volatilidade do preço atribuível ao ruído e pressupõe que um preço que exceda um certo nível representa um sinal verdadeiro e não o ruído.
É assim que um breakout pode ser descrito em um algoritmo:
Se preço + quantidade de gatilho & gt; alto de n períodos e compre.
Se o preço & # 8211; quantidade de gatilho & lt; baixa de n períodos, em seguida, venda.
O problema é que esta abordagem é bastante conhecida, e falhas falsas são, portanto, bastante comuns. Isso significa que o ruído dos comerciantes que entram no mercado agora distorce o sinal.
Outra abordagem é uma média móvel. Esta é simplesmente a média dos últimos (digamos) 20 períodos. O resultado será uma linha mais lisa do que a série de preços original, mas atrasada em cerca de 1/2 do período selecionado. Um número maior de períodos produz uma linha mais suave, mas com mais atrasos na ação do preço, enquanto um número menor de períodos produz uma linha menos suave que reflete mais ruído, mas é mais sensível às mudanças.
Uma média móvel remove o ruído, reduzindo o impacto de um valor ruidoso particular ao fazer a média. Como esta é uma média, ela ainda está sujeita a distorção por valores extremos, portanto, não funciona bem se você tiver dados muito ruidosos, a menos que você escolha um período médio móvel muito longo, o que causa atrasos.
O algoritmo para uma média móvel (n período, em que n é um número inteiro, por exemplo, 20) é o seguinte:
Soma os últimos n períodos, depois divida por n.
Avance 1 período, depois recalcule.
A média móvel precisa ser combinada com algumas outras regras para um sistema de negociação completo. Por exemplo, uma abordagem popular é observar quando 20 períodos e as médias móveis de 50 períodos se cruzam:
Se a média móvel de 20 dias cruza uma média móvel de mais de 50 dias, compre.
Se a média móvel de 20 dias cruza abaixo da média móvel de 50 dias, então venda.
Existem algumas variantes para isso, como médias móveis exponenciais e filtros médios. A média móvel exponencial tem propriedades semelhantes ao tipo usual, mas é calculada de forma diferente, então ganhei aqui os detalhes. Um filtro médio é mais interessante. Isso tem menos atraso. O algoritmo é:
Classifique os últimos n períodos de dados de preços do mais alto para o mais baixo.
Pegue o ponto do meio.
Use isso como o valor.
Os filtros médios podem ser usados de forma semelhante às médias móveis comuns. Eles eliminam o ruído, excluindo valores extremos e olhando o valor no meio.
Todos esses algoritmos podem ser facilmente implementados no Excel.
Na próxima vez, eu continuarei com mais detalhes e começarei a discutir algumas das técnicas mais avançadas também.
Postagens recentes.
Saiba como negociar Forex.
Copyright 2017 Forex Trading Guide - Todos os direitos reservados.
O básico do comércio de algoritmo Forex.
Há quase trinta anos, o mercado de câmbio (Forex) foi caracterizado por negócios realizados por telefone, investidores institucionais, informações de preços opacos, uma distinção clara entre a negociação interdealer e negociação entre revendedores e clientes e baixa concentração de mercado. Hoje, os avanços tecnológicos transformaram o mercado. Os negócios são feitos principalmente por meio de computadores, permitindo que os comerciantes de varejo entrem no mercado, os preços de transmissão em tempo real levaram a uma maior transparência e a distinção entre revendedores e seus clientes mais sofisticados desapareceu em grande parte.
Uma mudança particularmente significativa é a introdução do comércio algorítmico, que, ao fazer melhorias significativas no funcionamento do comércio de Forex, também coloca uma série de riscos. Ao analisar os fundamentos do mercado Forex e da negociação algorítmica, identificaremos algumas vantagens que a negociação algorítmica trouxe para o comércio de moeda, ao mesmo tempo que apontou alguns dos riscos.
Fundamentos do Forex.
O Forex é o local virtual em que os pares de moedas são negociados em volumes variáveis de acordo com os preços cotados, segundo os quais uma moeda base possui um preço em moeda de cotação. Operando 24 horas por dia, cinco dias por semana, o Forex é considerado o maior e mais líquido mercado financeiro do mundo. Pelo Banco de Pagamentos Internacionais (BIS), o volume médio global diário de negociação em abril de 2018 foi de US $ 2,0 trilhões. A maior parte dessa negociação é feita por dólares dos EUA, euros e ienes japoneses e envolve uma variedade de jogadores, incluindo bancos privados, bancos centrais, fundos de pensão, investidores institucionais, grandes corporações, empresas financeiras e comerciantes de varejo individuais.
Embora a negociação especulativa possa ser a principal motivação para certos investidores, o principal motivo para a existência do mercado Forex é que as pessoas precisam trocar moedas para comprar bens e serviços estrangeiros. A atividade no mercado Forex afeta as taxas de câmbio reais e, portanto, pode afetar profundamente o resultado, o emprego, a inflação e os fluxos de capital de qualquer país em particular. Por essa razão, os formuladores de políticas públicas, o público e a mídia têm todo o interesse no que se passa no mercado Forex.
Noções básicas de negociação algorítmica.
Um algoritmo é essencialmente um conjunto de regras específicas projetadas para completar uma tarefa claramente definida. Na negociação do mercado financeiro, os computadores realizam algoritmos definidos pelo usuário, caracterizados por um conjunto de regras que consistem em parâmetros como timing, preço ou quantidade que estruturam as negociações que serão feitas.
Existem quatro tipos básicos de negociação algorítmica nos mercados financeiros: estatística, cobertura automática, estratégias de execução algorítmica e acesso direto ao mercado. A estatística refere-se a uma estratégia algorítmica que busca oportunidades de negociação lucrativas com base na análise estatística dos dados históricos da série temporal. Auto-hedging é uma estratégia que gera regras para reduzir a exposição de um comerciante ao risco. O objetivo das estratégias de execução algorítmica é executar um objetivo predefinido, como reduzir o impacto do mercado ou executar um comércio rapidamente. Finalmente, o acesso direto ao mercado descreve as velocidades ótimas e os custos mais baixos nos quais os comerciantes algorítmicos podem acessar e se conectar a várias plataformas de negociação.
Uma das subcategorias de negociação algorítmica é a negociação de alta freqüência, que se caracteriza pela alta freqüência de execuções de ordem comercial. O comércio de alta velocidade pode dar vantagens significativas para os comerciantes, dando-lhes a capacidade de fazer negócios em milissegundos de mudanças de preços incrementais, mas também pode comportar certos riscos.
Negociação Algorítmica no Mercado Forex.
Grande parte do crescimento da negociação algorítmica nos mercados Forex nos últimos anos deveu-se a algoritmos que automatizam certos processos e reduzem as horas necessárias para realizar transações cambiais. A eficiência criada pela automação conduz a menores custos na realização desses processos. Um desses processos é a execução de ordens comerciais. Automatizar o processo de negociação com um algoritmo que negocia com base em critérios predeterminados, como a execução de pedidos ao longo de um período de tempo especificado ou a um preço específico, é significativamente mais eficiente do que a execução manual por humanos.
Os bancos também aproveitaram os algoritmos programados para atualizar os preços dos pares de moedas em plataformas de negociação eletrônicas. Esses algoritmos aumentam a velocidade com que os bancos podem cotizar os preços de mercado, ao mesmo tempo em que reduz o número de horas de trabalho manual necessárias para cotação dos preços.
Alguns bancos programam algoritmos para reduzir sua exposição ao risco. Os algoritmos podem ser usados para vender uma moeda específica para corresponder ao comércio de um cliente no qual o banco comprou o valor equivalente para manter uma quantidade constante dessa moeda em particular. Isso permite que o banco mantenha um nível de exposição de risco pré-especificado para manter essa moeda.
Esses processos foram tornados significativamente mais eficientes por algoritmos, levando a menores custos de transação. No entanto, estes não são os únicos fatores que têm impulsionado o crescimento na negociação algorítmica Forex. Os algoritmos têm sido cada vez mais utilizados para o comércio especulativo, pois a combinação de alta freqüência e a capacidade do algoritmo de interpretar dados e executar ordens permitiram que os comerciantes explorassem oportunidades de arbitragem decorrentes de pequenos desvios de preços entre pares de moedas.
Todas essas vantagens levaram ao aumento do uso de algoritmos no mercado Forex, mas vejamos alguns dos riscos que acompanham a negociação algorítmica.
Riscos envolvidos no comércio de Forex algorítmico.
Embora a negociação algorítmica tenha feito muitas melhorias, existem algumas desvantagens que podem ameaçar a estabilidade e a liquidez do mercado Forex. Uma dessas desvantagens refere-se a desequilíbrios no poder comercial dos participantes do mercado. Alguns participantes têm meios para adquirir tecnologia sofisticada que lhes permite obter informações e executar ordens a uma velocidade muito mais rápida que outras. Este desequilíbrio entre os ricos e os que não têm em termos da tecnologia algorítmica mais sofisticada pode levar à fragmentação no mercado que pode levar a uma falta de liquidez ao longo do tempo.
Além disso, embora existam diferenças fundamentais entre os mercados de ações e o mercado Forex, há alguns que temem que a negociação de alta freqüência que exacerbasse o crash do mercado de ações em 6 de maio de 2018 poderia afetar de forma semelhante o mercado Forex. Como os algoritmos são programados para cenários de mercado específicos, eles podem não responder rapidamente o suficiente se o mercado mudasse drasticamente. Para evitar este cenário, os mercados podem precisar ser monitorados e o comércio algorítmico suspenso durante a turbulência do mercado. No entanto, em cenários tão extremos, uma suspensão simultânea de negociação algorítmica por numerosos participantes do mercado pode resultar em alta volatilidade e uma drástica redução na liquidez do mercado.
The Bottom Line.
Embora a negociação algorítmica tenha sido capaz de aumentar a eficiência, reduzindo os custos de negociação de moedas, também veio com alguns riscos adicionais. Para que as moedas funcionem corretamente, elas devem ser lojas de valor um tanto estáveis e ser altamente líquidas. Assim, é importante que o mercado Forex permaneça líquido com baixa volatilidade de preços.
Como em todas as áreas da vida, a nova tecnologia apresenta muitos benefícios, mas também vem com novos riscos. O desafio para o futuro da negociação algorítmica de Forex será como instituir mudanças que maximizem os benefícios ao mesmo tempo em que reduzem os riscos.
No comments:
Post a Comment