Estratégias Para Forex Algorithmic Trading.
Como resultado da recente controvérsia, o mercado cambial tem estado sob maior escrutínio. Quatro grandes bancos foram considerados culpados de conspirar para manipular as taxas de câmbio, o que prometeu aos comerciantes receitas substanciais com risco relativamente baixo. Em particular, os maiores bancos do mundo concordaram em manipular o preço do dólar e do euro entre 2007 e 2013.
O mercado forex é notavelmente desregulamentado, apesar de lidar com US $ 5 trilhões em transações diárias. Como resultado, os reguladores pediram a adoção do trading algorítmico, um sistema que utiliza modelos matemáticos em uma plataforma eletrônica para executar negociações no mercado financeiro. Devido ao alto volume de transações diárias, o comércio algorítmico dos estrangeiros cria maior transparência, eficiência e elimina o preconceito humano.
Várias estratégias diferentes podem ser buscadas por traders ou firmas no mercado forex. Por exemplo, a cobertura automática refere-se ao uso de algoritmos para proteger o risco da carteira ou para limpar posições de forma eficiente. Além da proteção automática, as estratégias algorítmicas incluem negociação estatística, execução algorítmica, acesso direto ao mercado e negociação de alta frequência, e todas podem ser aplicadas a transações forex.
Auto cobertura.
Ao investir, a cobertura é uma maneira simples de proteger seus ativos contra perdas significativas, reduzindo a quantia que você pode perder se algo inesperado ocorrer. Na negociação algorítmica, a cobertura pode ser automatizada para reduzir a exposição do profissional a risco. Esses pedidos de hedge gerados automaticamente seguem modelos específicos para gerenciar e monitorar o nível de risco de um portfólio.
No mercado cambial, os principais métodos de negociação de hedge são através de contratos à vista e opções de moeda. Contratos à vista são a compra ou venda de uma moeda estrangeira com entrega imediata. O mercado spot do fprex cresceu significativamente desde o início dos anos 2000, devido ao influxo de plataformas algorítmicas. Em particular, a rápida proliferação de informações, conforme refletida nos preços de mercado, permite que surjam oportunidades de arbitragem. Oportunidades de arbitragem ocorrem quando os preços da moeda ficam desalinhados. A arbitragem triangular, como é conhecida no mercado forex, é o processo de conversão de uma moeda de volta para si mesma através de várias moedas diferentes. Comerciantes algorítmicos e de alta frequência só podem identificar essas oportunidades por meio de programas automatizados.
Como derivativo, as opções de câmbio operam de maneira semelhante a uma opção em outros tipos de títulos. As opções de moeda estrangeira dão ao comprador o direito de comprar ou vender o par de moedas a uma determinada taxa de câmbio em algum momento no futuro. Os programas de computador têm opções binárias automatizadas como uma forma alternativa de proteger transações em moeda estrangeira. As opções binárias são um tipo de opção em que as recompensas tomam um dos dois resultados: a negociação é liquidada a zero ou a um preço de exercício pré-determinado.
Análise Estatística.
Dentro do setor financeiro, a análise estatística continua sendo uma ferramenta importante para medir os movimentos de preço de um título ao longo do tempo. No mercado cambial, indicadores técnicos são usados para identificar padrões que podem ajudar a prever movimentos futuros de preços. O princípio de que a história se repete é fundamental para a análise técnica. Como os mercados de câmbio operam 24 horas por dia, a quantidade robusta de informações aumenta a significância estatística das previsões. Devido à crescente sofisticação dos programas de computador, os algoritmos foram gerados de acordo com os indicadores técnicos, incluindo a divergência de convergência de média móvel (MACD) e o índice de resistência relativa (RSI). Os programas algorítmicos sugerem tempos específicos em que as moedas devem ser compradas ou vendidas.
Execução algorítmica.
O comércio algorítmico requer uma estratégia executável que os gerentes de fundos possam usar para comprar ou vender grandes quantidades de ativos. Os sistemas de negociação seguem um conjunto pré-especificado de regras e são programados para executar uma ordem sob determinados preços, riscos e horizontes de investimento. No mercado cambial, o acesso direto ao mercado permite que os operadores de buy-side executem ordens forex diretamente no mercado. O acesso direto ao mercado ocorre por meio de plataformas eletrônicas, que geralmente reduzem custos e erros de negociação. Normalmente, a negociação no mercado é restrita a corretores e criadores de mercado; no entanto, o acesso direto ao mercado fornece às empresas de buy-in acesso à infraestrutura de sell-side, concedendo aos clientes maior controle sobre as negociações. Devido à natureza da negociação algorítmica e dos mercados de câmbio, a execução de pedidos é extremamente rápida, permitindo que os operadores aproveitem as oportunidades de negociação de curta duração.
Negociação de alta frequência.
Como o subconjunto mais comum de negociação algorítmica, a negociação de alta frequência tornou-se cada vez mais popular no mercado forex. Com base em algoritmos complexos, a negociação de alta frequência é a execução de um grande número de transações em velocidades muito rápidas. À medida que o mercado financeiro continua a evoluir, velocidades de execução mais rápidas permitem que os operadores aproveitem oportunidades lucrativas; No mercado cambial, várias estratégias de negociação de alta frequência são projetadas para reconhecer situações lucrativas de arbitragem e liquidez. Desde que os pedidos sejam executados rapidamente, os comerciantes podem alavancar a arbitragem para garantir lucros livres de risco. Devido à velocidade da negociação de alta frequência, a arbitragem também pode ser feita entre os preços à vista e futuros dos mesmos pares de moedas.
Os defensores da negociação de alta frequência no mercado de câmbio destacam seu papel na criação de alto grau de liquidez e transparência nas negociações e nos preços. A liquidez tende a ser contínua e concentrada, pois há um número limitado de produtos em comparação com ações. No mercado cambial, as estratégias de liquidez visam detectar desequilíbrios de pedidos e diferenças de preços entre um par de moedas em particular. Um desequilíbrio de pedidos ocorre quando há um número excessivo de ordens de compra ou venda para um ativo ou moeda específicos. Nesse caso, os operadores de alta frequência atuam como provedores de liquidez, ganhando o spread ao arbitrar a diferença entre o preço de compra e venda.
The Bottom Line.
Muitos estão pedindo maior regulamentação e transparência no mercado de câmbio à luz dos recentes escândalos. A crescente adoção de sistemas de negociação algorítmica forex pode efetivamente aumentar a transparência no mercado forex. Além da transparência, é importante que o mercado forex permaneça líquido com baixa volatilidade de preços. Estratégias de negociação algorítmica, como hedging automático, análise estatística, execução algorítmica, acesso direto ao mercado e negociação de alta frequência, podem expor inconsistências de preços, que representam oportunidades lucrativas para os traders.
Noções básicas de negociação algorítmica de Forex.
Quase trinta anos atrás, o mercado de câmbio (Forex) caracterizava-se por negociações conduzidas via telefone, investidores institucionais, informações de preço opacas, uma clara distinção entre negociações entre clientes e negociações entre clientes e negociantes e baixa concentração de mercado. Hoje, os avanços tecnológicos transformaram o mercado. Os negócios são feitos principalmente através de computadores, permitindo que os comerciantes de varejo entrem no mercado, os preços de streaming em tempo real levaram a uma maior transparência e a distinção entre distribuidores e seus clientes mais sofisticados praticamente desapareceu.
Uma mudança particularmente significativa é a introdução da negociação algorítmica, que, ao mesmo tempo em que melhora significativamente o funcionamento da negociação em Forex, também apresenta vários riscos. Examinando as noções básicas do mercado Forex e do comércio algorítmico, identificaremos algumas vantagens que o comércio algorítmico trouxe para a negociação de moedas, além de apontar alguns dos riscos.
Noções básicas de 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 em que uma moeda base recebe um preço em termos de uma 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. De acordo com o Bank for International Settlements (BIS), o volume médio diário global de negociações em abril de 2013 foi de US $ 2,0 trilhões. A maior parte desta negociação é feita para dólares americanos, euros e ienes japoneses e envolve uma gama 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, a principal razão para a existência do mercado Forex é que as pessoas precisam negociar moedas para comprar bens e serviços estrangeiros. A atividade no mercado Forex afeta as taxas de câmbio reais e pode, portanto, afetar profundamente a produção, o emprego, a inflação e os fluxos de capital de qualquer nação em particular. Por essa razão, os formuladores de políticas, o público e a mídia têm 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 no mercado financeiro, os computadores realizam algoritmos definidos pelo usuário, caracterizados por um conjunto de regras que consiste em parâmetros como tempo, preço ou quantidade que estruturam os negócios que serão realizados.
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. Estatística refere-se a uma estratégia algorítmica que procura oportunidades de negociação lucrativas com base na análise estatística de dados históricos de séries temporais. A cobertura automática é uma estratégia que gera regras para reduzir a exposição do profissional a riscos. O objetivo das estratégias de execução algorítmica é executar um objetivo predefinido, como reduzir o impacto no mercado ou executar um negócio rapidamente. Finalmente, o acesso direto ao mercado descreve as velocidades ideais e os custos mais baixos pelos quais os operadores algorítmicos podem acessar e se conectar a múltiplas plataformas de negociação.
Uma das subcategorias de negociação algorítmica é a negociação de alta frequência, que é caracterizada pela frequência extremamente alta de execuções de ordens de negociação. Negociações de alta velocidade podem dar vantagens significativas aos negociantes, dando-lhes a capacidade de fazer negócios dentro de milésimos de segundo de mudanças de preço incrementais, mas também pode acarretar certos riscos.
Negociação Algorítmica no Mercado Forex.
Grande parte do crescimento do comércio algorítmico nos mercados Forex nos últimos anos deveu-se a algoritmos que automatizaram determinados processos e reduziram as horas necessárias para conduzir transações cambiais. A eficiência criada pela automação leva a custos mais baixos na execução desses processos. Um desses processos é a execução de ordens de negociação. Automatizar o processo de negociação com um algoritmo que é negociado com base em critérios predeterminados, como a execução de ordens 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 nas plataformas de negociação eletrônica. Esses algoritmos aumentam a velocidade com que os bancos podem cotar os preços de mercado e, ao mesmo tempo, reduzem o número de horas de trabalho manuais necessárias para cotar preços.
Alguns bancos programam algoritmos para reduzir sua exposição ao risco. Os algoritmos podem ser usados para vender uma determinada moeda 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 pré-especificado de exposição ao risco para manter essa moeda.
Esses processos foram significativamente mais eficientes por meio de algoritmos, levando a custos de transação mais baixos. No entanto, estes não são os únicos fatores que têm impulsionado o crescimento no comércio algorítmico Forex. Algoritmos têm sido cada vez mais usados para negociações especulativas, já que a combinação de alta frequência e a capacidade do algoritmo de interpretar dados e executar ordens permitiu que os operadores 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 vamos analisar alguns dos riscos que acompanham o comércio algorítmico.
Riscos envolvidos na negociação algorítmica de Forex.
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 está relacionada aos desequilíbrios no poder de negociação dos participantes do mercado. Alguns participantes têm meios para adquirir tecnologia sofisticada que lhes permita obter informações e executar ordens com uma velocidade muito mais rápida do que outras. Esse desequilíbrio entre os que têm e os que não têm em termos da tecnologia algorítmica mais sofisticada pode levar a uma fragmentação no mercado que pode levar à escassez 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 frequência que exacerbou o crash da bolsa de valores em 6 de maio de 2010 poderia afetar o mercado Forex. Como os algoritmos são programados para cenários específicos do mercado, eles podem não responder com rapidez suficiente se o mercado mudar drasticamente. Para evitar esse cenário, os mercados podem precisar ser monitorados e a negociação algorítmica suspensa 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 inúmeros participantes do mercado poderia resultar em alta volatilidade e redução drástica 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, ela também trouxe alguns riscos adicionais. Para que as moedas funcionem adequadamente, elas devem ser armazenadas de alguma forma estáveis e altamente líquidas. Assim, é importante que o mercado Forex permaneça líquido com baixa volatilidade de preço.
Como em todas as áreas da vida, a nova tecnologia introduz muitos benefícios, mas também traz novos riscos. O desafio para o futuro do comércio algorítmico de Forex será como instituir mudanças que maximizem os benefícios enquanto reduz os riscos.
8 tipos de estratégias algorítmicas de Forex.
Como prometido, aqui está a próxima parte da minha série sobre sistemas de negociação algorítmica de forex. Certifique-se de verificar a primeira parte sobre o que você precisa saber sobre o Algo FX Trading antes de continuar lendo!
Essa abordagem comercial normalmente atrai aqueles que desejam eliminar ou reduzir a interferência emocional humana na tomada de decisões comerciais. Afinal, os sinais de compra ou venda podem ser gerados usando um conjunto programado de instruções e podem ser executados diretamente na sua plataforma de negociação.
“Amazonas! Aqui está 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 compreendendo a negociação algorítmica primeiro. Para começar, vamos dar uma olhada nas diferentes classificações dessa abordagem de negociação.
Estratégias de Negociação Algorítmica.
Existem oito tipos principais de negociação de algoritmos com base nas estratégias utilizadas. Bonita demais, hein? É claro que você também pode misturar e combinar essas estratégias, o que gera 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 preenchidas por indicadores técnicos. Essa estratégia também pode comparar dados históricos e atuais para prever se as tendências provavelmente continuarão ou serão revertidas.
Outro tipo básico de estratégia de negociação de algoritmos é o sistema de reversão à média, que opera sob a suposição de que os mercados estão variando 80% do tempo. As caixas pretas que empregam essa estratégia normalmente calculam um preço médio do ativo usando dados históricos e realizam negociações antecipando o preço atual retornando ao preço médio.
Já tentou trocar as notícias? Bem, essa estratégia pode fazer isso por você! Um sistema de negociação algorítmica baseado em notícias é geralmente ligado a fios de notícias, gerando automaticamente sinais de negociação, dependendo de como os dados reais acabam sendo comparados ao consenso de mercado ou aos dados anteriores.
Como você aprendeu em nossa lição escolar sobre o sentimento do mercado, o posicionamento comercial e não comercial também pode ser usado para identificar topos e fundos do mercado. Estratégias de algoritmos Forex baseadas no sentimento do mercado podem envolver o uso do relatório COT ou um sistema que detecta posições líquidas curtas ou longas extremas. Abordagens mais modernas também são capazes de escanear redes de mídia social para avaliar tendências de moeda.
Agora aqui é onde fica um pouco mais complicado do que o habitual. Fazer uso da arbitragem no comércio algorítmico significa que o sistema procura desequilíbrios de preços em diferentes mercados e lucra com os mesmos. Como as diferenças de preço do Forex geralmente são em micropips, você precisaria trocar posições realmente grandes para obter lucros consideráveis. A arbitragem triangular, que envolve dois pares de moedas e uma moeda cruzada entre os dois, também é uma estratégia popular sob essa classificação.
Como o nome sugere, esse tipo de sistema de negociação opera a velocidades velozes, executando sinais de compra ou venda e fechando negociações em questão de milissegundos. Estes geralmente usam estratégias de arbitragem ou escalpelamento 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 sigilosas sobre suas posições cambiais. Em vez de colocar uma enorme posição longa ou curta com apenas um corretor, eles dividem suas operações em posições menores e as executam sob diferentes corretores. Seu algoritmo pode até permitir que essas ordens menores sejam colocadas em momentos diferentes para impedir que outros participantes do mercado descubram! Desta forma, as instituições financeiras são capazes de executar negociações em condições normais de mercado, sem flutuações bruscas de preços. Os comerciantes de varejo que acompanham os volumes de negociação são capazes de ver apenas a “ponta do iceberg” quando se trata desses grandes negócios.
Se você acha que o iceberg é sorrateiro, então a estratégia furtiva é ainda mais furtiva! Iceberging tem sido uma prática tão comum nos últimos anos que os observadores do mercado hardcore foram capazes de hackear essa idéia e criar um algoritmo para juntar essas ordens menores e descobrir se um grande participante do mercado está por trás de tudo isso.
Como você provavelmente adivinhou, é preciso ter um sólido conhecimento em análise do mercado financeiro e programação de computadores para projetar algoritmos de negociação tão sofisticados. Analistas quantitativos ou quantos são tipicamente treinados em programação em C ++, C # ou Java antes de conseguirem sistemas de negociação algorítmica.
Não deixe que isso te desencoraje embora! Os primeiros três ou quatro tipos de estratégias de negociação algorítmica já devem ser muito familiares para você, se você estiver negociando há 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 planejo deixá-lo nos desenvolvimentos mais recentes e no futuro da negociação de FX algorítmica. Até a próxima semana!
SnowCron.
GRATUITO E. Mail Classes.
Usando Algoritmo Genético para criar uma estratégia de negociação FOREX rentável. Algoritmo Genético no Software de Redes Neurais do Cortex Feedforward Backpropagation Rede Neural Aplicação para cálculos genéticos baseados em negociações Forex.
Este exemplo usa conceitos e idéias do artigo anterior, portanto, leia o Algoritmo Genético de Rede Neural em FOREX Trading Systems primeiro, embora não seja obrigatório.
Sobre este texto
Primeiro de tudo, por favor leia o aviso. Este é um exemplo do uso da funcionalidade do algoritmo genético da Cortex Neural Networks Software, não um exemplo de como fazer negócios lucrativos. Eu não sou seu guru, nem eu deveria ser responsável por suas perdas.
O Cortex Neural Networks Software possui redes neurais, e o FFBP que discutimos anteriormente é apenas uma maneira de escolher uma estratégia de negociação forex. É uma boa técnica, poderosa e quando aplicada corretamente, muito promissor. No entanto, tem um problema - para ensinar a Rede Neural, precisamos conhecer a "saída desejada".
É bastante fácil fazer quando fazemos a aproximação da função, apenas pegamos o valor "real" de uma função, porque sabemos o que deveria ser.
Quando fazemos previsões de redes neurais, usamos a técnica (descrita em artigos anteriores) de ensinar a Rede Neural sobre a história, novamente, se prevemos, digamos, uma taxa de câmbio, sabemos (durante o treinamento) qual é a predição correta .
No entanto, quando estamos construindo um sistema de negociação, não temos idéia de qual é a decisão de negociação correta, mesmo se soubermos a taxa de câmbio! De fato, temos muitas estratégias de negociação forex que podemos usar a qualquer momento, e precisamos encontrar uma boa - como? O que devemos alimentar como a saída desejada da 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 a previsão da taxa de câmbio (ou indicador baseado na taxa de câmbio) e, em seguida, utilizamos essa previsão para negociar. Então, fora da parte de Rede Neural do programa, tomamos uma decisão sobre qual Rede Neural é a melhor.
Algoritmos genéticos podem lidar com este problema diretamente, eles podem resolver o problema declarado como "encontrar os melhores sinais de negociação".
Neste artigo, vamos usar o software Cortex Neural Networks para criar um programa desse tipo.
Usando Algoritmo Genético.
Algoritmos genéticos são muito bem desenvolvidos e muito diversificados. Se você quer aprender tudo sobre eles, eu sugiro que você use Wikipedia, já que este artigo é apenas sobre o que o Cortex Neural Networks Software pode fazer.
Com o Cortex Neural Networks Software, podemos criar uma Rede Neural que recebe alguma entrada, digamos, valores de um indicador, e produz alguma saída, digamos, sinais de negociação (comprar, vender, manter) e parar a perda / obter níveis de lucro para posições para ser aberto.
É claro que, se multiplicarmos os pesos dessa rede neural aleatoriamente, os resultados das negociações serão terríveis. No entanto, digamos que criamos uma dúzia desses NNs. Então podemos testar o desempenho de cada um deles e escolher o melhor, o vencedor.
Esta foi a "primeira geração" de NNs. Para continuar com a segunda geração, precisamos permitir que nosso vencedor "procrie", mas para evitar cópias idênticas, vamos adicionar um pouco de noice aleatório aos pesos de seus descendentes.
Na segunda geração, temos nosso vencedor da primeira geração e são cópias imperfeitas (mutantes). Vamos fazer o teste novamente. Teremos outro vencedor, que é melhor do que qualquer outra rede neural na geração.
E assim por diante. 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 sobre como deve ser o sistema comercial (algoritmo genético).
Algoritmo Genético de Rede Neural: Exemplo 0.
Este é o primeiro exemplo de algoritmo genético e um exemplo muito simples. Vamos percorrê-lo passo a passo para aprender todos os truques que os exemplos a seguir usarão.
O código tem comentários inline, então vamos nos concentrar apenas nos principais momentos.
Primeiro, criamos uma rede neural. Está usando pesos aleatórios e ainda não foi ensinado.
Então, em ciclo, fazemos 14 cópias, usando a função MUTATION_NN. Esta função faz uma cópia de uma rede neural de origem, adicionando valores aleatórios de 0 a (no nosso caso) 0,1 a todos os pesos.
Mantemos alças para 15 NNs resultantes em uma matriz, podemos fazer isso, pois handle é apenas um número inteiro.
A razão pela qual usamos 15 NNs não tem nada a ver com negociação: o Cortex Neural Networks Software pode plotar até 15 linhas em um gráfico simultaneamente.
Podemos usar abordagens diferentes para o teste. Primeiro, podemos usar o conjunto de aprendizado, tudo de uma vez. Segundo, podemos testar, digamos, 12.000 resordos (de 100.000) e percorrer o conjunto de aprendizado, do começo ao fim. Isso tornará os aprendizados diferentes, já que procuraremos redes neurais que sejam lucrativas em qualquer parte dos dados, não apenas no conjunto inteiro. A segunda abordagem pode nos dar problemas, se os dados mudarem, do começo ao fim. Em seguida, a rede evoluirá, obtendo a capacidade de negociar no final do conjunto de dados e perdendo a capacidade de negociar no início.
Para resolver esse problema, vamos pegar aleatoriamente 12.000 registros de fragmentos de dados e alimentá-los com a Rede Neural.
Abaixo, adicionamos um filho para cada rede, com pesos ligeiramente diferentes. Note que 0,1 para mutação tange não é a única escolha, na verdade, até mesmo este parâmetro pode ser otimizado usando algoritmo genético.
NNs recém-criados são adicionados após 15 existentes. Dessa forma, temos 30 NNs em uma matriz, 15 antigos e 15 novos. Então, vamos fazer o próximo ciclo de testes e matar os perdedores das duas gerações.
Para fazer testes, aplicamos a Rede Neural aos nossos dados, para produzir saídas e, em seguida, chamamos a função Teste, que usa essas saídas para simular a negociação. Os resultados da negociação são usados para designar quais NNs são melhores.
Usamos um intervalo de registros nLearn, de nStart para nStart + nLearn, em que nStart é um ponto aleatório dentro do conjunto de aprendizado.
O código abaixo é um truque. A razão pela qual a usamos é para ilustrar o fato de que o algoritmo genético pode criar um algoritmo genético, mas não necessariamente será o melhor, e também, para sugerir, que podemos melhorar o resultado, se implicarmos algumas limitações ao aprendizado. processo.
É possível que nosso sistema de negociação funcione muito bem em operações longas e muito fraco em curto ou vice-versa. Se, digamos, trocas longas forem MUITO boas, esse algoritmo genético poderá vencer, mesmo com grandes perdas em trocas curtas.
Para evitá-lo, atribuímos mais peso aos negócios longos em operações ímpares e curtas em ciclos pares. Este é apenas um exemplo, não há garantia de que isso irá melhorar alguma coisa. Mais sobre isso abaixo, em discussão sobre correções. Tecnicamente, você não precisa fazer isso, ou pode fazer diferente.
Adicione lucro a uma matriz classificada. Ele retorna uma posição de inserção e, em seguida, usamos essa posição para adicionar o identificador da Rede Neural, aprendendo e testando os lucros para matrizes não ordenadas. Agora, temos dados para a Rede Neural atual no mesmo índice de matriz que seu lucro.
A ideia é chegar ao conjunto de NNs, classificados por rentabilidade. Como array é ordenado por lucro, para remover 1/2 de redes, que são menos lucrativas, basta remover NNs 0 a 14.
As decisões de negociação são baseadas no valor do sinal da Rede Neural, a partir deste ponto de vista o programa é idêntico aos exemplos do artigo anterior.
Estratégia de Negociação de FOREX: Discutindo o exemplo 0.
Primeiro de tudo, vamos dar uma olhada nos gráficos. O primeiro gráfico para lucro durante a primeira iteração não é nada bom, como seria de se esperar, a Rede Neural perde dinheiro (imagem evolution_00_gen_0.png copiada após a primeira iteração da pasta "images"):
A imagem para 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 o modo como os lucros individuais mudam, tendo em mente que o número da curva, digamos, 3 nem sempre é para a mesma Rede Neural, pois eles estão nascendo e terminando o tempo todo:
Observe também que, fora do sistema de negociação automatizado de forex pouco executa em operações curtas, e muito melhor em longos, o que pode ou não estar relacionado com o fato, que o dólar estava caindo em relação ao 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 curtos) ou a escolha de indicadores.
Aqui está a história depois de 92 e 248 ciclos:
Para nossa surpresa, o algoritmo genético falhou completamente. Vamos tentar descobrir por que e como ajudar a situação.
Primeiro de tudo, cada geração não é supostamente melhor que a anterior? A resposta é não, pelo menos não dentro do modelo que usamos. Se pegarmos todo o conjunto de aprendizagem de uma só vez, e usá-lo repetidamente para ensinar nossas NNs, então sim, elas melhorarão em cada geração. Mas, em vez disso, pegamos fragmentos aleatórios (12.000 registros no tempo) e os usamos.
Duas perguntas: por que o sistema falhou em fragmentos aleatórios do conjunto de aprendizado e por que não usamos todo o conjunto de aprendizado? Bem. Para responder a segunda pergunta, eu fiz. NNs realizaram muito - no set de aprendizagem. E eles falharam no teste, pelo mesmo motivo que falha quando usamos o aprendizado FFPB. Em outras palavras, nossos NNs foram superespecializados, aprenderam a sobreviver no ambiente a que estão acostumados, mas não fora dele. Isso acontece muito na natureza.
A abordagem que tomamos foi destinada a compensar isso, forçando os NNs a terem um bom desempenho em qualquer fragmento aleatório do conjunto de dados, de modo que, esperamos, eles também pudessem executar em um conjunto de testes desconhecido. Em vez disso, eles falharam nos testes e no conjunto de aprendizado.
Imagine animais vivendo em um deserto. Muito sol, nada de neve. Essa é uma metaforização para o mercado, já que nossos dados de NNs desempenham o papel de ambiente. Os animais aprenderam a viver no deserto.
Imagine animais que vivem num clima frio. Neve e sem sol. Bem, eles se ajustaram.
No entanto, em nosso experimento, colocamos aleatoriamente nossas NNs em um deserto, na neve, na água, nas árvores. apresentando-os com diferentes fragmentos de dados (surgindo aleatoriamente, caindo, planos). Animais morreram.
Ou, em outras palavras, selecionamos a melhor Rede Neural para o conjunto de dados aleatórios 1, que, digamos, foi para o mercado em ascensão. Em seguida, apresentamos aos vencedores e seus filhos dados sobre um mercado em queda. As NNs tiveram um desempenho ruim, tiramos o melhor dos maus desempenhos, talvez, um dos filhos mutantes, que perderam a capacidade de negociar no mercado em ascensão, mas conseguiram alguma habilidade para lidar com a queda de um.
Depois viramos a mesa novamente e, novamente, obtivemos o melhor desempenho - mas o melhor entre os artistas com baixo desempenho. Nós simplesmente não davamos às nossas NNs nenhuma chance de se tornarem universais.
Existem técnicas que permitem que o algoritmo genético aprenda novas informações sem perder o desempenho em informações antigas (afinal, os animais podem viver no verão e no inverno, certo? Assim, a evolução é capaz de lidar com mudanças repetidas). Podemos discutir essas técnicas mais tarde, embora este artigo seja mais sobre o uso do Cortex Neural Networks Software, 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 a etapa anterior tem duas falhas principais. Primeiro, falhou em negociar com lucro. Está tudo bem, podemos tentar usar um sistema parcialmente treinado (foi lucrativo no começo). A segunda falha é mais séria: não temos controle sobre as coisas, que esse sistema faz. Por exemplo, pode aprender a ser lucrativo, mas com enormes perdas.
É um fato bem conhecido que, na vida real, a evolução pode otimizar mais de um parâmetro simultaneamente. Por exemplo, podemos pegar um animal que pode correr rápido e ser resistente ao frio. Por que não tentar fazer o mesmo em nosso sistema de negociação automatizado forex?
É quando usamos correções, que não são nada além do conjunto de punições adicionais. Digamos que nosso sistema negocie com drawdown 0.5, enquanto queremos confirmá-lo para 0 - 0.3 interval. Para "dizer" ao sistema que ele cometeu um erro, diminuímos seu lucro (um usado para determinar qual algoritmo genético venceu) ao grau, que é proporcional ao tamanho do DD. Então, o algoritmo de evolução cuida do resto.
Há poucos fatores a mais que queremos levar em consideração: podemos querer ter um número mais ou menos igual de operações de compra e venda, queremos ter mais operações lucrativas, depois fracassos, podemos querer que o gráfico de lucro seja seja linear e assim por diante.
Em evolution_01.tsc, implementamos um conjunto simples de correções. Primeiro de tudo, usamos um número grande para um valor de correção inicial. Nós multiplicamos para um valor pequeno (geralmente, entre 0 e 1), dependendo da "punição" que queremos aplicar. Então multiplicamos nosso lucro para essa correção. Como resultado, o lucro é corrigido, para refletir quanto o algoritmo genético corresponde aos nossos outros critérios. Então usamos o resultado para encontrar uma Rede Neural vencedora.
Estratégia de Negociação de FOREX: Discutindo 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 reconfortantes. No entanto, como no exemplo 0, as negociações longas são muito mais lucrativas, o que provavelmente significa que há um problema em nossa abordagem. No entanto, o sistema encontrou um equilíbrio entre duas condições iniciais contraditórias:
Há alguma dinâmica positiva tanto no conjunto de aprendizado quanto, mais importante, no conjunto de testes.
Quanto ao aprendizado posterior, no ciclo 278 podemos ver que nosso sistema foi super treinado. Isso significa que ainda temos progresso no aprendizado:
Mas o conjunto de testes mostra fraqueza:
Este é um problema comum com NNs: quando ensinamos em um conjunto de aprendizado, ele aprende a lidar com ele e, às vezes, aprende muito bem - na medida em que perde o desempenho no conjunto de testes.
Para lidar com esse problema, uma solução "tradicional" é usada: continuamos procurando a Rede Neural, que tem melhor desempenho no conjunto de testes, e a salvamos, sobrescrevendo a melhor anterior, sempre que um novo pico é atingido. Essa é a mesma abordagem, usada no treinamento FFBP, exceto que, desta vez, temos que fazer isso sozinhos (adicionando código, que procura uma melhor Rede Neural em um conjunto de testes, chamando SAVE_NN ou exportando pesos de Rede Neural para um Arquivo). Dessa forma, quando você interromper seu treinamento, você terá o melhor desempenho de ON TESTING SET salvo e esperando por você.
Note também que não é o máximo. o lucro que você busca, mas o desempenho ideal, portanto, considere usar correções ao procurar um melhor desempenho em um conjunto de testes.
Algoritmo Genético para Análise Técnica FOREX: Onde agora?
Depois de ganhar o seu vencedor Rede Neural, você pode seguir os passos, descritos no artigo anterior, para exportar pesos dessa Rede Neural, e então 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 maneiras de otimizar a Rede Neural, ao contrário do algoritmo FFBP, aqui você pode obter o avay de usar conjuntos de aprendizado e teste e mover o aprendizado seqüencial.
Forex Algorithmic Trading: um conto prático para engenheiros.
Como você deve saber, o mercado de câmbio (Forex ou FX) é 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, impulsionado pela minha curiosidade, dei meus primeiros passos no mundo da negociação algorítmica Forex, criando uma conta de demonstração e executando simulações (com dinheiro falso) na plataforma de negociação Meta Trader 4.
Depois de uma semana de "negociação", eu quase dobrei meu dinheiro. Impulsionado pela minha própria negociação algorítmica bem-sucedida, busquei mais fundo e acabei me inscrevendo em vários fóruns de FX. Logo, eu estava gastando horas lendo sobre sistemas de negociação algorítmica (conjuntos de regras que determinam se você deve comprar ou vender), indicadores personalizados, humor do mercado e muito mais.
Meu primeiro cliente
Por essa época, coincidentemente, ouvi dizer que alguém estava tentando encontrar um desenvolvedor de software para automatizar um sistema de negociação simples. Isso estava de volta aos meus tempos de faculdade quando eu estava aprendendo sobre programação simultânea em Java (threads, semáforos e todo esse lixo). Achei que esse sistema automatizado não poderia ser muito mais complicado do que o meu curso avançado de ciência de dados, então perguntei sobre o trabalho e participei do processo.
O cliente queria um software de negociação algorítmica construído com o MQL4, uma linguagem de programação funcional usada pela plataforma Meta Trader 4 para realizar ações relacionadas a ações.
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 os leitores não familiarizados com a negociação em Forex, veja as informações fornecidas pelo feed de dados:
Através do Meta Trader 4, é possível 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 tick. Em outras palavras, um tick é uma mudança no preço Bid ou Ask para um par de moedas. Durante mercados ativos, pode haver vários ticks por segundo. Durante os mercados lentos, pode haver minutos sem um tick. O tick é a pulsação de um robô do mercado monetário.
Quando você faz um pedido através de tal plataforma, você compra ou vende um certo volume de uma determinada moeda. Você também define os limites de stop-loss e take-profit. O limite de stop loss é a quantia máxima de pips (variações de preço) que você pode perder antes de desistir de uma negociação. O limite de take-profit é a quantidade de pips que você acumulará a seu favor antes de fazer um saque.
As especificações de negociação algorítmica do cliente eram simples: eles queriam um robô Forex baseado em dois indicadores. Como pano de fundo, os indicadores são muito úteis ao tentar definir um estado de mercado e tomar decisões comerciais, pois são baseados em dados passados (por exemplo, valor de preço mais alto nos últimos n dias). Muitos vêm embutidos no Meta Trader 4. No entanto, os indicadores em que meu cliente estava interessado vieram de um sistema de negociação customizado.
Eles queriam negociar sempre que dois desses indicadores personalizados se cruzassem, e apenas em um determinado ângulo.
Enquanto eu sujava as mãos, aprendi que os programas MQL4 têm a seguinte estrutura:
A função start é o coração de todo programa MQL4, uma vez que é executada toda vez que o mercado se move (ergo, essa função será executada uma vez por tick). Este é o caso, independentemente do período de tempo que você está usando. Por exemplo, você poderia estar operando no período de tempo H1 (uma hora), mas a função de início seria executada 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 intersecção dos indicadores e seus ângulos:
Enviando os pedidos:
Se você estiver interessado, poderá encontrar o código completo e executável no GitHub.
Backtesting
Uma vez que eu construí meu sistema de negociação algorítmica, eu queria saber: 1) se estava se comportando apropriadamente, e 2) se a estratégia de negociação Forex usada era boa.
Backtesting (às vezes escrito “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 proxy para o presente.
MT4 vem com uma ferramenta aceitável para backtesting uma estratégia de negociação Forex (hoje em dia, existem ferramentas mais profissionais que oferecem maior funcionalidade). Para começar, você configura seus prazos e executa seu programa sob uma simulação; a ferramenta simulará cada tick sabendo que para cada unidade deve abrir a determinado preço, fechar a um determinado preço e atingir os altos e baixos especificados.
Depois de comparar as ações do programa com os preços históricos, você terá um bom senso se está ou não executando corretamente.
Do backtesting, eu verifiquei a taxa de retorno do robô FX para alguns intervalos de tempo aleatórios; Escusado será dizer que eu sabia que o meu cliente não ia ficar rico com isso - os indicadores que ele escolheu, juntamente com a lógica de decisão, não eram rentáveis. Como exemplo, aqui estão os resultados da execução do programa na janela M15 para 164 operações:
Note que o nosso saldo (a linha azul) termina abaixo do seu ponto de partida.
Otimização de Parâmetro e suas Mentiras.
Embora o backtesting tenha me deixado desconfiado da utilidade desse robô FX, fiquei intrigado quando comecei a brincar com seus parâmetros externos e notei grandes diferenças na Taxa de Retorno geral. Essa ciência específica é conhecida como otimização de parâmetros.
Fiz alguns testes difíceis para tentar inferir o significado dos parâmetros externos na taxa de retorno e surgiu com algo parecido com isto:
Você pode pensar (como eu) que deveria usar o Parâmetro A. Mas a decisão não é tão direta quanto parece. Especificamente, observe a imprevisibilidade do Parâmetro A: para valores de erro pequenos, seu retorno muda drasticamente. Em outras palavras, é muito provável que o Parâmetro A supervalie os resultados futuros, pois qualquer incerteza, qualquer mudança, resultará em pior desempenho.
Mas, de fato, o futuro é incerto! E assim o retorno do Parâmetro A também é incerto. A melhor escolha, na verdade, é confiar na imprevisibilidade. Freqüentemente, um parâmetro com um retorno máximo mais baixo, mas uma previsibilidade superior (menos flutuação), será preferível a um parâmetro com alto retorno, mas com baixa previsibilidade.
A única coisa que você pode ter certeza é que você não conhece o futuro do mercado e pensar que sabe como o mercado vai se comportar com base em dados do passado é um erro. Por sua vez, você deve reconhecer essa imprevisibilidade em suas previsões de Forex.
Isso não significa necessariamente que devemos usar o Parâmetro B, porque mesmo os retornos mais baixos do Parâmetro A são melhores que o Parâmetro B; Isso é apenas para mostrar a você que a otimização de parâmetros pode resultar em testes que exageram os prováveis resultados futuros, e esse raciocínio não é óbvio.
Considerações Gerais de Negociação Algorítmica de Forex.
Desde essa primeira experiência algorítmica de negociação Forex, eu construí vários sistemas de negociação automatizados para clientes, e posso dizer-lhe que há sempre espaço para explorar e fazer análises Forex a serem feitas. Por exemplo, eu criei recentemente um sistema baseado em encontrar os chamados movimentos “Big Fish”; isto é, variações enormes de pips em minúsculas e minúsculas unidades de tempo. Este é um assunto que me fascina.
Construir seu próprio sistema de simulação de FX é 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ço como uma função da volatilidade em um mercado (EUR / USD por exemplo), e talvez fazer um modelo de simulação de Monte Carlo usando a distribuição por estado de volatilidade, usando qualquer grau de precisão que 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 write-up deu-lhe alguns pontos sobre como começar em sua própria estratégia de negociação Forex.
Leitura adicional
Atualmente, existe um vasto conjunto de ferramentas para construir, testar e melhorar as Automações do Sistema de Negociação: Negociação de Blox para testes, NinjaTrader para negociação, OCaml para programação, para citar alguns.
Eu li extensivamente sobre o mundo misterioso que é o mercado de moedas. Aqui estão alguns write-ups que eu recomendo para programadores e leitores entusiastas:
Entendendo o básico.
O que é o Forex trading tudo sobre?
Forex (ou FX) negociação é compra e venda via pares de moedas (por exemplo, USD vs EUR) no mercado de câmbio.
Como o Forex ganha dinheiro?
Corretores de Forex ganham dinheiro através de comissões e taxas. Comerciantes forex fazem (ou perdem) dinheiro com base em seu timing: se eles conseguirem vender alto o suficiente em comparação com quando compraram, podem gerar lucro.
O que é backtesting uma estratégia de negociação?
Backtesting é o processo de testar uma determinada estratégia ou sistema usando os eventos do passado.
O que é negociação algorítmica?
A negociação algorítmica é quando um robô / programa usa um conjunto de regras que informam quando comprar ou vender.
Комментариев нет:
Отправить комментарий