Como fazer um robô comercial em nenhum momento.
Para fazer um robô de negociação, você precisa de um sistema de comércio.
Negociar nos mercados financeiros envolve muitos riscos, incluindo o mais crítico - o risco de tomar uma decisão comercial errada. O sonho de todo comerciante é encontrar um robô comercial, que está sempre em boa forma e não sujeito a fraquezas humanas - medo, ganância e impaciência.
Cada recém-chegado quer obter ou criar um sistema de negociação claro e rigoroso que possa ser apresentado sob a forma de algoritmos e se livrar completamente das operações de rotina. É possível?
Um sistema de negociação é uma condição necessária para entrar no mercado e esse sistema deve ser lucrativo, é claro. Quando os recém-chegados chegam ao mercado, geralmente ficam sobrecarregados pela grande massa de informações difíceis de entender. Livros e fóruns de comerciantes podem fornecer alguma ajuda nesse caso.
Infelizmente, nem todos os autores são comerciantes bem-sucedidos e nem todos os traders bem-sucedidos escrevem livros. Muitos recursos web especiais são criados apenas para ganhar lucro para seus proprietários, pois é muito mais difícil negociar seu próprio dinheiro do que emitir previsões e ensinar sistemas de negociação.
Cada comerciante deve passar de forma independente todos os estágios de uma criação do sistema comercial. Há um ditado popular que não importa qual sistema você usa para negociação, o principal é que você deve realmente negociar de acordo com esse sistema. Caso contrário, a negociação no mercado se transforma em uma aposta com um resultado previsível.
Trading Robots e Forex.
Acredita-se que o mercado Forex tenha uma grande liquidez. Além disso, permite negociar 24 horas por dia, ao contrário de muitos outros mercados. Portanto, muitos comerciantes tentam fazer robôs de negociação especialmente para o mercado Forex, uma vez que oferece um grande número de instrumentos de negociação.
No entanto, os céticos afirmam que todos os pares de moedas estão fortemente correlacionados entre si, proporcionando uma volatilidade muito baixa no mercado. Mas seus oponentes respondem que cada par de moedas tem suas próprias características e que a baixa volatilidade é compensada por uma grande alavancagem.
Em qualquer caso, os instrumentos de Forex são atraentes para a criação de robôs de negociação e a maioria dos defensores do comércio automatizado aprimora suas habilidades em pares de moedas.
Os terminais de negociação MetaTrader 4 e MetaTrader 5 são especialmente projetados para desenvolver facilmente sistemas de negociação automatizados, mas ao mesmo tempo sua interface também é conveniente para negociação manual.
Como começar a fazer um robô comercial?
Existem muitas abordagens para construir um sistema de negociação automatizado. Descreveremos apenas algumas das principais.
A primeira abordagem baseia-se em matemática. Um desenvolvedor tenta criar uma espécie de equação que considere muitos fatores. Esta abordagem baseia-se na firme convicção de que os movimentos de preços são gerenciados por um modelo que pode ser encontrado usando os dados históricos disponíveis.
Na maioria dos casos, os seguidores de tal abordagem sabem muito de matemática, mas não sabem nada sobre / não estão interessados no mercado. O mercado é uma abstração pura, um tipo de jogo intelectual para eles. Essa abordagem geralmente leva a muitos anos de estudo e desenvolvimento, enquanto um resultado definido na forma de um sistema de negociação automatizado em funcionamento não é tão importante.
A segunda abordagem é baseada no estudo das leis de mercado. Nenhuma tentativa é feita para entender por que o preço sobe ou desce quando vários números de análise técnica aparecem em um gráfico. A vantagem dessa abordagem é que ela não requer nenhum conhecimento especial de matemática e não faz suposições sobre a força motriz do mercado.
É mais claro e conveniente quando se estuda negociação. É mais popular entre os comerciantes que receberam reconhecimento universal. A desvantagem da abordagem é a necessidade de rastrear constantemente todos os símbolos necessários.
Mais cedo ou mais tarde, um trader começa a considerar a automação de processos de negociação e a questão mais considerável aparece nesse estágio - a complexidade de formalizar regras de negociação ao tentar expressá-las na forma de algoritmos. Em alguns casos, os operadores que tentam encomendar um robô comercial não podem descrever as regras de negociação e encontrar pontos em comum com os programadores.
A terceira abordagem baseia-se na tentativa de criar uma "caixa preta" baseada em redes neurais com o uso das ferramentas pré-fabricadas amplamente disponíveis em pacotes especiais de software e matemática. A criação de um sistema de negociação automatizado com os elementos da inteligência artificial é uma tarefa empolgante e desafiadora, mesmo para os recém-chegados, já que não requer conhecimento profundo em matemática nem experiência em programação - tudo é feito usando recursos visuais.
Um comerciante deve conhecer os conceitos básicos de indicadores técnicos, possuir uma capacidade para preparar dados de preços necessários e experiência em algum pacote definido para trabalhar com redes neurais. A principal desvantagem dessa abordagem é que um robô de negociação obtido usando essas ferramentas especializadas para trabalhar com redes neurais é, na verdade, uma "caixa preta". Os comerciantes não conhecem seus princípios de funcionamento e, geralmente, é impossível prever qual fase do mercado será a mais problemática para o robô.
Os programadores geralmente escolhem a quarta abordagem - eles começam a fazer um robô de negociação desde o começo sem gastar tempo para negociação manual. Por que negociar manualmente? Você pode fazer um robô passar alguns meses e colher os benefícios dos seus esforços, então.
Mas «sem dores, sem ganhos». Na maioria dos casos, os programadores começam a criar toda a infra-estrutura necessária usando uma linguagem de programação familiar em vez de apenas fazer um robô comercial - obter e processar dados de preços, representação visual de gráficos e indicadores, meios personalizados de testar estratégias em dados históricos e assim por diante.
Eles ganham muita experiência no processo. Mas na maioria dos casos, essa experiência não os aproxima do objetivo final - a criação de um sistema de negociação automatizado. E mesmo que um robô comercial seja criado, não há garantias de que ele será lucrativo. E se um programador quiser escrever outro sistema de negociação? Reestruturação profunda e novos erros de programação são inevitáveis.
Há também a quinta abordagem - comprar um sistema de negociação pronto na forma de um robô comercial. Neste caso, um comerciante atua como um operador ou um sintonizador. Essa abordagem economiza muito tempo (não é necessário aprender muitas coisas novas) e permite que os operadores entrem rapidamente no mundo da negociação automatizada.
A principal desvantagem desta abordagem decorre de suas vantagens: você não conhece os princípios de operação do seu robô comercial e sua estrutura. E mesmo que um vendedor forneça uma descrição detalhada do sistema de negociação implementado, você nunca terá certeza disso.
No entanto, nenhuma das abordagens mencionadas pode lhe dar garantia absoluta, exceto um depósito bancário. Mas essa não é uma solução muito adequada para pessoas interessadas em negociação no mercado e maneiras de aumentar seus ativos privados.
Qual é a melhor abordagem para o comércio automatizado para um comerciante?
Cada uma das cinco abordagens descritas tem suas vantagens e corresponde a algum tipo definido de comerciante. É improvável que você escolha a primeira abordagem (descrição analítica do mercado) sem um bom histórico matemático. É igualmente improvável que você comece a fazer robôs comerciais baseados em redes neurais. No entanto, essas duas abordagens são muito estimulantes e proporcionam um bom exercício intelectual.
Abaixo, discutiremos apenas a segunda abordagem, que já é considerada a clássica. Essa é a abordagem geralmente escolhida pelos novos seguidores da negociação automatizada, já que a análise técnica continua sendo a principal área de conhecimento ao aprender noções básicas de negociação.
Outra vantagem da segunda abordagem é que depois de gastar algum tempo para negociação manual e obter o senso de mercado, você já terá uma boa compreensão das ferramentas de análise técnica. Além disso, você poderá programar estratégias de negociação ou criar redes neurais em um nível superior.
Os primeiros passos para fazer um robô comercial.
Para criar um sistema de negociação automatizado, você precisa de habilidades de programação e conhecimento de todos os meandros do processamento de solicitações comerciais. Mas, em primeiro lugar, você pode começar com os Expert Advisors, fabricados em linha, negociando robôs da biblioteca gratuita do Code Base.
Faça o download de qualquer Expert Advisor (robô de negociação) e lance-o nos terminais de cliente do Strategy Tester do MetaTrader 4 ou MetaTrader 5. Selecione um intervalo de histórico mostrando uma tendência forte e um intervalo com um plano. Execute a otimização de um parâmetro de entrada do Expert Advisor e examine suas diferenças nesses dois intervalos.
Inicie um Expert Advisor com os parâmetros ideais para um plano em um intervalo de tendência e com os parâmetros ideais para uma tendência em um intervalo simples. Examine as diferenças nos resultados de negociação, distribuições de ofertas e outros parâmetros estatísticos. Como resultado, você saberá quanto o comportamento do seu sistema de negociação pode variar quando a situação do mercado mudar.
Seria melhor tentar várias estratégias de negociação padrão usando este método em diferentes partes da história e vários símbolos. Tal teste impede a instalação de um sistema de negociação para algum intervalo histórico definido e fornece uma melhor compreensão dos sistemas de tendência e de tendência contrária.
O próximo passo seria criar sistemas de negociação mais complexos com base na combinação de sinais simples já existentes do MQL5 Wizard set. Você pode testar e desenvolver sua intuição comercial, classificando sinais ruins de um sistema usando um filtro baseado em outro sistema sem meios de programação.
O principal aqui é não superar demais. Quanto mais os parâmetros de entrada que um sistema de negociação tem, mais fácil será montar. Houve muitas discussões sobre as diferenças entre otimização e adaptação. Não há soluções amplamente aceitas aqui. Mas a visualização dos resultados de teste / otimização e seu próprio bom senso podem ajudá-lo.
Aprenda a identificar os parâmetros de entrada mais críticos que afetam seu sistema de negociação de todo o conjunto de dados de entrada. Não preste muita atenção aos parâmetros secundários que levam tempo durante a otimização, mas não afetam a própria lógica do sistema. Lembre-se de que um bom sistema de negociação sempre demonstra um pequeno movimento livre de parâmetros secundários, mas não apresenta volatilidade dramática no caso de mudanças no mercado insignificantes.
Você pode gastar tanto tempo nesta fase, como desejar, até ter certeza de que pode entender qualquer estratégia de negociação examinando resultados de teste e otimização. O conhecimento dos pontos fortes e fracos dos sistemas padrão permitirá que você esteja mais bem preparado ao criar seu próprio robô comercial.
Programando um robô de negociação.
Suponha que você tenha aprendido / esteja aprendendo a linguagem de programação MQL4 ou MQL5 e agora você está pronto para escrever seu primeiro Expert Advisor para o terminal do cliente MetaTrader. Vários casos são possíveis aqui.
Primeiro, você pode examinar vários robôs comerciais prontos descritos nos artigos para entender melhor as complexidades de programação.
Segundo, você pode fazer perguntas sobre MQL4munity ou MQL5munity, se tiver algum problema não resolvido. Participantes experientes da comunidade geralmente ajudam os recém-chegados a mostrar sincero interesse pelo assunto.
Terceiro, você pode solicitar a melhoria ou o desenvolvimento de um Expert Advisor ou um indicador no serviço Jobs, caso não seja capaz de criar um programa necessário por conta própria. Mas mesmo que você faça um pedido por meio do serviço freelancer, você deve ter alguma idéia sobre o teste de estratégia para encontrar um idioma comum com um desenvolvedor.
Além disso, o conhecimento básico de uma linguagem de programação permite implementar pequenas correções e alterações no código depois que o trabalho já foi concluído. Afinal, não seria muito conveniente chamar um programador para corrigir todos os pequenos problemas que você encontrar. Seria muito mais fácil e rápido corrigi-lo sozinho.
Não há necessidade de reinventar a roda.
Como encontrar sua própria estratégia de negociação, ou pelo menos em que direção você deve focar sua busca? Todos os comerciantes protegem seus próprios sistemas de negociação, se tiverem um. Todos os recém-chegados querem criar um sistema lucrativo ou obter um sistema pronto. Ao mesmo tempo, qualquer solução obtida parece ser muito simples em comparação com as idéias dos recém-chegados sobre um sistema de comércio genuíno.
Os homens do exército em todo o mundo são propensos a níveis excessivos de sigilo. Há muitas piadas sobre isso, incluindo a seguinte: "O segredo militar não está no que você está estudando, - um oficial diz aos estudantes das escolas militares, - mas no fato de que exatamente você está estudando isso". A situação dos sistemas de negociação é semelhante: a maioria dos traders usa idéias de negociação simples e conhecidas com pequenas modificações, por exemplo, adicionando o Trailing Stop ou confirmações de indicadores de tendência.
Existem muitos fóruns de traders com acesso limitado, onde os participantes unem seus esforços para desenvolver ou melhorar alguns sistemas de negociação secretos. O mais interessante é que esses sistemas não contêm nada de especial. Geralmente, uma idéia bem conhecida (como "comércio com a tendência") é usada como base. Em seguida, ele é aperfeiçoado com alguns novos indicadores desconhecidos do público em geral.
Portanto, você pode facilmente obter códigos de código de robô comercial disponíveis e tentar usá-los corretamente com vários símbolos e prazos. Outro exemplo popular pode ser mencionado aqui: "Você não gosta de gatos? Você simplesmente não sabe como cozinhar!" É difícil acreditar, mas a probabilidade de você desenvolver algo realmente novo é muito pequena. O principal aqui é criar um sistema usando os ingredientes disponíveis. Não pense que alguns gênios tenham acesso a alguns sistemas secretos dos laboratórios da NASA. Esse é o segredo do Graal.
Apenas alguns poucos conseguirão passar.
Então, por que ninguém usa idéias de negociação, se elas estão literalmente ao alcance da mão? A resposta provavelmente está na psicologia humana. O pessoal de muitos bancos e grandes fundos de investimento inclui comerciantes realizando acordos de acordo com regras estritas e dentro de volumes limitados. Mas, por alguns motivos, apenas alguns traders institucionais deixam suas empresas e começam a negociar usando seu próprio dinheiro.
Acontece que você precisa não apenas de uma estratégia de negociação, mas também da disciplina de ferro para segui-la. Muitos comerciantes descobriram com pesar que eles também têm os mesmos problemas psicológicos descritos nos livros. Depois de perceber que o pior inimigo dos comerciantes são eles mesmos, um recém-chegado começa a pensar em fazer um robô comercial para eliminar um fardo psicológico.
Embora eu me desvie um pouco do assunto, devo mencionar os lendários comerciantes de tartarugas que negociaram com êxito em múltiplos mercados no final do século XX. Leia "Way of the Turtle" e você verá que a coisa mais importante para um trader é uma autodisciplina e não um sistema secreto. Infelizmente, a maioria dos recém-chegados não será capaz de seguir uma estratégia lucrativa, mesmo que seja gratuita.
O problema é que a maioria das estratégias de negociação perfeitamente ajustadas para o comércio manual dificilmente podem ser formalizadas e transcritas para uma linguagem de programação. As estratégias que podem ser facilmente formalizadas (por exemplo, aquelas que envolvem a intersecção de duas médias móveis) são muito simples e exigem muitos refinamentos e melhorias, para que possam ser usadas na prática. Assim, uma ideia simples é gradualmente complicada por uma abundância de parâmetros externos que impedem um robô de negociação de entradas falsas e erros claramente visíveis para um desenvolvedor. Um problema de otimização de robôs de negociação surge. Esse processo não deve se transformar em uma otimização excessiva e em um intervalo de histórico específico.
Para resolver este problema, o teste direto usando os parâmetros do sistema obtidos foi implementado no terminal MetaTrader 5. Se os resultados dos testes forward não diferirem significativamente daqueles obtidos na seção de otimização, há uma probabilidade de que um robô comercial fique estável o suficiente por algum tempo após seu lançamento em uma conta de negociação. Um intervalo de tempo para a otimização de parâmetros e um valor real de "algum tempo" dependem de um determinado sistema de negociação.
Assim, a otimização de um robô de negociação antes de lançá-lo em uma conta de negociação lembra o desenrolar de um sling - quanto mais cuidadosamente desenrolamos um projétil do sling, mais ele voará e mais precisa será sua trajetória. Um robô de negociação completamente desenvolvido manterá um resultado positivo em uma conta de negociação por mais tempo do que um robô de negociação obtido como resultado de um ajuste. Podemos dizer que o Grail é uma idéia de trabalho e ajuste correto dos parâmetros realizados de tempos em tempos nos momentos de mudanças nas condições do mercado.
Isto pode ser ilustrado pelos resultados do Campeonato de Negociação Automatizada, que já existe há muitos anos. Os Expert Advisors enviados por todos os participantes passam por testes automáticos no intervalo de tempo de janeiro até o final de julho. O principal requisito para passar o teste automático é um lucro obtido por oito meses de teste. Mas menos de metade dos robôs de negociação admitidos para o Campeonato continuam lucrativos depois de meses de trabalho autônomo.
Você também pode testar suas habilidades para fazer e ajustar seu robô de negociação para participar do Campeonato e obter os resultados dos testes avançados do seu Expert Advisor. Além disso, a participação é gratuita e os prêmios são impressionantes. Esperamos ver você lá!
Conclusão.
Comerciantes profissionais intraday passam muitas horas sentados em seus computadores e esperando o momento certo para fazer um acordo. Claro, eles não podem estar em boa forma o tempo todo.
A maioria dos comerciantes chega à conclusão de que suas ações violam suas próprias regras de negociação. Nem todos os sistemas de negociação podem ser completamente formalizados, mas mesmo esses sistemas podem, na maioria dos casos, adotar ferramentas adicionais, como indicadores, sistemas analíticos e filtros de sinais falsos.
Nós não fazemos nenhuma recomendação especial aqui sobre o aprendizado de linguagens MQL4 ou MQL5, pois há muitos outros artigos úteis sobre esse assunto. O objetivo deste artigo foi fornecer uma idéia inicial sobre como começar a fazer seu robô comercial para os terminais MetaTrader 4 e MetaTrader 5.
Esperamos que este artigo economize tempo para os recém-chegados e mostre a direção certa na difícil tarefa de desenvolver um sistema de negociação automatizado.
Traduzido do russo por MetaQuotes Software Corp.
Prós e contras de sistemas de negociação automatizados.
Traders e investidores podem transformar regras precisas de entrada, saída e gerenciamento de dinheiro em sistemas de negociação automatizados que permitem que os computadores executem e monitorem os negócios. Uma das maiores atrações da automação estratégica é que ela pode tirar um pouco da emoção do comércio, já que as negociações são feitas automaticamente quando certos critérios são atendidos. Este artigo irá apresentar aos leitores e explicar algumas das vantagens e desvantagens, bem como as realidades, dos sistemas de negociação automatizados. (Para leitura relacionada, consulte O poder das operações do programa.)
O que é um sistema de negociação automatizado?
[Os sistemas de negociação automatizada podem usar muitos indicadores técnicos diferentes para definir pontos de entrada e saída. O Curso de Análise Técnica da Investopedia fornece uma visão geral detalhada desses indicadores técnicos e padrões de gráficos que os comerciantes podem usar ao criar sistemas de negociação automatizados.]
Algumas plataformas de negociação têm "wizards" de construção de estratégias que permitem aos usuários fazerem seleções de uma lista de indicadores técnicos comumente disponíveis para construir um conjunto de regras que podem ser automaticamente negociadas. O usuário poderia estabelecer, por exemplo, que um longo comércio será inserido uma vez que a média móvel de 50 dias cruza acima da média móvel de 200 dias em um gráfico de cinco minutos de um instrumento comercial específico. Os usuários também podem inserir o tipo de pedido (mercado ou limite, por exemplo) e quando a negociação será acionada (por exemplo, no fechamento da barra ou abertura da próxima barra) ou usar as entradas padrão da plataforma. Muitos comerciantes, no entanto, optam por programar seus próprios indicadores e estratégias personalizados, ou trabalhar em estreita colaboração com um programador para desenvolver o sistema. Embora isso geralmente requer mais esforço do que usar o assistente da plataforma, ele permite um grau de flexibilidade muito maior e os resultados podem ser mais gratificantes. (Infelizmente, não existe uma estratégia de investimento perfeita que garanta o sucesso. Para mais, consulte Uso de indicadores técnicos para desenvolver estratégias comerciais.)
Uma vez estabelecidas as regras, o computador pode monitorar os mercados para encontrar oportunidades de compra ou venda com base nas especificações da estratégia de negociação. Dependendo das regras específicas, assim que uma transação for efetuada, quaisquer ordens para perdas de parada de proteção, paradas finais e metas de lucro serão automaticamente geradas. Em mercados de rápido movimento, essa entrada instantânea de pedidos pode significar a diferença entre uma pequena perda e uma perda catastrófica no caso de a negociação se mover contra o comerciante.
Vantagens dos Sistemas de Negociação Automatizada.
Há uma longa lista de vantagens em ter um computador monitorando os mercados para oportunidades de negociação e executando as negociações, incluindo:
Minimize Emoções. Sistemas automatizados de negociação minimizam as emoções durante todo o processo de negociação. Ao manter as emoções sob controle, os comerciantes normalmente têm um tempo mais fácil de aderir ao plano. Uma vez que as ordens de negociação são executadas automaticamente uma vez cumpridas as regras de negociação, os comerciantes não poderão hesitar ou questionar o negócio. Além de ajudar os operadores que têm medo de "puxar o gatilho", a negociação automatizada pode refrear aqueles que estão aptos a fazer overtrade - comprar e vender em todas as oportunidades percebidas.
Capacidade de backtest. O backtesting aplica regras de negociação a dados históricos do mercado para determinar a viabilidade da ideia. Ao projetar um sistema de negociação automatizada, todas as regras precisam ser absolutas, sem espaço para interpretação (o computador não pode fazer suposições - é preciso dizer exatamente o que fazer). Os comerciantes podem tomar esses conjuntos precisos de regras e testá-los em dados históricos antes de arriscar dinheiro em negociação ao vivo. Um backtesting cuidadoso permite que os traders avaliem e ajustem uma ideia de negociação e determinem a expectativa do sistema - a quantia média que um trader pode esperar ganhar (ou perder) por unidade de risco. (Oferecemos algumas dicas sobre esse processo que podem ajudar a refazer suas estratégias de negociação atuais. Para mais, consulte Backtesting: Interpreting the Past.)
Preserve Discipline. Como as regras comerciais são estabelecidas e a execução comercial é executada automaticamente, a disciplina é preservada mesmo em mercados voláteis. A disciplina é muitas vezes perdida devido a fatores emocionais, como o medo de sofrer uma perda, ou o desejo de obter um pouco mais de lucro de um comércio. A negociação automatizada ajuda a garantir que a disciplina seja mantida porque o plano de negociação será seguido exatamente. Além disso, o erro do piloto é minimizado e uma ordem para comprar 100 ações não será inserida incorretamente como uma ordem para vender 1.000 ações.
Alcançar Consistência. Um dos maiores desafios na negociação é planejar o comércio e negociar o plano. Mesmo que um plano de negociação tenha o potencial de ser lucrativo, os operadores que ignoram as regras estão alterando qualquer expectativa que o sistema teria. Não existe um plano de negociação que ganhe 100% do tempo - as perdas fazem parte do jogo. Mas as perdas podem ser psicologicamente traumatizantes, de modo que um operador que tenha dois ou três negócios perdedores seguidos pode decidir pular a próxima negociação. Se esta próxima negociação tiver sido um vencedor, o trader já destruiu qualquer expectativa que o sistema tivesse. Os sistemas de negociação automatizados permitem que os negociadores alcancem consistência negociando o plano. (É impossível evitar um desastre sem regras de negociação. Para mais, veja 10 passos para construir um plano de negociação vencedor).
Velocidade de entrada de pedido aprimorada. Como os computadores respondem imediatamente às mudanças nas condições de mercado, os sistemas automatizados são capazes de gerar pedidos assim que os critérios de negociação são atendidos. Entrar ou sair de uma negociação alguns segundos antes pode fazer uma grande diferença no resultado da negociação. Assim que uma posição é inserida, todos os outros pedidos são gerados automaticamente, incluindo perdas de parada de proteção e metas de lucro. Os mercados podem se mover rapidamente, e é desmoralizante ter uma negociação atingindo a meta de lucro ou ultrapassar um nível de stop loss - antes que os pedidos possam ser inseridos. Um sistema de negociação automatizado impede que isso aconteça.
Desvantagens e Realidades dos Sistemas de Negociação Automatizada.
Os sistemas de negociação automatizados possuem muitas vantagens, mas existem algumas quedas e realidades às quais os investidores devem estar cientes.
Falhas mecânicas. A teoria por trás da negociação automatizada faz com que pareça simples: configurar o software, programar as regras e assisti-lo ao comércio. Na realidade, porém, a negociação automatizada é um método sofisticado de negociação, mas não infalível. Dependendo da plataforma de negociação, uma ordem de negociação pode residir em um computador - e não em um servidor. O que isso significa é que, se uma conexão com a Internet for perdida, um pedido pode não ser enviado ao mercado. Também pode haver uma discrepância entre os "negócios teóricos" gerados pela estratégia e o componente da plataforma de entrada de pedidos que os transforma em transações reais. A maioria dos traders deve esperar uma curva de aprendizado ao usar sistemas de negociação automatizados, e geralmente é uma boa ideia começar com pequenos tamanhos de negociação enquanto o processo é refinado.
Monitorização Embora seja ótimo ligar o computador e sair para o dia, os sistemas de negociação automatizados exigem monitoramento. Isso ocorre devido ao potencial de falhas mecânicas, como problemas de conectividade, perdas de energia ou falhas no computador, além de peculiaridades do sistema. É possível que um sistema de negociação automatizado enfrente anomalias que possam resultar em pedidos incorretos, pedidos ausentes ou pedidos duplicados. Se o sistema for monitorado, esses eventos podem ser identificados e resolvidos rapidamente.
Os comerciantes têm a opção de executar seus sistemas de negociação automatizados através de uma plataforma de negociação baseada em servidor, como o Strategy Runner. Essas plataformas freqüentemente oferecem estratégias comerciais para venda, um assistente para que os comerciantes possam projetar seus próprios sistemas ou a capacidade de hospedar sistemas existentes na plataforma baseada no servidor. Por uma taxa, o sistema de negociação automatizado pode pesquisar, executar e monitorar negócios - com todos os pedidos que residem em seu servidor, resultando em entradas de pedidos potencialmente mais rápidas e confiáveis.
Embora apelando para uma variedade de fatores, os sistemas de negociação automatizados não devem ser considerados substitutos para negociações executadas com cautela. Falhas mecânicas podem acontecer e, como tal, esses sistemas exigem monitoramento. As plataformas baseadas em servidor podem fornecer uma solução para os comerciantes que desejam minimizar os riscos de falhas mecânicas. (Para leitura relacionada, veja Day Trading Strategies For Beginners.)
Codificação de Sistemas de Negociação.
Por Justin Kuepper.
Como os sistemas de negociação automatizados são criados?
Este tutorial se concentrará na segunda e na terceira partes deste processo, onde suas regras são convertidas em um código que seu software de negociação pode entender e usar.
Vantagens e desvantagens.
Um sistema automatizado tira a emoção e o trabalho ocupado da negociação, o que permite que você se concentre em melhorar suas regras de estratégia e gerenciamento de dinheiro. Uma vez que um sistema lucrativo é desenvolvido, ele não requer nenhum trabalho de sua parte até que ele quebre, ou as condições do mercado exigem uma mudança. Desvantagens:
Se o sistema não estiver corretamente codificado e testado, grandes perdas podem ocorrer muito rapidamente. Às vezes é impossível colocar certas regras no código, o que dificulta o desenvolvimento de um sistema de negociação automatizado. Neste tutorial, você aprenderá como planejar e projetar um sistema de negociação automatizado, como converter esse design em código que seu computador entenderá, como testar seu plano para garantir o desempenho ideal e, finalmente, como colocar seu sistema em uso.
Construindo Sistemas de Negociação Automatizada.
1ª edição.
Com uma introdução ao Visual C ++ 2005.
Acesso institucional.
Secure Checkout.
Frete grátis.
Nenhuma ordem mínima.
Índice.
Capítulo 1 Introdução.
Seção I: Introdução ao Visual C ++ 2005.
Capítulo 2 O quadro.
Capítulo 3 Referências de rastreamento.
Capítulo 4 Classes e Objetos.
Capítulo 5 Tipos de referência.
Capítulo 6 Tipos de valor.
Capítulo 7 Objetos não gerenciados.
Capítulo 8 Composição.
Capítulo 9 Propriedades.
Capítulo 10 Estruturas e enumerações.
Capítulo 11 Herança.
Capítulo 12 Conversão e fundição.
Capítulo 13 Sobrecarga do operador.
Capítulo 14 Delegados e Eventos.
Capítulo 15 Arrays.
Capítulo 16 Gerando Números Aleatórios.
Capítulo 17 Tempo e Temporizadores.
Capítulo 18 Fluxos de entrada e saída.
Capítulo 19 Manipulação de Exceções.
Capítulo 20 Coleções.
Capítulo 21 STL / STL.
Capítulo 22 DataSets.
Capítulo 23 Conexão a bancos de dados.
Capítulo 24 Linguagem de consulta estruturada.
Capítulo 26 Protocolo de troca de informações financeiras.
Capítulo 27 Serialização.
Capítulo 28 Serviços do Windows.
Capítulo 29 Configuração e Pacotes de Instalação.
Seção II: Concorrência.
Capítulo 30 Threading.
Capítulo 31 Classes de Sincronização.
Capítulo 32 Sockets.
Seção III: interoperabilidade e conectividade.
Capítulo 33 Marshaling.
Capítulo 34 Ponteiros Internos e de Fixação.
Capítulo 35 Conectando-se a DLLs gerenciadas.
Capítulo 36 Conectando às DLLs do Componenet Object Model (COM) com Interoperabilidade COM.
Capítulo 37 Conexão a DLLs C ++ com Serviços de Invocação de Plataforma.
Capítulo 38 Conexão ao Excel.
Capítulo 39 Conexão ao TraderAPI.
Capítulo 40 Conexão ao XTAPIConnection_Example.
Seção IV: Sistemas de Negociação Automatizada.
Capítulo 41 Building Trading Systems.
Capítulo 42 K "V Metodologia de Desenvolvimento do Sistema de Negociação.
Capítulo 43 Classes do Sistema de Negociação Automatizado.
Capítulo 44 Single-Threaded, Technical Analysis System.
Capítulo 45 Padrão de Design do Produtor / Consumidor.
Capítulo 46 Multithreaded, Statistical Arbitrage System.
Descrição.
Nos próximos anos, as indústrias proprietárias de hedge funds e de negociação migrarão em grande parte para sistemas de seleção e execução de comércio automatizado. De fato, isso já está acontecendo. Embora vários livros de finanças forneçam código C ++ para derivativos de precificação e realizem cálculos numéricos, nenhum aborda o tópico de uma perspectiva de design do sistema. Este livro será dividido em duas seções: técnicas de programação e tecnologia de sistema de negociação automatizada (ATS) e ensinar o design e o desenvolvimento de sistemas financeiros de forma absoluta usando o Microsoft Visual C ++ 2005. O MS Visual C ++ 2005 foi escolhido como o idioma de implementação principalmente porque a maioria das empresas de trading e grandes bancos desenvolveram e continuam a desenvolver seus algoritmos proprietários em ISO C ++ e Visual C ++ fornece a maior flexibilidade para incorporar esses algoritmos legados em sistemas operacionais. Além disso, o Framework e o ambiente de desenvolvimento fornecem as melhores bibliotecas e ferramentas para o rápido desenvolvimento dos sistemas de negociação. A primeira seção do livro explica o Visual C ++ 2005 em detalhes e concentra-se no conhecimento de programação requerido para o desenvolvimento automatizado do sistema de negociação, incluindo design orientado a objetos, delegados e eventos, enumerações, geração aleatória de números, temporização e temporizadores e gerenciamento de dados com STL e coleções. Além disso, como a maioria dos códigos legados e de modelagem nos mercados financeiros é feita em ISO C ++, este livro analisa em profundidade vários tópicos avançados relacionados ao gerenciamento e interoperabilidade de memória gerenciada / não gerenciada / COM. Além disso, este livro fornece dezenas de exemplos que ilustram o uso da conectividade de banco de dados com o ADO e um tratamento extensivo de SQL e FIX e XML / FIXML. Tópicos avançados de programação, como encadeamento, soquetes, bem como o uso de C ++ para se conectar ao Excel também são discutidos extensivamente e são suportados por exemplos. A segunda seção do livro explica preocupações tecnológicas e conceitos de design para sistemas de negociação automatizados. Especificamente, os capítulos são dedicados a lidar com feeds de dados em tempo real, gerenciando pedidos no livro de pedidos de câmbio, seleção de posição e gerenciamento de riscos. Um. dll está incluído no livro que irá emular a conexão com uma API da indústria amplamente utilizada (XTAPI da Trading Technologies, Inc.) e fornecerá maneiras de testar algoritmos de gerenciamento de posição e ordem. Padrões de projeto são apresentados para sistemas de tomada de mercado baseados em análises técnicas, bem como para sistemas de mercado usando spreads inter-mercado. À medida que todos os capítulos giram em torno de programação de computadores para engenharia financeira e desenvolvimento de sistemas de negociação, este livro educará comerciantes, engenheiros financeiros, analistas quantitativos, estudantes de finanças quantitativas e até programadores experientes em questões tecnológicas que giram em torno do desenvolvimento de aplicações financeiras em uma Microsoft ambiente e construção e implementação de sistemas e ferramentas de negociação em tempo real.
Características principais.
Ensina concepção e desenvolvimento de sistemas financeiros desde o início usando o Microsoft Visual C ++ 2005.
Fornece dezenas de exemplos que ilustram as abordagens de programação no livro.
Leituras.
Audiência primária: engenheiros financeiros, analistas quantitativos, programadores em empresas comerciais; pós-graduandos em cursos e programas de engenharia financeira e mercados financeiros.
Guia para iniciantes em negociação quantitativa II: desenvolvendo sistemas automatizados de negociação.
Na parte I deste guia, falamos sobre programação matemática, dados e habilidades de ML que são úteis ao construir suas próprias estratégias de negociação. Espero que você já seja um especialista nesses e esteja pronto para mergulhar na construção de seu próprio sistema de negociação automatizado.
Um Sistema Automatizado de Negociação consiste em vários elementos. Você precisa decidir quais os mercados que quer negociar, criar recursos para identificar uma lógica de negociação e desenvolver uma estratégia para implementar essa lógica para comprar ou vender ações. Seu sistema deve decidir quando entrar e sair de uma operação, contabilizar os custos de negociação e ser otimizado via backtesting (mas não overfit). Você pode assistir a um vídeo detalhado sobre os principais elementos de um sistema de negociação aqui.
Vamos começar:
1. ENCONTRE O MERCADO DIREITO AO COMÉRCIO.
Escolha o seu mercado e os instrumentos para negociar. Em seguida, encontre dados históricos desses instrumentos para desenvolver e testar seu modelo. Nós fornecemos dados para 600 ações listadas no NASDAQ que são (ou foram) uma parte da S & amp; P 500 desde 2001. A lista completa de ações está aqui.
Os estoques geralmente são um bom lugar para começar para iniciantes e permitem um grande grau de diversificação. Não entende o que instrumentos financeiros como ações, futuros e opções significam? Aprenda mais aqui.
2. CONSTRUINDO SUAS CARACTERÍSTICAS E SINAL DE NEGOCIAÇÃO.
Você precisará de um conjunto de recursos para identificar um sinal / lógica de negociação. Os recursos podem ser médias móveis ou proporções de dados de preço, correlações ou sinais mais complexos. Fornecemos diariamente dados OPEN, CLOSE, HIGH, LOW e VOLUME para as ações. Você pode combinar isso de várias maneiras para criar novos recursos. Depois de ter seu conjunto de recursos, você precisa gerar um sinal de negociação usando esses recursos, ou seja, quais instrumentos são uma compra, uma venda ou um ponto morto.
Se você precisar de uma atualização sobre a matemática, leia mais aqui.
Você pode começar experimentando sistemas simples de reversão à média ou de momentum, construindo um par um pouco complexo ou operações longas e curtas. Você pode verificar a nossa série de iniciantes nestes (com notebooks IPython tutorial) em estratégias de negociação simples.
3. ESTRATÉGIA DE EXECUÇÃO COMERCIAL.
Em seguida, você precisará de uma estratégia que diga ao seu sistema o que fazer com base no sinal gerado por seus recursos. Esta é a ordem final que você envia ao corretor.
Você pode inserir uma troca em duas posições - longa ou curta. Quando longo um estoque, você se beneficia se o preço aumenta. Da mesma forma, quando breve você se beneficia se o preço diminuir. Depois de entrar no comércio, você pode optar por aumentar ou diminuir seu tamanho de posição com base na força do seu sinal e, finalmente, sair da posição se você atender aos critérios de lucro, se você acha que o sinal foi revertido ou se você atingiu sua parada .
Portanto, sua estratégia de execução comercial deve decidir a) como entrar em uma posição (comprar ou vender) b) qual o tamanho do comércio c) como subsequentemente dimensionar para cima ou para baixo e d) quando sair, tanto no caso de lucros ou perdas.
4. CUSTOS DE NEGOCIAÇÃO.
Os custos de negociação alteram significativamente o desempenho da estratégia. Os altos custos de negociação podem ser elevados de forma significativa. Nosso backtester contabiliza automaticamente os custos de negociação. Nós aplicamos uma comissão (taxas cobradas pela bolsa e o corretor para facilitar negócios) e derrapagens (a diferença de preço em que você colocou seu pedido e o preço no qual você realmente negociou) a cada pedido.
Usamos US $ 0,10 por ação como comissão e 5% do intervalo diário da ação como uma estimativa de desvio. Portanto, o custo total para o comércio (em $) = 0,10 + (ALTO - BAIXO) * 0,05.
5. MÉTODOS DE BACKTESTING E DESEMPENHO.
Finalmente, você deve testar seu sistema em dados históricos para ver como sua estratégia teria realizado no passado. Isso ajuda você a otimizar seu sistema para os mercados que você está negociando. Ele também fornece uma expectativa de como sua estratégia deve ser feita no futuro.
Como você compara dois sistemas? Nosso backtester fornece as seguintes métricas para quantificar o desempenho do seu sistema. Esse conjunto de métricas não é completo, mas é um bom lugar para começar:
Retorno total Retorno anualizado Taxa de volatilidade anualizada de Sharpe Relação de sortino Retirada máxima% de rentabilidade Lucro de lucro.
Você pode ler em detalhes sobre eles aqui.
Não existe um valor de destino correto para essas métricas. Todo investidor procura sistemas com alto desempenho e baixo risco, mas diferentes investidores podem ter limites variados para o que é considerado aceitável com base em seu perfil de risco e estilos de negociação.
6. SEJA PREOCUPADO CONTRA O SOBRECARGA E OS ACOMPANHAMENTOS.
Semelhante a qualquer problema de ciência dos dados, a abundância de dados disponíveis significa que existe uma tendência natural de superar sistemas.
A superposição é a armadilha mais perigosa de uma estratégia comercial. Você pode criar um algoritmo complexo que funciona maravilhosamente em um backtest, mas falha miseravelmente em novos dados não vistos. Este sistema não revelou nenhuma tendência de dados e nenhum poder de previsão real. Algumas dicas para evitar overfitting:
Mantenha seus sistemas tão simples quanto possível. Se você se encontra usando recursos demais ou extremamente complexos, provavelmente está super adaptando, não captando uma tendência. Divida dados disponíveis em dados de treinamento e teste. Não use todos os dados para otimizar seu algoritmo de estratégia, use os dados do teste para validar sua estratégia. Os sistemas que funcionam bem no teste fora da amostra são mais propensos a serem bem-sucedidos em dados do mercado ao vivo. Evite vieses, especialmente preconceito antecipado. Certifique-se de que sua estratégia não está usando nenhum conhecimento do futuro enquanto faz testes. Esta informação não estará disponível para você ao negociar em dados do mercado ao vivo. Você pode encontrar uma lista de preconceitos de backtesting comuns aqui.
É isso aí. Você está pronto para começar a escrever algumas estratégias próprias. Você pode ler nosso post de acompanhamento em uma abordagem sistemática para identificar a lógica comercial e desenvolver uma estratégia.
Construindo Sistemas de Negociação Automatizada: Com uma Introdução ao Visual C ++ 2005.
A primeira seção do livro explica o Visual C ++ 2005 em detalhes e concentra-se no conhecimento de programação requerido para o desenvolvimento automatizado do sistema de negociação, incluindo design orientado a objetos, delegados e eventos, enumerações, geração aleatória de números, temporização e temporizadores e gerenciamento de dados com STL e coleções. Além disso, como a maioria dos códigos legados e de modelagem nos mercados financeiros é feita em ISO C ++, este livro analisa em profundidade vários tópicos avançados relacionados ao gerenciamento e interoperabilidade de memória gerenciada / não gerenciada / COM. Além disso, este livro fornece dezenas de exemplos que ilustram o uso da conectividade de banco de dados com o ADO e um tratamento extensivo de SQL e FIX e XML / FIXML. Tópicos avançados de programação, como encadeamento, soquetes, bem como o uso de C ++ para se conectar ao Excel também são discutidos extensivamente e são suportados por exemplos.
A segunda seção do livro explica preocupações tecnológicas e conceitos de design para sistemas de negociação automatizados. Especificamente, os capítulos são dedicados a lidar com feeds de dados em tempo real, gerenciando pedidos no livro de pedidos de câmbio, seleção de posição e gerenciamento de riscos. Um. dll está incluído no livro que irá emular a conexão com uma API da indústria amplamente utilizada (XTAPI da Trading Technologies, Inc.) e fornecerá maneiras de testar algoritmos de gerenciamento de posição e ordem. Padrões de projeto são apresentados para sistemas de tomada de mercado baseados em análises técnicas, bem como para sistemas de mercado usando spreads inter-mercado.
À medida que todos os capítulos giram em torno de programação de computadores para engenharia financeira e desenvolvimento de sistemas de negociação, este livro educará comerciantes, engenheiros financeiros, analistas quantitativos, estudantes de finanças quantitativas e até programadores experientes em questões tecnológicas que giram em torno do desenvolvimento de aplicações financeiras em uma Microsoft ambiente e construção e implementação de sistemas e ferramentas de negociação em tempo real.
* Fornece dezenas de exemplos ilustrando as abordagens de programação no livro.
* Os capítulos são suportados por capturas de tela, equações, planilhas de amostra do Excel e código de programação.
Комментарии
Отправить комментарий