Codificação de Sistemas de Negociação: Testes, Solução de Problemas e Otimização Agora que você possui um sistema de negociação projetado e codificado, é hora de testá-lo para garantir que sua codificação esteja livre de erros técnicos e lógicos. Também analisaremos algo conhecido como otimização - um recurso em alguns programas de negociação que lhe permitem ajustar suas regras de negociação de acordo com as ações que você planeja negociar. Testando seu sistema de negociação A grande maioria dos aplicativos comerciais que suportam linguagens de programação também suporta ferramentas de teste. Essas ferramentas são divididas em duas categorias: 1. Técnicas As ferramentas de teste técnico buscam erros técnicos em seu código. Por exemplo, se você esquecer de adicionar um ponto-e-vírgula após uma declaração, a ferramenta de teste técnico irá notificá-lo de que sua declaração não é válida. A localização da ferramenta de teste técnico depende da aplicação comercial que está sendo usada. O MetaTrader exibe um erro ou resultados defeituosos quando você tenta compilar seu código, enquanto as aplicações comerciais como a Tradecision possuem um utilitário de verificação de código incorporado na interface que permite verificar seu código por erros antes de aplicá-lo. 2. As ferramentas de teste lógico logístico procuram erros lógicos no seu código. Por exemplo, se você usou um sinal maior que o sinal em vez de um sinal menor que o que não é um erro técnico, uma ferramenta de teste lógico irá mostrar que seus resultados não fazem sentido. A ferramenta de teste lógico mais popular é a ferramenta backtesting. Esta ferramenta permite que você tire dados anteriores e aplique seu sistema de negociação a esses dados. Isso dá uma idéia do seguinte: Se o seu sistema de negociação é lucrativo 13 Que condições se mostram mais lucrativas 13 Onde exista algum erro nas suas regras (Para obter mais informações, consulte Backtesting: Interpretando o Passado.) Solucionando problemas de negociação Sistema Como com qualquer outro tipo de programação, a solução de problemas pode ser uma tarefa tediosa e difícil. Encontrar erros no seu código exige ordenar sistematicamente seu código para identificar erros sintáticos que, embora menores de idade, possam interromper seu programa. Aqui estão alguns erros comuns a procurar: Semicolons faltantes após declarações - Estas devem ser após cada declaração. 13 Variáveis indefinidas - Lembre-se de que você deve declará-las antes de usá-las. 13 Erros ortográficos. Se algum nome ou função estiver escrito incorretamente, o aplicativo comercial retornará um erro (veja o exemplo abaixo). 13 Uso incorreto de () - Lembre-se de que atribui um valor a outro valor, enquanto significa igual. 13 Uso incorreto de funções internas - Consulte a documentação de aplicativos comerciais ou a interface de programação de aplicativos (API) para garantir que você esteja usando a sintaxe correta. Alguns aplicativos comerciais contêm um recurso que permitirá que você teste seu código antes de usá-lo ou compilá-lo. Este recurso permite que você veja qual é o erro e em que linha pode ser encontrada. Pegue a Tradecision, por exemplo: Aqui podemos ver que a Tradecision nos dá a localização (linha e coluna) do erro, uma descrição do erro e o tipo de erro (neste caso, é sintático). Se olharmos para a expressão, podemos ver que na coluna 8 xrossBelow não é uma função válida. Se substituímos o x (que está na coluna 8) com um c, então teremos um código válido. Se olharmos o MetaTrader, podemos ver que os erros surgiram quando tentamos compilar o programa: Aqui podemos ver que, na descrição, a variável BuyNow não foi definida. Clicar duas vezes nessa mensagem de erro nos levará ao local específico do erro no código. Como você pode ver, a maioria dos aplicativos comerciais oferece uma maneira fácil de localizar erros técnicos e corrigi-los. A reparação dos erros envolve simplesmente o envio sistemático de cada mensagem de erro e, em seguida, recompilando o código e / ou aplicando o sistema de negociação em seus gráficos. Otimizando seu sistema de negociação Algumas aplicações comerciais permitem selecionar variáveis a serem otimizadas. Tradecision, por exemplo, permite que você selecione facilmente uma variável e substitua-a pelo código que tentará a otimização. A otimização em si é simplesmente um processo que encontra o valor ótimo para um elemento do sistema comercial específico com base em resultados e desempenho anteriores. Note-se que a sobre-otimização resulta em sistemas de negociação que não conseguem se adaptar às condições do mercado, é importante apenas otimizar algumas variáveis importantes, nem todas as variáveis. Aqui está o aspecto da funcionalidade de otimização na Tradecision: você pode ver que declaramos Duas novas variáveis e configurá-las como iguais. Simplesmente significa que o programa de negociação irá substituir isso pelo número ótimo. Em seguida, você pode ver que usamos as novas variáveis dentro de nossa estratégia comercial. Finalmente, estabelecemos um intervalo para os números (para que o programa não procure no infinito). Alguns outros programas de negociação possuem recursos que operam de forma semelhante, permitindo que você substitua o valor numérico por um e informe o aplicativo de negociação para otimizar. Conclusão Até agora, você deveria ter desenvolvido um sistema comercial comercial em que você possa ter confiança. Na próxima parte desta série, você aprenderá como aplicar o seu sistema de negociação aos gráficos e como usá-lo para tomar decisões comerciais. Sistemas de Exibição: Solução de Problemas e Otimização 1313 Mesmo depois de projetar e construir com sucesso um sistema de negociação, um comerciante pode achar que Seu sistema é imperfeito. Pode haver alguns problemas, como um evento que continua gerando perdas ou talvez as regras sejam muito amplas e precisam ser otimizadas. Qual é a maneira mais fácil de corrigir o problema Quão eficaz é a otimização Esta seção irá mostrar-lhe como solucionar problemas e otimizar seu sistema de negociação para maximizar os lucros e minimizar as perdas. Solução de problemas A solução de problemas é um aspecto muito importante do desenvolvimento do sistema. Um sistema de comércio decente será rentável na maioria das condições de mercado, mas se ocasionar grandes perdas, você pode trabalhar para identificar e resolver o problema. Aqui estão quatro etapas fáceis: 1. Identifique o problema - Encontre todas as instâncias nas quais o problema ocorreu durante o teste de retorno e / ou comece a gravar quando o problema ocorre durante a negociação ao vivo. Em cada instância, tome nota de qualquer tendência dos seguintes quatro fatores: Padrão de gráfico ou série de preços - Spike nos preços.13 Volume - Grande volume inicialmente e baixo volume depois disso.13 Espalhamento de lances / pedidos - Spike no preço com baixo volume, muitas vezes Indica um grande spread.13 Margem (se usado). 13 13 Estas são algumas das áreas em que podem ocorrer problemas, que podemos ver analisando o gráfico abaixo. Observe os picos de preço em baixo volume pela seta verde. Observe também o grande volume (perto da seta azul) seguido de baixo volume depois disso. Se nenhum desses se revelar culpado, existem outros fatores que podem ser analisados, como tamanhos de bloco e padrões avançados de gráfico.2. Avalie o problema - Use as informações que você reuniu para determinar o que exatamente causou o mau funcionamento do sistema ou gerar uma perda. Isso geralmente é feito usando o senso comum, ou através da análise de logs de transações (fornecidas por seu corretor). Aqui estão exemplos de como algumas condições dos quatro fatores listados acima podem ser o motivo de um problema identificado: Padrão de gráfico ou série de preços - O sistema não consegue vender durante declínios acentuados ou comprar durante subidas íngremes. Talvez o sistema não tenha amplo tempo para comprar ou vender. Volume - O sistema não consegue vender durante declínios ou comprar durante aumentos. Talvez o patrimônio tenha um volume de negociação tão baixo que o sistema não consegue comprar ou vender a um preço. Durante esses casos, o preço pode ser enganador sem uma consideração de volume e lance / ask. Bid / Ask spread - O sistema faz uma compra, mas não lucra tanto quanto deveria ao vender. Isso pode ser devido ao fato de que o comerciante se esqueceu de considerar os spreads de oferta / solicitação. Se um sistema estiver programado para comprar e vender ao preço atual, ele realmente paga o pedido. E quando vendido, não vende ao preço atual, mas ao preço da oferta. Às vezes, as diferenças entre a oferta e a pergunta podem ser grandes, levando a perdas indesejadas. Margin - O sistema de repente vende sem motivo aparente. Se isso ocorrer, você pode ter esquecido de considerar as chamadas de margem. 13 3. Considere as alternativas - Basta tentar algumas soluções para os problemas que você identificou. Considere as seguintes alternativas correspondentes aos problemas acima. Padrão de gráfico ou série de preços - Uma alternativa é simplesmente dizer ao sistema que aguarde até que o preço se estabilize antes de comprar. Isso pode ser feito usando as diferenças entre os preços anteriores e o preço atual para criar uma regra. Volume - Para resolver esse problema, você pode criar uma regra que exige que a equidade tenha uma certa quantidade de volume antes de executar um trade. Bid / Ask spread - Aqui você pode querer comprar e vender de acordo com os preços de oferta e oferta em vez do preço atual. O aumento da margem pode ser rentável se o risco for gerenciado efetivamente. Limitar a desvantagem deve impedir que você receba chamadas de margem. Isso pode ser feito com pontos de perda de parada ou outras táticas similares para limitar a desvantagem. 13 4. Implementar uma solução - Finalmente, precisamos aplicar a solução e ver como ela funciona. O comércio de papel ou o teste de volta novamente antes da negociação ao vivo é muitas vezes uma boa idéia depois de aplicar uma solução, porque às vezes as soluções têm consequências não intencionais. Por exemplo, regras adicionais podem limitar esses dias baixos, mas também diminuir os lucros globais (devido às oportunidades perdidas). Otimização da otimização simplesmente significa encontrar os melhores conjuntos de parâmetros para um determinado mercado. Este processo pode melhorar marginalmente os resultados. No entanto, também traz muitos riscos, porque o seu pressuposto subjacente é que o desempenho passado é indicativo de futuros movimentos de preços. A otimização pode ser realizada alterando os valores do parâmetro que você deseja otimizar e depois testar essas alterações. Tenha em mente que os outros parâmetros devem permanecer constantes para que os efeitos das mudanças sejam determinados. Depois de encontrar o valor que produz o maior desempenho nos testes de volta, implemente-o no sistema de negociação. Vamos considerar um exemplo. Digamos que um comerciante analisou o SampP 500 e descobriu que ele ou ela poderia otimizar o sistema usando um gráfico diário. Este mesmo processo também pode ser levado a um grau mais elevado. Por exemplo, se uma simples média móvel de 6 funciona melhor do que 8 para uma estratégia de cruzamento de MA em um determinado mercado, então 6 serão usados. O problema aqui não é apenas no pressuposto, mas também no fato de que o sistema pode ser pior em muitos outros mercados, tornando-o menos universal. Muitos desenvolvedores do sistema renunciam ao estágio de otimização por esses dois motivos: a otimização geralmente exagera os resultados. Isso ocorre porque os parâmetros são tão específicos e não universais que qualquer mudança no mercado (ou seja, o futuro) pode causar instabilidade. Em muitos casos, a otimização não melhorará o desempenho por um grau significativo. Pequenas melhorias podem ser aparentes no entanto, a confiscação da universalidade é um preço alto a pagar. 13 Como regra geral, a otimização só deve definir amplas configurações de parâmetros em vez de configurar regras específicas - mesmo que tenha sido bem sucedido em backtesting e papel trading. Conclusão A solução de problemas é crucial para fazer seu sistema funcionar da maneira que você quiser. É importante identificar quaisquer problemas, observando as ocorrências em que ocorreram e depois avaliando como certas condições de vários fatores - como padrão de preços, volume, propagação / oferta e margem - podem ter causado o problema. A otimização pode melhorar seus resultados, mas é importante lembrar que tem suas limitações. Não só se baseia no pressuposto de que o desempenho passado indica o futuro, mas não é o estágio no qual o comerciante cria regras específicas - a otimização é apenas sobre a definição de configurações amplas. Na próxima e última parcela, forneceremos uma visão geral de tudo que temos coberto, juntamente com alguns conselhos e recursos para ajudá-lo a obter um conhecimento prático sobre o design e o desenvolvimento do sistema de negociação. Sistemas de negociação: Conclusão
No comments:
Post a Comment