пятница, 4 мая 2018 г.

Algoritmo genético forex


То видео недоступно.


Очередь просмотра.


Удалить все Отключить.


Forexstf - Primeiro Algoritmo Genético Real Money Trading Robot.


Отите сохраните это видео?


Пожаловаться.


Пожаловаться на видео?


Понравилось?


Не понравилось?


Текст видео.


Este é o primeiro robô a incorporar a tecnologia de algoritmo genético que se adapta a qualquer condição de mercado ou tendência em segundos.


* Funciona no EURUSD como o par principal, bem como outros pares, como o GBPUSD.


* Suporta automaticamente corretores de 4 e 5 dígitos, bem como corretores de ECN.


* Nenhuma experiência prévia necessária. Plug & Play Guias de instalação completa e vídeos disponíveis.


Clique no link abaixo para saber mais sobre o Forexstf.


SnowCron.


GRATUITO E. Mail Classes.


Usando o 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 technue (descrita em artigos anteriores) de ensino da Rede Neural sobre a história, novamente, se prevermos, 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 níveis de perda / take profit 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 o sistema comercial (algoritmo genético) deveria ser.


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 os 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, para colocar de forma diferente, 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, uma das crianças mutantes, que perderam a capacidade de negociar no mercado em ascensão, mas conseguiram alguma habilidade para lidar com uma queda.


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 esses temas mais tarde, embora este artigo tenha mais a ver com o uso do Cortex Neural Networks Software do que com a criaçã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, que usamos 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.


Um sistema de negociação Forex baseado em um algoritmo genético.


Luís Mendes Pedro Godinho Joana Dias Autor do email.


Neste trabalho, será descrito um algoritmo genético que visa otimizar um conjunto de regras que constituem um sistema de negociação para o mercado Forex. Cada indivíduo da população representa um conjunto de dez regras técnicas de negociação (cinco para entrar em uma posição e cinco outras para sair). Essas regras têm 31 parâmetros no total, que correspondem aos genes dos indivíduos. A população evoluirá em um determinado ambiente, definido por uma série temporal de um par de moedas específico. A adequação de um dado indivíduo representa o quão bem ele foi capaz de se adaptar ao ambiente, e é calculado aplicando as regras correspondentes à série temporal e, em seguida, calculando a relação entre o lucro e o rebaixamento máximo (o índice de Stirling) . Dois pares de moedas foram usados: EUR / USD e GBP / USD. Dados diferentes foram utilizados para a evolução da população e para testar os melhores indivíduos. Os resultados alcançados pelo sistema são discutidos. Os melhores indivíduos são capazes de alcançar resultados muito bons na série de treinamento. Na série de testes, as estratégias desenvolvidas mostram alguma dificuldade em obter resultados positivos, se você levar em conta os custos de transação. Se você ignorar os custos de transação, os resultados são na maior parte positivos, mostrando que os melhores indivíduos têm alguma capacidade de previsão.


Agradecimentos


Gostaríamos de agradecer aos árbitros anônimos, cujos comentários nos ajudaram a melhorar este artigo.


Usando Algoritmos Genéticos para Prevê os Mercados Financeiros.


Burton sugeriu em seu livro "Uma Caminhada Aleatória em Wall Street" (1973) que "Um macaco vendado jogando dardos nas páginas financeiras de um jornal poderia selecionar um portfólio que funcionaria tão bem quanto um cuidadosamente selecionado por especialistas". Embora a evolução possa ter tornado o homem menos inteligente em escolher ações, a teoria de Charles Darwin é bastante eficaz quando aplicada de forma mais direta. (Para ajudá-lo a escolher ações, confira Como escolher um estoque.)


O que são algoritmos genéticos?


Nos mercados financeiros, os algoritmos genéticos são mais comumente usados ​​para encontrar os melhores valores de combinação de parâmetros em uma regra de negociação, e podem ser incorporados em modelos ANN projetados para selecionar ações e identificar negociações. Vários estudos demonstraram que estes métodos podem ser eficazes, incluindo "Algoritmos Genéticos: Gênese da Avaliação de Estoque" (2004) por Rama, e "As Aplicações de Algoritmos Genéticos na Otimização de Mineração de Dados do Mercado de Ações" (2004) por Lin, Cao, Wang Zhang. (Para saber mais sobre a ANN, consulte Redes neurais: previsão de lucros.)


Como funcionam os algoritmos genéticos.


Por exemplo, uma regra de negociação pode envolver o uso de parâmetros como Média móvel de divergência de convergência (MACD), Média móvel exponencial (EMA) e Estocástica. Um algoritmo genético introduziria valores nesses parâmetros com o objetivo de maximizar o lucro líquido. Com o tempo, pequenas mudanças são introduzidas e aquelas que têm um impacto desejável são mantidas para a próxima geração.


Existem três tipos de operações genéticas que podem ser realizadas:


Os cruzamentos representam a reprodução e o cruzamento biológico visto na biologia, pelo qual uma criança assume certas características de seus pais. As mutações representam uma mutação biológica e são usadas para manter a diversidade genética de uma geração para outra, introduzindo pequenas mudanças aleatórias. As seleções são o estágio no qual os genomas individuais são escolhidos de uma população para posterior reprodução (recombinação ou cruzamento).


Esses três operadores são usados ​​em um processo de cinco etapas:


Inicialize uma população aleatória, onde cada cromossomo é n - comprimento, sendo n o número de parâmetros. Ou seja, um número aleatório de parâmetros é estabelecido com n elementos cada. Selecione os cromossomos, ou parâmetros, que aumentam os resultados desejáveis ​​(presumivelmente lucro líquido). Aplique operadores de mutação ou cruzamento aos pais selecionados e gere uma descendência. Recombine os descendentes e a população atual para formar uma nova população com o operador de seleção. Repita os passos dois a quatro.


Com o tempo, esse processo resultará em cromossomos (ou parâmetros) cada vez mais favoráveis ​​para uso em uma regra comercial. O processo é encerrado quando um critério de parada é atendido, o que pode incluir tempo de execução, adequação, número de gerações ou outros critérios. (Para mais informações sobre o MACD, leia Trading The MACD Divergence.)


Usando Algoritmos Genéticos na Negociação.


Ao usar esses aplicativos, os comerciantes podem definir um conjunto de parâmetros que são otimizados usando um algoritmo genético e um conjunto de dados históricos. Alguns aplicativos podem otimizar quais parâmetros são usados ​​e os valores para eles, enquanto outros são principalmente focados em simplesmente otimizar os valores para um determinado conjunto de parâmetros. (Para saber mais sobre essas estratégias derivadas do programa, consulte O poder das negociações do programa.)


Dicas e truques importantes de otimização.


A escolha de parâmetros é uma parte importante do processo e os comerciantes devem procurar parâmetros que se correlacionem com as alterações no preço de um determinado título. Por exemplo, experimente diferentes indicadores e veja se algum deles parece se correlacionar com as principais viradas do mercado.


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 fluido 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 4, 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.


Quando estou suja, aprendi que 4 programas têm a seguinte estrutura:


A função de início é o coração de todo programa 4, uma vez que é executado 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.


4 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.

Комментариев нет:

Отправить комментарий