Saturday 25 November 2017

Backtest Sistema Forex


Backtesting: Interpretando o passado O Backtesting é um componente chave do desenvolvimento efetivo do sistema de negociação. É realizado reconstruindo, com dados históricos, negócios que teriam ocorrido no passado usando regras definidas por uma determinada estratégia. O resultado oferece estatísticas que podem ser usadas para avaliar a eficácia da estratégia. Usando esses dados, os comerciantes podem otimizar e melhorar suas estratégias, encontrar quaisquer falhas técnicas ou teóricas, e ganhar confiança em sua estratégia antes de aplicá-lo aos mercados reais. A teoria subjacente é que qualquer estratégia que funcionou bem no passado é susceptível de funcionar bem no futuro e, inversamente, qualquer estratégia que teve um desempenho ruim no passado é susceptível de funcionar mal no futuro. Este artigo dá uma olhada no que as aplicações são usadas para backtest, que tipo de dados é obtido, e como colocá-lo para usar Os dados e as ferramentas Backtesting pode fornecer abundância de valioso feedback estatístico sobre um determinado sistema. Algumas estatísticas de backtesting universal incluem: Lucro líquido ou perda - ganho ou perda percentual líquido. Prazo - Datas passadas em que o teste ocorreu. Universo - Estoques que foram incluídos no backtest. Medidas de volatilidade - Percentagem máxima de subida e descida. Médias - Percentual de ganho médio e perda média, média de barras mantidas. Exposição - Percentual de capital investido (ou exposto ao mercado). Razões - Relação vitórias-perdas. Retorno anualizado - Retorno percentual ao longo de um ano. Retorno ajustado ao risco - Retorno percentual em função do risco. Normalmente, backtesting software terá duas telas que são importantes. O primeiro permite que o profissional personalize as configurações para backtesting. Essas personalizações incluem tudo, desde o período até os custos de comissão. Aqui está um exemplo de tal tela no AmiBroker: A segunda tela é o relatório de resultados de backtesting real. Isto é onde você pode encontrar todas as estatísticas mencionadas acima. Mais uma vez, aqui está um exemplo desta tela no AmiBroker: Em geral, a maioria dos softwares comerciais contém elementos semelhantes. Alguns programas de software high-end também incluem funcionalidades adicionais para realizar dimensionamento automático da posição, otimização e outros recursos mais avançados. Os 10 mandamentos Há muitos fatores comerciantes atenção para quando eles estão backtesting estratégias de negociação. Aqui está uma lista das 10 coisas mais importantes para lembrar enquanto backtesting: levar em conta as tendências do mercado amplo no período em que uma determinada estratégia foi testada. Por exemplo, se uma estratégia foi apenas testada de 1999 a 2000, pode não ser bem em um mercado de baixa. É muitas vezes uma boa idéia para backtest durante um período de tempo longo que engloba vários tipos diferentes de condições de mercado. Leve em conta o universo no qual o backtesting ocorreu. Por exemplo, se um sistema de mercado amplo é testado com um universo consistindo de ações de tecnologia, pode deixar de fazer bem em diferentes setores. Como regra geral, se uma estratégia é direcionada para um gênero específico de estoque, limitar o universo a esse gênero, mas, em todos os outros casos, manter um grande universo para fins de teste. Medidas de volatilidade são extremamente importantes a considerar no desenvolvimento de um sistema de comércio. Isto é especialmente verdadeiro para as contas alavancadas, que são sujeitas a chamadas de margem se a sua equidade desce abaixo de um certo ponto. Os comerciantes devem procurar manter a volatilidade baixa, a fim de reduzir o risco e permitir uma transição mais fácil dentro e fora de um determinado estoque. O número médio de barras mantidas também é muito importante para assistir ao desenvolver um sistema de negociação. Embora a maioria dos backtesting software inclui custos de comissão nos cálculos finais, isso não significa que você deve ignorar esta estatística. Se possível, aumentar o número médio de barras mantidas pode reduzir os custos de comissão e melhorar o retorno geral. A exposição é uma espada de dois gumes. Aumento da exposição pode levar a maiores lucros ou maiores perdas, enquanto diminuição da exposição significa lucros mais baixos ou menos perdas. No entanto, em geral, é uma boa idéia para manter a exposição abaixo de 70, a fim de reduzir o risco e permitir uma transição mais fácil dentro e fora de um determinado estoque. A estatística de ganhos / perdas médios, combinada com a relação ganhos-perdas, pode ser útil para determinar o dimensionamento de posição otimizado e o gerenciamento de dinheiro usando técnicas como o Critério Kelly. (Veja Money Management Usando o Critério Kelly.) Os comerciantes podem assumir posições maiores e reduzir os custos de comissão, aumentando seus ganhos médios e aumentando sua relação ganhos-para-perdas. Retorno anualizado é importante porque é usado como uma ferramenta para comparar os retornos de sistemas contra outros locais de investimento. É importante não só olhar para o retorno global anualizado, mas também para ter em conta o risco aumentado ou diminuído. Isso pode ser feito olhando para o retorno ajustado ao risco, que explica vários fatores de risco. Antes de um sistema de negociação ser adotado, ele deve superar todos os outros locais de investimento em igual ou menos risco. Backtesting personalização é extremamente importante. Muitas aplicações backtesting têm entrada para valores de comissão, tamanhos de lote redondos (ou fracionários), tamanhos de carrapatos, requisitos de margem, taxas de juros, pressupostos de deslizamento, regras de dimensionamento de posição, regras de saída da mesma barra, configurações de parada e muito mais. Para obter os resultados de backtesting mais precisos, é importante ajustar essas configurações para imitar o corretor que será usado quando o sistema for ativado. Backtesting às vezes pode levar a algo conhecido como super-otimização. Esta é uma condição onde os resultados de desempenho são ajustados tão altamente ao passado que eles não são mais precisos no futuro. É geralmente uma boa idéia implementar regras que se aplicam a todas as ações ou um conjunto selecionado de ações segmentadas e não são otimizadas na medida em que as regras não são mais compreensíveis pelo criador. Backtesting nem sempre é a maneira mais precisa para avaliar a eficácia de um determinado sistema de comércio. Às vezes, as estratégias que funcionaram bem no passado não conseguem fazer bem no presente. O desempenho passado não é indicativo de resultados futuros. Certifique-se de comércio de papel de um sistema que foi testado com sucesso antes de ir ao vivo para ter certeza de que a estratégia ainda se aplica na prática. Conclusão Backtesting é um dos aspectos mais importantes do desenvolvimento de um sistema comercial. Se criado e interpretado corretamente, pode ajudar comerciantes a aperfeiçoar e melhorar suas estratégias, encontrar todas as falhas técnicas ou teóricas, assim como ganhar a confiança em sua estratégia antes de aplicá-la aos mercados reais. Recursos Tradecision (tradecision) - High-end Desenvolvimento do Sistema de Negociação AmiBroker (amibroker) - Desenvolvimento do Sistema de Negociação de Orçamento. A taxa de juros em que uma instituição depositária empresta fundos mantidos no Federal Reserve para outra instituição depositária. Uma carteira de títulos de renda fixa nos quais cada título tem uma data de vencimento significativamente diferente. O propósito de. A data de vencimento de vários futuros de índices de ações, opções de ações, opções de ações e futuros de ações individuais. Todas as ações. Um tipo de apólice de seguro onde o segurado paga uma quantidade especificada de despesas de bolso para serviços de saúde tal. Ações governamentais e políticas que restringem ou restringem o comércio internacional, muitas vezes feito com a intenção de proteger locais. Um fiduciário é uma pessoa que age em nome de outra pessoa, ou pessoas para gerenciar assets. How para backtest sistema com dados passados ​​Aqui estão 2 pdfs sobre o uso de MT4 para testar de volta. Diz-se que MT4 não é o melhor para o teste de volta, mas eu acho que é OK para obter uma estimativa do que você pode esperar. O teste direto é a melhor maneira de determinar o potencial de uma estratégia antes de comprometer o dinheiro. O Alpari doc é muito bom, pois descreve como alcançar uma qualidade de 90 modelos. Na negociação, não há besteira. Você ganha dinheiro ou não. Os membros devem ter pelo menos 0 vouchers para postar neste tópico. 0 traders visualizando agora Forex Factoryreg é uma marca registrada. O QSForex é um backtesting orientado a eventos de código aberto e uma plataforma de negociação ao vivo para uso nos mercados de câmbio (forex), atualmente em um estado alfa. Ele foi criado como parte da série Forex Trading Diary em QuantStart para fornecer a comunidade comercial sistemática com um mecanismo de negociação robusto que permite a implementação direta de estratégia forex e testes. O software é fornecido sob uma licença MIT permissiva (veja abaixo). Open-Source - O QSForex foi lançado sob uma Licença de MIT de código aberto extremamente permissiva, que permite o uso completo em pesquisas e aplicações comerciais, sem restrições, mas sem garantia de qualquer tipo. Free - QSForex é totalmente gratuito e não custa nada para download ou uso. Colaboração - Como o QSForex é de código aberto, muitos desenvolvedores colaboram para melhorar o software. Novos recursos são adicionados com freqüência. Quaisquer erros são rapidamente determinados e corrigidos. Desenvolvimento de Software - QSForex é escrito na linguagem de programação Python para suporte cruzado direto. QSForex contém um conjunto de testes de unidade para a maioria do seu código de cálculo e novos testes são constantemente adicionados para novos recursos. Arquitetura Orientada a Eventos - QSForex é completamente orientada a eventos tanto para backtesting quanto para negociação ao vivo, o que leva à transição direta de estratégias de uma fase de pesquisa / teste para uma implementação de negociação ao vivo. Custos de Transação - Os custos de spread são incluídos por padrão para todas as estratégias testadas. Backtesting - O QSForex apresenta backtesting de par multi-moeda de vários dias. Trading - A QSForex atualmente oferece suporte a negociação intraday ao vivo usando a OANDA Brokerage API em um portfólio de pares. Métricas de Desempenho - QSForex atualmente suporta medição de desempenho básico e visualização de equidade através das bibliotecas de visualização Matplotlib e Seaborn. Instalação e Uso 1) Visite oanda / e configure uma conta para obter as credenciais de autenticação da API, que você precisará para realizar a negociação ao vivo. Eu explico como realizar isso neste artigo: Quantstart / articles / Forex-Trading-Diary-1-Automated-Forex-Trading-com-OANDA-API. 2) Clone este repositório git em um local adequado em sua máquina usando o seguinte comando em seu terminal: git clone github / mhallsmoore / qsforex. git. Alternativa você pode baixar o arquivo zip do ramo mestre atual em github / mhallsmoore / qsforex / archive / master. zip. 3) Crie um conjunto de variáveis ​​de ambiente para todas as configurações encontradas no arquivo settings. py no diretório raiz do aplicativo. Como alternativa, você pode codificar suas configurações específicas, substituindo as chamadas os. environ. get (.) Para cada configuração: 4) Crie um ambiente virtual (virtualenv) para o código QSForex e utilize pip para instalar os requisitos. Por exemplo, em um sistema baseado em Unix (Mac ou Linux), você pode criar um diretório como o seguinte, digitando os seguintes comandos no terminal: Isso criará um novo ambiente virtual para instalar os pacotes em. Supondo que você baixou o repositório gst do QSForex para um diretório de exemplo como / projects / qsforex / (mude este diretório abaixo para onde você instalou o QSForex), então para instalar os pacotes você precisará executar os seguintes comandos: Tempo como NumPy, SciPy, Pandas, Scikit-Learn e Matplotlib devem ser compilados. Há muitos pacotes necessários para que isso funcione, por favor, dê uma olhada nesses dois artigos para obter mais informações: Você também precisará criar um link simbólico do seu diretório de pacotes do site para o diretório de instalação do QSForex para poder chamar Importe qsforex dentro do código. Para fazer isso, você precisará de um comando semelhante ao seguinte: Certifique-se de alterar / projects / qsforex para o diretório de instalação e /venv/qsforex/lib/python2.7/site-packages/ para o diretório de pacotes do site virtualenv. Agora você poderá executar os comandos subseqüentes corretamente. 5) Nesta fase, se você simplesmente deseja realizar prática ou negociação ao vivo, então você pode executar python trading / trade. py. Que utilizará a estratégia de negociação padrão do TestStrategy. Isso simplesmente compra ou vende um par de moedas a cada 5º tick. É puramente para testes - não usá-lo em um ambiente de negociação ao vivo Se você deseja criar uma estratégia mais útil, basta criar uma nova classe com um nome descritivo, p. MeanReversionMultiPairStrategy e verifique se ele tem um método calculatesignals. Você precisará passar esta classe a lista de pares, bem como a fila de eventos, como em trading / trading. py. Consulte estratégia / estratégia. py para obter detalhes. 6) A fim de realizar qualquer backtesting é necessário para gerar dados forex simulados ou download histórico tiquetaquear dados. Se você quiser simplesmente tentar o software para fora, a maneira mais rápida de gerar um exemplo backtest é gerar alguns dados simulados. O formato de dados atual usado pelo QSForex é o mesmo que o fornecido pelo DukasCopy Historical Data Feed em dukascopy / swiss / english / marketwatch / historical /. Para gerar alguns dados históricos, certifique-se de que a configuração CSVDATADIR em settings. py seja definida para um diretório no qual você deseja que os dados históricos sejam transmitidos. Em seguida, você precisa executar generatesimulatedpair. py. Que está sob o diretório scripts /. Ele espera um único argumento de linha de comando, que neste caso é o par de moedas no formato BBBQQQ. Por exemplo: Neste estágio, o script é codificado para criar um único mês de dados para janeiro de 2014. Ou seja, você verá arquivos individuais, do formato BBBQQQYYYYMMDD. csv (por exemplo, GBPUSD20140112.csv) aparecem no seu CSVDATADIR para todos os dias úteis em Esse mês. Se você deseja alterar o mês / ano da saída de dados, basta modificar o arquivo e voltar a executar. 7) Agora que os dados históricos foram gerados, é possível realizar um backtest. O próprio arquivo backtest é armazenado em backtest / backtest. py. Mas isso só contém a classe Backtest. Para realmente executar um backtest você precisa instanciar essa classe e fornecer os módulos necessários. A melhor maneira de ver como isso é feito é observar a implementação do Crossover de Moving Average no arquivo examples / mac. py e usá-lo como um modelo. Isso faz uso do MovingAverageCrossStrategy que é encontrado em strategy / strategy. py. Isso padrão para negociação tanto GBP / USD e EUR / USD para demonstrar o uso de par de moedas múltiplas. Ele usa os dados encontrados no CSVDATADIR. Para executar o exemplo backtest, basta executar o seguinte: Isso levará algum tempo. No meu sistema de desktop Ubuntu em casa, com os dados históricos gerados via generatesimulatedpair. py. Leva cerca de 5-10 minutos para ser executado. Uma grande parte deste cálculo ocorre no final do backtest real, quando o levantamento está sendo calculado, por favor, lembre-se que o código não desligou Por favor, deixe-o até a conclusão. 8) Se você quiser ver o desempenho do backtest você pode simplesmente usar output. py para ver uma curva de equidade, retornos de período (ou seja, retornos de tick-to-tick) e uma curva de redução: E thats it Nesta fase você está pronto Para começar a criar seus próprios backtests modificando ou acrescentando estratégias em strategy / strategy. py e usando dados reais baixados do DukasCopy (dukascopy / swiss / english / marketwatch / historical /). Se você tiver alguma dúvida sobre a instalação, então sinta-se livre para me enviar um e-mail no mikequantstart. Se você tiver quaisquer bugs ou outros problemas que você acha que podem ser devido à codebase especificamente, sinta-se livre para abrir uma questão Github aqui: github / mhallsmoore / qsforex / issues Copyright (c) 2015 Michael Halls-Moore A qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o Software), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, fundir, publicar, distribuir, sublicenciar e / Ou vender cópias do Software e permitir que as pessoas a quem o Software é fornecido o façam, sujeito às seguintes condições: O aviso de copyright acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software. O SOFTWARE É FORNECIDO TAL COMO É, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO-INFRAÇÃO. EM NENHUMA CIRCUNSTÂNCIA OS AUTORES OU TITULARES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTROS NEGOCIADOS NA PROGRAMAS. Negação de Negociação de Forex Trocando o câmbio na margem carrega um nível elevado do risco, e não pode ser apropriado para todos os investors. O desempenho passado não é indicativo de resultados futuros. O alto grau de alavancagem pode trabalhar contra você, assim como para você. Antes de decidir investir em divisas você deve considerar cuidadosamente seus objetivos de investimento, nível de experiência e apetite pelo risco. A possibilidade existe que você poderia sustentar uma perda de alguns ou todos do seu investimento inicial e, portanto, você não deve investir o dinheiro que você não pode dar ao luxo de perder. Você deve estar ciente de todos os riscos associados com negociação de câmbio, e procurar aconselhamento de um consultor financeiro independente, se você tiver quaisquer dúvidas.

No comments:

Post a Comment