Sunday 4 March 2018

Código do sistema de negociação automatizado


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.

Código do sistema de negociação automatizado
Esta página é patrocinada pela Wisdom Trading, sistemas de negociação de futuros e corretor de mercado global. Eles oferecem sistemas de negociação todos codificados para seus clientes e executam o Trading Blox, que representa uma grande parte do código neste site.
Biblioteca de códigos.
O código de negociação do sistema é disseminado em vários posts, pode ser uma boa idéia consolidá-los todos em um único lugar (aqui) antes que tudo se torne um pouco confuso!
Eu também escrevo mensalmente para a revista Análise Técnica de Ações e Commodities (TASC) na seção Dicas do Trader (principalmente o código Trading Blox).
Encontre tudo abaixo para sua leitura:
& # 8212; Revista TASC Traders & # 8217; Dicas & # 8212;
TASC Traders Tips (Abril de 2010): Indicador de Tendência de Preço de Volume Modificado no Excel.
No artigo “Indicador de tendência de preço de volume modificado” nesta edição, o autor David Hawkins discute uma modificação do indicador de tendência de preço de volume (VPT), ​​já baseado no indicador de volume em balanço originalmente desenvolvido por Joseph Granville.
Em Suavização do Bollinger% b & # 8221; artigo, autor Sylvain Vervoort explica como remover o ruído do tradicional indicador% b, usado para identificar pontos de viragem e divergências.
Em "Índices de negociação com a média móvel do casco" nessa edição, o autor Max Gardner explica como usar a média móvel do casco para o timing de mercado de longo prazo.
Teste de Bootstrap para back-testing computação de significância estatística.
Implementação do teste bootstrap conforme descrito no livro de David Aronson: Análise Técnica Baseada em Evidências (link amazon)
& # 8212; API do CSI Unfair Advantage & # 8212;
Documentação da função da API RetrieveBackAdjustedContract2.
Guia de referência sobre esta função essencial, tirada do documento CSI API.
Recuperar contrato futuro de back-adjusted.
Algum exemplo de código em C # usando a API para acessar uma das funções mais importantes para recuperar qualquer contrato futuro com qualquer tipo de back-adjustment oferecido pela CSI.
Extrator de Contratos Individuais CSI.
Uma utilidade para extrair contratos individuais do banco de dados Advantage Unfair da CSI & # 8217; em arquivos de texto simples.
& # 8212; Negociação Blox & # 8212;
Variação no filtro clássico de portfólio MACD, usando o indicador Mediano em movimento em vez da média móvel padrão para a média rápida.
Indicador Vortex Original.
Implementação do indicador Vortex.
Indicadores melhorados Vortex e AVX e sistema AVX.
O Vortex Indicator original tinha uma falha (manuseio de lacunas para mercados não-Forex) e não usava uma média móvel exponencial para suavização. Esta é a minha versão melhorada com um sistema básico de reversão usando-a para entradas / saídas.
link para postagem original | link para arquivo zip (contendo: Vortex Indicator & # 038; arquivo de bloco auxiliar AVX (tbx), bloco de saída de entrada AVX (tbx), sistema AVX (tbs))
Implementa um filtro que permite rejeitar / aceitar negócios com base no nível de volatilidade em comparação com os níveis históricos.
Implementação Walk-Forward do Modelo de Espaço Alavancagem de Vince.
Utiliza o pacote LSPM R (por Josh Ulrich) em uma abordagem progressiva para permitir uma metodologia de teste de teste adaptativo.
O e-ratio é uma maneira prática de avaliar a borda de um componente específico de um sistema sem ter que testar o sistema como um todo (ou seja, borda do sinal de entrada somente).
link para postagem original (inclui todos os trechos de código e lógica necessários)
& # 8212; TradersStudio & # 8212;
cálculo do e-ratio para o sistema Donchian Channel Breakout.
Este código contém o código genérico necessário para calcular o rácio e, bem como uma implementação para aplicar o cálculo a um sinal de entrada Breakout do canal de Donchian.
link para postagem original | link para o arquivo zip (contendo Código TS do Indicador de Canal Donchian, código TS do Relatório de Comércio Personalizado, código TS do Sistema de Compra, código TS de Venda do Sistema, macro e-ratio Excel (arquivo de texto), pasta de trabalho de exemplo do Excel)
Atualizações gratuitas.
Posts populares.
Procure o blog Au. Tra. Sy.
Global Futures Broker.
Blog Au. Tra. Sy, pesquisa e desenvolvimento de Trading Sistemático, com um sabor de Trend Following.
Disclaimer: O desempenho passado não é necessariamente indicativo de resultados futuros. A negociação de futuros é complexa e apresenta o risco de perdas substanciais; como tal, pode não ser adequado para todos os investidores. O conteúdo deste site é fornecido apenas como informação geral e não deve ser considerado como recomendação de investimento. Todo o conteúdo do site, não deve ser interpretado como uma recomendação para comprar ou vender qualquer título ou instrumento financeiro, ou para participar de qualquer estratégia de negociação ou investimento em particular. As idéias expressas neste site são unicamente as opiniões do autor. O autor pode ou não ter uma posição em qualquer instrumento financeiro ou estratégia acima referida. Qualquer ação que você tome como resultado de informações ou análises neste site é, em última instância, de sua exclusiva responsabilidade.
RESULTADOS DE DESEMPENHO HIPOTÉTICOS TEM MUITAS LIMITAÇÕES INERENTES, ALGUNS DESCRITOS ABAIXO. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VOCE OU POSSIBILIDADE DE ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS; POR FAVOR, HÁ DIFERENÇAS FREQUENTEMENTE SHARP ENTRE RESULTADOS DE DESEMPENHO HIPOTÉTICOS E OS RESULTADOS REAIS REALIZADOS POR TODOS OS PROGRAMAS DE NEGOCIAÇÕES PARTICULARES. UMA DAS LIMITAÇÕES DOS RESULTADOS DE DESEMPENHO HIPOTÉTICOS É QUE ESTÃO GERALMENTE PREPARADAS COM O BENEFÍCIO DE HINDSIGHT. ADICIONALMENTE, A NEGOCIAÇÃO HIPOTÉTICA NÃO IMPORTA RISCOS FINANCEIROS, E NENHUM GRUPO DE NEGOCIAÇÃO HIPOTÉTICA PODE COMPLETAMENTE CONTA PARA O IMPACTO DO RISCO FINANCEIRO DE NEGOCIAÇÃO REAL. POR EXEMPLO, A CAPACIDADE DE PERDER OU DE ADESIVAR A UM PROGRAMA DE NEGOCIAÇÃO ESPECÍFICO EM ESPIRRO DE PERDAS DE NEGOCIAÇÃO SÃO PONTOS MATERIAIS QUE PODEM IGUALMENTE AFETAR EFECTUAR RESULTADOS REAIS DE NEGOCIAÇÃO. HÁ NOMBROSOS OUTROS FATORES RELACIONADOS COM OS MERCADOS EM GERAL OU NA EXECUÇÃO DE QUALQUER PROGRAMA ESPECÍFICO DE NEGOCIAÇÃO QUE NÃO PODE SER TOTALMENTE COMPTABILIZADO NA PREPARAÇÃO DE RESULTADOS DE DESEMPENHO HIPOTÉTICOS E TODOS OS QUE PODEMOS ADVERSAMENTE EFECTUAR OS RESULTADOS DE NEGOCIAÇÃO.
ESTAS TABELAS DE DESEMPENHO E RESULTADOS SÃO HIPOTÉTICOS NA NATUREZA E NÃO REPRESENTAM A NEGOCIAÇÃO EM CONTAS REAIS.

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.

Código do sistema de negociação automatizado
Recentemente, publiquei sobre o e-ratio como uma ferramenta para medir partes de um sistema de negociação (os arquivos de código para calcular o rácio e no TradersStudio e Excel também estão disponíveis). O e-ratio deve ser uma ferramenta rápida para verificar como os sinais podem adicionar alguma vantagem a um sistema de negociação. No entanto, calcular o rácio e no TradersStudio é lento (mais de 4 horas para um sinal com mais de 100 durações diferentes).
Então eu decidi dar o & # 8220; lendário rápido & # 8221; Amibroker um teste para ver se poderia melhorar o desempenho do TradersStudio. Depois de alguns "play and learning", eu finalizei o código para computar o e-ratio. Meus grandes agradecimentos vão para o gorila ASX, cuja própria versão forma uma grande parte do meu código.
Abaixo está a explicação do código e o arquivo afl para download.
Diretamente do site do ASX Gorilla como um prelúdio para o código:
Minha implementação do Edge Ratio envolve dois fudges profundos da Amibroker. O primeiro é o uso da função AddToComposite para criar um símbolo de ticker composto no qual manter o array ATR de um determinado estoque para posterior recuperação dentro do Custom Back Tester através da função Foreign.
O segundo fudge é o uso da função VarSet / VarGet para criar um array quase. Isso foi necessário para superar a limitação em que os elementos da matriz não podem exceder em número o valor de barcount-1.
A primeira parte é realmente codificar o seu sinal Buy (no nosso caso um Breakout do canal Donchian). Os sinais de venda são testados separadamente:
// COMPRAR REGRAS: implementado com Buy Stop no Upper Donchian Channel (17) BuyStop = Ref (HHV (High, 17), - 1); Compra = Cruz (Alta, BuyStop); BuyPrice = Max (BuyStop, Low); // verifique se o preço de compra & gt; = baixo.
A saída de posições é feita em uma base de duração fixa:
// Nunca venda de modo que a posição seja interrompida após a barra N, em vez disso, Venda = 3 & gt; 5; // Parar a posição e fechá-la após N barras // (eratio = N que passamos de 1 a 100 na otimização) ApplyStop (stopTypeNBar, stopModeBars, eratio);
O primeiro fudge mencionado acima para armazenar o ATR:
Normalizador = ATR (17); AddToComposite (Normaliser, & quot;
E a & # 8220; carne & # 8221; do código: o fragmento que implementa o back-testing personalizado para:
Faça um loop pelos sinais e armazene o valor da entrada ATR. Faça um loop em todas as negociações e recupere MFE, MAE e ATR. Calcule a proporção e baseada em valores de todas as negociações.
atr_ "+ sig. Symbol," C "); VarSet ("TradeATR" + NumTrades, ATRArr [bar]); _TRACE ("Symbol" + sig. Symbol + "ATR:" + VarGet ("TradeATR" + NumTrades)); >>> AvgMAE = AccumMAE = AvgMFE = AccumMFE = NumTrades = 0; // iterar em negociações fechadas para (trade = bo. GetFirstTrade (); comércio; trade = bo. GetNextTrade ()) trade. AddCustomMetric (& quot; Meu MAE & quot ;, trade. GetMAE () * trade. EntryPrice / 100); trade. AddCustomMetric (& quot; Meu MFE & quot ;, trade. GetMFE () * trade. EntryPrice / 100); trade. AddCustomMetric (& quot; Entrada ATR & quot ;, EntryATR * 10000); > AvgMAE = AccumMAE / NumTrades; AvgMFE = AccumMFE / NumTrades; _TRACE (WriteVal (AccumMAE)); _TRACE (WriteVal (NumTrades)); _TRACE (WriteVal (AvgMAE)); Eratio = abs (AvgMFE / AvgMAE); _TRACE (WriteVal (Eratio)); bo. AddCustomMetric (& quot; Avg MAE & quot ;, AvgMAE); bo. AddCustomMetric (& quot; Avg MFE & quot; AvgMFE); bo. AddCustomMetric (& quot; Eratio & quot ;, Eratio); bo. PostProcess (); >
Se você quiser executar este código, você pode baixar o e-ratio & # 8220; gorilla & # 8221; arquivo afl e simplesmente atualize os sinais BUY para o que você quiser testar.
ATUALIZAÇÃO: Observe o comentário de Eldar Agalarov abaixo, informando que o código acima pode causar problemas (ao restringir o número de posições abertas). Ele gentilmente postou uma versão do código que não tem esse problema. Obrigado Eldar!
O próximo post será uma comparação direta de velocidade entre o TradersStudio e o Amibroker para computar a razão-e nos mesmos dados subjacentes e com o mesmo sinal. Espero que o Amibroker ganhe a luta de mãos para baixo ao mesmo tempo que apareceu "way" e "# 8221" Mais rápido!
32 Comentários até agora & darr;
Boas coisas Jez. Vou adicioná-lo ao blogroll para me lembrar de verificar seu blog regularmente.
Eu não tenho explorado completamente o rácio e, mas estou a pensar, como é que é diferente de apenas traçar o avg. % de negociação em uma saída de n-bar?
Obrigado pelo código Jez!
Eu acho que o e-ratio é uma melhor avaliação do & # 8220; potencial & # 8221; de um trade / signal no termo Risk / Reward, pois ele usa Maximum Excursions (tanto no lado positivo quanto no negativo)
Por exemplo, você poderia ter ambos os negócios concluídos com 1% de lucro ao parar em N dias, mas um dos negócios poderia estar caindo para -10% durante a maior parte de sua vida enquanto o outro poderia ficar em torno de + 5%. Se ambos terminarem em + 1%, uma média simples não se diferenciaria e destacaria que o segundo comércio / sinal oferece mais potencial.
O rácio e dir-lhe-ia um pouco mais sobre como o comércio se comportou & # 8221; durante a sua vida & # 8211; e o perfil da proporção e em dias diferentes permite que você tenha uma noção da melhor duração da borda. Não é um santo graal & # 8221; métricas, mas acho que um prisma útil & # 8221; através do qual você pode olhar para um sinal em um back-test.
Abaixo está o link para explicar os fundamentos do e-ratio.
Legal. Essa explicação faz sentido. Preciso ligar o código ao AmiBroker e experimentá-lo.
Não está claro para mim por que você está multiplicando pelo preço de entrada em comparação com o código original.
Versão do ASX Gorilla.
Tenho a sensação de que sua versão é um aprimoramento, uma vez que está comparando o MAE / MFE em valor em dólar versus o ATR, que também é expresso em dólares. Corrija-me se estiver errado.
Bem manchado! Verificação muito completa ;-)
Você está exatamente certo e eu acho que isso foi um pequeno bug na versão do ASX gorilla:
O ATR é expresso em dólares, enquanto o MAE / MFE é expresso como uma porcentagem do preço (em Amibroker). Como resultado, você precisa calcular o MAE / MFE em termos de dólar para & # 8220; comparar maçãs e maçãs & # 8221; e você faz isso multiplicando o ATR (pct) com o Preço de Entrada dividido por 100.
Trabalhando através do seu AFL. Achei intrigante. Embora eu tenha dito isso, & # 8220; Edge & # 8221; não ajuda sistemas EOD, eu gostaria de encontrar por mim mesmo. Para colocar minhas perguntas em contexto, eu sou um usuário de longa data da AB, mas só recentemente fui drogado e gritei para o fim das coisas e, em particular, CBT.
Dito isso, por que existem negociações no campo _Trace que não são números redondos, 1,2,3. Mas em vez disso 1.6551, 1.0570?
É só pegar na minha cabeça o que está acontecendo aqui.
Se você observar o código, a linha a seguir produzirá essa saída de depuração:
_TRACE (& # 8220; Symbol & # 8221; + sig. Symbol + & # 8221; Number of Trades & # 8221; + VarGet (& # 8220; TradeATR & # 8221; + NumTrades));
A string é enviada como "número de negociações" & # 8221; mas a função VarGet, na verdade, recupera o valor de ATR, portanto, não um número redondo & # 8211; isso foi copiado do código original e é um pouco enganador, por isso atualizei o código vinculado a este post.
Felicidades e boa sorte com o "fim das coisas" # 8221; ;-)
NumTrades ++. Eu costumo usar isso no final do loop, não no começo. IE Etapa # 1 = Bar 0, não bar 1. Em seu código, é em dois lugares. Alterá-lo de cima para baixo do loop não altera os valores de ATR por sinal, mas altera o AccumMAE, AvgMFE, eratio e EntryATR subsequentes na primeira negociação no teste de ticker único.
Dave & # 8211; Obrigado pela contribuição. Eu vou dar uma olhada mais tarde.
Acompanhamento no NumTrades ++. Eu suspeito que a razão para colocar a expressão no início do loop era ter o denominador adequado, AvgMAE = AccumMAE / NumTrades e AvgMFE = AccumMFE / NumTrades.
Mas isso ainda dá valores diferentes do que colocar o Numtrades ++ no final de ambos os loops e adicionar 1 ao denominador, ou seja, Numtrades + 1.
Dave & # 8211; sua explicação parece fazer sentido e como isso é parte do código que eu reutilizei do Gorilla ASX, eu não posso confirmar no topo da minha cabeça porque isso foi implementado dessa forma.
Eu irei definitivamente tentar sua sugestão (ou seja, +1) e reverter com a atualização do código, se necessário (depois do meu jogo de futebol que é & # 8230;)
Parece que o blog do ASX Gorilla é apenas por convite. Alguma ideia, como alguém é convidado para isso? Obrigado pelo maravilhoso blog. Eu tenho você no meu Google Reader.
Obrigado pelos comentários. Eu verifiquei o blog ASX e parece que & # 8211; como você mencionou, "# 8211; foi alterado para um & # 8220; apenas para convidados & # 8221; status (ou seja, eu não posso mais acessá-lo). Na verdade, parecia "abandonado" # 8221; quando eu encontrei (ou seja, a última atualização foi a partir de 2007 eu acredito), então eu não tenho certeza do que está acontecendo com ele. Eu acho que você poderia solicitar um convite e dar uma olhada & # 8230; ;-)
Obrigado. O único problema é que eu nem sei como solicitar um convite, ou seja, ele nem sequer dá essa opção. Obrigado novamente pelo fantástico blog. Eu uso Metastock e AB atualmente. Depois de ler o seu blog, eu posso olhar para o TraderStudio. Além disso, confira StrataSearch. É essencialmente um software projetado principalmente para misturar e combinar vários sistemas. Estou testando agora, e a única reclamação que tenho é que a curva de aprendizado parece um pouco íngreme.
pequeno aviso: TradersStudio não oferece nenhuma avaliação gratuita & # 8230; Também tenho me perguntado por um tempo agora, se eu fiz a escolha certa (eu também estava considerando Trading Blox, mas foi colocado pela diferença de preço: US $ 3.000 para Trading Blox) para que eu possa revisitar este :(
Obrigado pelo heads up. Eu farei mais algumas pesquisas. A única vantagem do TradersStudio é que eu poderia usar os dados do Metastock. De qualquer forma, existem alguns outros softwares a considerar: Multi Charts (usa Easy Language), Ninja Trader e Nuro Shell. Multi Charts é um pouco caro embora & # 8212; perto de US $ 1600. Pessoalmente, acho que AB da MS é um software bom o suficiente. Além de um sistema mecânico, é preciso ter habilidades de gerenciamento de dinheiro e disciplina. Eu estou inclinado a combinar pelo menos três sistemas diferentes & # 8212; tendência, reversão à média e divergência.
Obrigado por esta fórmula afl é realmente uma abordagem interessante para testar a qualidade dos sinais de entrada. A coisa que eu não entendo é a normalização, porque quando você calcula o eRatio como a divisão das médias do MAE e do MFE, a normalização prévia é eliminada (como o mesmo # está no numerador e no denominador).
Na verdade, reescrevi os procedimentos sem os fudges e obtive exatamente os mesmos valores da eRatio. Obrigado.
Enzo & # 8211; correto sobre a normalização. Outro leitor mencionou exatamente o mesmo ponto em outro post de e-ratio & # 8230;
Conceitualmente, é mais fácil entender a idéia de que a razão e-compara o MAE médio com o MFE médio, portanto, esse passo no cálculo - no entanto, darei a você que matematicamente isso é completamente equivalente a comparar (e dividir) o MAE Total. com Total MFE (e o passo 3 pode ser considerado “opcional”
Olá Jez! Este código e-Ratio para AmiBroker é buggy e dá resultados errados.
Obrigado pelo heads-up Eldar, mas você gostaria de elaborar?
Eu não usei o AmiBroker (ou esta implementação do e-ratio) desde a época em que escrevi esse post, mas parece que me lembro que estava me dando os valores corretos naquela época.
Este código funciona bem quando não há restrições quanto ao número máximo de posições abertas.
Mas se limitarmos o número de posições abertas pela declaração SetOption (& # 8220; MaxOpenPositions & # 8221; posNum) no código do sistema de negociação, este código não está funcionando corretamente.
O problema é que nem todos os sinais brutos terminarão por sinais de negociação. Por exemplo, se tivermos uma restrição nas 10 posições abertas máximas, o AmiBroker selecionará apenas os 10 primeiros sinais que terão o maior número de PositionScore.
O erro está lá: VarSet (& # 8220; TradeATR & # 8221; + NumTrades, ATRArr [bar]) & # 8211; quando escrevemos para a variável dinâmica global Entrada de resultados ATR usando a variável NumTrades incremental.
E bug está lá: EntryATR = VarGet (& # 8220; TradeATR & # 8221; + NumTrades) & # 8211; quando lemos o resultado da variável flobal usando NumTrades como índice.
Se houver um limite, a variável NumTrades produzirá resultados tendenciosos (errados).
Eu sugiro meu código correto:
if (Status (& # 8220; ação & # 8221;) == actionPortfolio)
avgMAEAll = avgMAELong = avgMAEShort = 0;
avgMFEAll = avgMFELong = avgMFEShort = 0;
for (trade = bo. GetFirstTrade ();! IsNull (comércio); trade = bo. GetNextTrade ())
tradeBarIndex = LastValue (ValueWhen (trade. EntryDateTime == dateTimes, barIndices));
absMAE = trade. EntryPrice * trade. GetMAE () * 0.01;
absMFE = trade. EntryPrice * trade. GetMFE () * 0.01;
normMAE = absMAE / entryATR;
normMFE = absMFE / entryATR;
trade. AddCustomMetric (& # 8220; MAE ($) & # 8221 ;, absMAE, 2);
trade. AddCustomMetric (& # 8220; MFE ($) & # 8221 ;, absMFE, 2);
trade. AddCustomMetric (& # 8220; Entrada ATR & # 8221 ;, entryATR, 2);
eRatioAll = avgMFEAll / abs (avgMAEAll);
eRatioLong = avgMFELong / abs (avgMAELong);
eRatioShort = avgMFEShort / abs (avgMAEShort);
bo. AddCustomMetric (& # 8220; e-Ratio & # 8221 ;, eRatioAll, eRatioLong, eRatioShort, 2);
Muito obrigado Eldar! Eu aprecio você tomando o tempo para fazer isso. Acabei de atualizar o post para apontar para o seu comentário para futuros leitores deste post / código.
Como você obtém o gráfico para o rácio e?
alex & # 8211; não há gráfico neste post, mas se você está se referindo àquele em outro post de e-ratio, o e-ratio foi colocado no Excel.
Tanto quanto eu entendo os códigos ajudam a calcular e-ratio para a duração do backtest. O que eu gostaria de fazer é ver um gráfico da proporção e para ver se uma saída baseada em tempo pode ser uma opção melhor.
Este código calcula uma proporção média de e-mails para todos os negócios no back-test.
Para produzir um gráfico como mencionado acima, eu realmente executei 100 back-tests, cada um com uma duração de negociação diferente (saída baseada em tempo) e simplesmente plotou a média da razão e (e-ratio) como uma função da duração da negociação. Mas isso foi feito no Excel. Não sei como você poderia fazê-lo no AmiBroker (que eu não uso mais).
Obrigado pela informação. só queria evitar a tarefa de fazer 100 backtests com duração diferente :-)
Obrigado pelo código tentará testar com indicador supertrend. Deixe seu saber os resultados uma vez que o teste seja concluído do meu fim. Você tem alguma informação sobre como realizar a análise de monte carlo no amibroker?
Desculpe não, Rajandran R & # 8211; Eu não sei sobre MC no AmiBroker como eu parei de usá-lo & # 8230;
isso deve responder sua pergunta.
Ótimo blog, obrigado por compartilhar isso. Vejo que você mencionou que você não usa mais AB, mas se eu pudesse fazer algumas perguntas sobre o seu código eratio por favor, eu ainda sou muito verde no lado da codificação das coisas, mas aprendendo tanto quanto eu posso , Onde eu posso.
Eu obtive ótimos resultados com este código em determinadas watchlists que eu conduzi walkforward, mas na função de verificação de código AmiBroker identifica um vazamento futuro, eu o limitei a esta linha de código & # 8211;
Quando eu comentário esta linha para fora passa o teste de vazamento futuro.
Eu não tenho idéia do que esta linha faz, mas o sistema funciona bem sem ele dos meus testes.
Existe um vazamento futuro neste sistema, é robusto?
Eu quero paper comércio isso apenas para a prática e comparar os resultados para AmiBrokers mas ele não gera sinais de venda nos scans que eu tentei, apenas muitos sinais de compra, por favor, como você papertrade este sistema? Não vejo como definir os critérios de venda para digitalização, apenas parece baseado em tempo. (novo aqui lembre-se)
Também estou procurando comprar alguns bons livros sobre o MAE / MFE / eRatio para entender melhor como implementar isso em meus sistemas, alguma recomendação?
Eu pedi & # 8216; O Caminho da Tartaruga & # 8217; da sua menção em outro lugar e ansioso para isso, algum outro por favor?
Sua ajuda aqui seria muito apreciada.
Deixe um comentário (Cancelar)
Atualizações gratuitas.
Posts populares.
Procure o blog Au. Tra. Sy.
Global Futures Broker.
Blog Au. Tra. Sy, pesquisa e desenvolvimento de Trading Sistemático, com um sabor de Trend Following.
Disclaimer: O desempenho passado não é necessariamente indicativo de resultados futuros. A negociação de futuros é complexa e apresenta o risco de perdas substanciais; como tal, pode não ser adequado para todos os investidores. O conteúdo deste site é fornecido apenas como informação geral e não deve ser considerado como recomendação de investimento. Todo o conteúdo do site, não deve ser interpretado como uma recomendação para comprar ou vender qualquer título ou instrumento financeiro, ou para participar de qualquer estratégia de negociação ou investimento em particular. As idéias expressas neste site são unicamente as opiniões do autor. O autor pode ou não ter uma posição em qualquer instrumento financeiro ou estratégia acima referida. Qualquer ação que você tome como resultado de informações ou análises neste site é, em última instância, de sua exclusiva responsabilidade.
RESULTADOS DE DESEMPENHO HIPOTÉTICOS TEM MUITAS LIMITAÇÕES INERENTES, ALGUNS DESCRITOS ABAIXO. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VOCE OU POSSIBILIDADE DE ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS; POR FAVOR, HÁ DIFERENÇAS FREQUENTEMENTE SHARP ENTRE RESULTADOS DE DESEMPENHO HIPOTÉTICOS E OS RESULTADOS REAIS REALIZADOS POR TODOS OS PROGRAMAS DE NEGOCIAÇÕES PARTICULARES. UMA DAS LIMITAÇÕES DOS RESULTADOS DE DESEMPENHO HIPOTÉTICOS É QUE ESTÃO GERALMENTE PREPARADAS COM O BENEFÍCIO DE HINDSIGHT. ADICIONALMENTE, A NEGOCIAÇÃO HIPOTÉTICA NÃO IMPORTA RISCOS FINANCEIROS, E NENHUM GRUPO DE NEGOCIAÇÃO HIPOTÉTICA PODE COMPLETAMENTE CONTA PARA O IMPACTO DO RISCO FINANCEIRO DE NEGOCIAÇÃO REAL. POR EXEMPLO, A CAPACIDADE DE PERDER OU DE ADESIVAR A UM PROGRAMA DE NEGOCIAÇÃO ESPECÍFICO EM ESPIRRO DE PERDAS DE NEGOCIAÇÃO SÃO PONTOS MATERIAIS QUE PODEM IGUALMENTE AFETAR EFECTUAR RESULTADOS REAIS DE NEGOCIAÇÃO. HÁ NOMBROSOS OUTROS FATORES RELACIONADOS COM OS MERCADOS EM GERAL OU NA EXECUÇÃO DE QUALQUER PROGRAMA ESPECÍFICO DE NEGOCIAÇÃO QUE NÃO PODE SER TOTALMENTE COMPTABILIZADO NA PREPARAÇÃO DE RESULTADOS DE DESEMPENHO HIPOTÉTICOS E TODOS OS QUE PODEMOS ADVERSAMENTE EFECTUAR OS RESULTADOS DE NEGOCIAÇÃO.
ESTAS TABELAS DE DESEMPENHO E RESULTADOS SÃO HIPOTÉTICOS NA NATUREZA E NÃO REPRESENTAM A NEGOCIAÇÃO EM CONTAS REAIS.

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

Começando: Construindo um Sistema de Negociação Totalmente Automatizado.
Nos últimos 6 meses, tenho focado no processo de construção da pilha completa de tecnologia de um sistema de negociação automatizado. Eu me deparei com muitos desafios e aprendi muito sobre os dois métodos diferentes de backtesting (Vectorised e Event driven). Na minha jornada para construir um backtester orientado a eventos, veio a minha surpresa que o que você iria acabar é perto de toda a pilha de tecnologia necessária para construir uma estratégia, fazer backtest e executar a execução ao vivo.
Meu maior problema ao enfrentar o problema foi a falta de conhecimento. Procurei em muitos lugares uma introdução à construção da tecnologia ou um blog que me orientasse. Eu encontrei alguns recursos que vou compartilhar com vocês hoje.
Para iniciantes:
Para os leitores novatos em negociações quantitativas, eu recomendaria o livro de Ernie P. Chan intitulado: Negociação Quantitativa: Como construir seu próprio negócio de comércio algorítmico. Este livro é o básico. Na verdade, é o primeiro livro que li sobre negociação quantitativa e mesmo assim achei muito básico, mas há algumas notas que você deve tomar.
Da página 81-84 Ernie escreve sobre como, no nível de varejo, uma arquitetura de sistema pode ser dividida em estratégias semi-automatizadas e totalmente automatizadas.
Um sistema semi-automatizado é adequado se você quiser fazer algumas transações por semana. Ernie recomenda usar o Matlab, R ou até mesmo o Excel. Eu usei todas as 3 plataformas e este é o meu conselho:
Saltar do Matlab, custou muito dinheiro e só consegui acesso aos laboratórios da universidade. Não há muito material de treinamento como blogs ou livros que ensinem como codificar uma estratégia usando o Matlab. R tem toneladas de recursos que você pode utilizar para aprender como construir uma estratégia. Meu blog favorito cobrindo o tópico é: QuantStratTradeR é ​​executado por Ilya Kipnis. É mais provável que o Microsoft Excel inicie onde você não tem experiência em programação. Você pode usar o Excel para negociações semi-automáticas, mas isso não vai funcionar quando se trata de construir a pilha completa de tecnologias.
Estrutura semiautomática pg 81.
Sistemas de negociação totalmente automatizados são para quando você deseja colocar automaticamente as negociações com base em um feed de dados ao vivo. Eu codifiquei o meu em C #, o QuantConnect também usa o C #, o QuantStart orienta o leitor através da construção em Python, o Quantopian usa o Python, o HFT provavelmente usará o C ++. Java também é popular.
Estrutura de negociação completamente automatizada página 84.
Passo 1: Conseguir um bom começo.
Faça o Programa Executivo em Algorithmic Trading oferecido pela QuantInsti. Acabei de começar o curso e o primeiro conjunto de palestras foi na arquitetura do sistema. Teria me poupado cerca de 3 meses de pesquisa se eu tivesse começado aqui. As palestras me acompanharam através de cada componente que eu precisaria, bem como uma descrição detalhada do que cada componente precisa fazer. Abaixo está uma captura de tela de um de seus slides usados ​​na apresentação:
Você também pode usar essa estrutura geral ao avaliar outros sistemas de negociação automáticos.
No momento em que escrevo, estou apenas na terceira semana de palestras, mas estou confiante de que um praticante será capaz de construir uma estratégia comercial totalmente automatizada que poderia, com um pouco de refinamento, ser transformada no começo de um fundo de hedge quantitativo. .
Nota: o curso não está focado na construção da pilha de tecnologia.
Etapa 2: codifique um backtester baseado em eventos básicos.
Blog de Michael Hallsmore, quantstart & amp; livro “Negociação Algorítmica Bem Sucedida”
Este livro tem seções dedicadas à construção de um robusto backtester orientado a eventos. Ele orienta o leitor através de vários capítulos que explicarão sua escolha de idioma, os diferentes tipos de backtesting, a importância do backtesting orientado a eventos e como codificar o backtester.
Michael introduz o leitor às diferentes classes necessárias em um projeto orientado a objetos. Ele também ensina o leitor a construir um banco de dados mestre de títulos. É aqui que você verá como a arquitetura do sistema da QuantInsti se encaixa.
Nota: Você precisará comprar o livro dele: “Successful Algorithmic Trading”, seu blog deixa de fora muita informação.
Passo 3: Volte para o TuringFinance.
O programa EPAT Reading “Successful Algorithmic Trading” & amp; codificando um backtester em um idioma diferente de sua escolha.
Você deve ir para um blog chamado TuringFinance e ler o artigo intitulado "Algorithmic Trading System Architecture" Por: Stuart Gordon Reid. Em seu post ele descreve a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42010 e padrão de descrição de arquitetura de engenharia de software.
Eu achei este post muito técnico e tem algumas ótimas idéias que você deve incorporar em sua própria arquitetura.
Uma captura de tela de seu post.
Etapa 4: Estude os sistemas de negociação de código aberto.
4.1) Quantopian.
Escusado será dizer que Quantopian deve ser adicionado a esta lista e tenho vergonha de dizer que não passei muito tempo usando sua plataforma (devido à minha escolha de idioma). Quantopian tem muitas vantagens, mas as que mais se destacam para mim são as seguintes:
Fácil de aprender Python Acesso gratuito a muitos conjuntos de dados Uma grande comunidade e competições Eu amo como eles hospedam a QuantCon!
Quantopian é os líderes de mercado neste campo e é amado por todos os quants! Seu projeto de código aberto está sob o nome de código Zipline e isso é um pouco sobre isso:
“O Zipline é o nosso mecanismo de código aberto que alimenta o backtester no IDE. Você pode ver o repositório de código no Github e contribuir com solicitações de pull para o projeto. Há um grupo do Google disponível para procurar ajuda e facilitar discussões. ”
Aqui está um link para sua documentação:
4.2) QuantConnect.
Para aqueles que não estão familiarizados com o QuantConnect, eles fornecem um mecanismo completo de negociação algorítmica de código aberto. Aqui está um link.
Você deve dar uma olhada no código deles, estudá-lo, & amp; dê-lhes louvor. Eles são competição de quantopianos.
Eu gostaria de aproveitar esta oportunidade para agradecer à equipe da QuantConnect por me deixar escolher o cérebro deles e pelo serviço brilhante que eles oferecem.
Aqui está um link para sua documentação:
Observações finais:
Espero que este guia ajude os membros da comunidade. Eu gostaria de ter essa percepção 6 meses atrás quando comecei a codificar nosso sistema.
Eu gostaria de falar com a comunidade e perguntar: “Que bons cursos de negociação algorítmica você conhece?” Eu gostaria de escrever um post que analise o tópico e forneça uma classificação. Há alguma recomendação para criar um sistema de negociação totalmente automatizado que você gostaria de adicionar a este post?

No comments:

Post a Comment