Friday 10 November 2017

Forex Backtesting Excel


Usando o Excel para voltar testar estratégias de negociação Como fazer uma volta ao teste com o Excel, fiz uma boa quantidade de teste de back-up da estratégia de negociação. Eu usei linguagens e algoritmos de programação sofisticados e eu também fiz isso com lápis e papel. Você não precisa ser um cientista de foguetes ou um programador para testar várias estratégias de negociação. Se você pode operar uma planilha eletrônica, como o Excel, você pode voltar testar muitas estratégias. O objetivo deste artigo é mostrar-lhe como rever um teste de uma estratégia comercial usando o Excel e uma fonte de dados acessível ao público. Isso não deve custar-lhe mais do que o tempo necessário para fazer o teste. Antes de começar a testar qualquer estratégia, você precisa de um conjunto de dados. No mínimo, esta é uma série de data e preços. Mais realista, você precisa dos preços de data e hora, aberto, alto, baixo e fechado. Você geralmente só precisa do componente de tempo da série de dados se estiver testando estratégias de negociação intradiária. Se você quer trabalhar e aprender a fazer uma volta com o Excel enquanto estiver lendo isso, siga as etapas que eu descrevo em cada seção. Nós precisamos obter alguns dados para o símbolo que vamos voltar a testar. Ir para: Finanças do Yahoo No campo Símbolo de inserir digite: IBM e clique em Ir sob Cotações no lado esquerdo, clique em Preços históricos e insira os intervalos de datas desejados. Selecionei de 1 de janeiro de 2004 a 31 de dezembro de 2004 Desça até a parte inferior da página e clique em Baixar para Folha de cálculo Salve o arquivo com um nome (como ibm. csv) e para um local que você possa encontrar mais tarde. Preparando os dados Abra o arquivo (que você baixou acima) usando o Excel. Devido à natureza dinâmica da Internet, as instruções que você leu acima e o arquivo que você abriu podem ter mudado no momento em que você lê isso. Quando eu baixei este arquivo, as melhores linhas pareciam assim: agora você pode excluir as colunas que você não vai usar. Para o teste que estou prestes a fazer, só usarei a data, abrir e fechar valores, então eu exclui o Alto, o Baixo, o Volume e o Adj. Fechar. Eu também ordenou os dados para que a data mais antiga fosse primeiro e a última data estava na parte inferior. Use as opções do menu Classificar dados para fazer isso. Em vez de testar uma estratégia, eu vou tentar encontrar o dia da semana que forneceu o melhor retorno se você seguiu uma compra aberta e venda a estratégia de fechamento. Lembre-se de que este artigo está aqui para apresentá-lo sobre como usar o Excel para apoiar as estratégias de teste. Podemos construir sobre isso no futuro. Aqui está o arquivo ibm. zip que contém a planilha com os dados e as fórmulas para este teste. Meus dados agora residem nas colunas A a C (Data, Abrir, Fechar). Nas colunas D a H, tenho fórmulas de lugar para determinar o retorno em um dia específico. Inserindo as fórmulas A parte complicada (a menos que você seja um especialista do Excel) esteja trabalhando as fórmulas para usar. Isso é apenas uma questão de prática e quanto mais você pratica, mais fórmulas você descobrirá e mais flexibilidade você terá com seus testes. Se você baixou a planilha e veja a fórmula na célula D2. Parece assim: esta fórmula é copiada para todas as outras células nas colunas D a H (exceto a primeira linha) e não precisa ser ajustada uma vez que foi copiada. Vou explicar brevemente a fórmula. A fórmula IF tem uma condição, parte verdadeira e falsa. A condição é: se o dia da semana (convertido em um número de 1 a 5 que corresponde de segunda a sexta-feira) é o mesmo que o dia da semana na primeira linha desta coluna (D1). A verdadeira parte da declaração (C2-B2) simplesmente nos dá o valor do Close-Open. Isso indica que compramos o Open e vendemos o Close e este é o nosso profitloss. A parte falsa da declaração é um par de aspas duplas () que não coloca nada na célula se o dia da semana não for combinado. Os sinais à esquerda da letra da coluna ou do número da linha bloqueiam a coluna ou a linha para que, quando esta copiou, essa parte da referência da célula não muda. Então, aqui em nosso exemplo, quando a fórmula é copiada, a referência para a célula de data A2 mudará o número da linha se for copiada para uma nova linha, mas a coluna permanecerá na coluna A. Você pode aninhar as fórmulas e fazer regras excepcionalmente poderosas E expressões. Os resultados Na parte inferior das colunas da semana, coloquei algumas funções de resumo. Nomeadamente, as funções média e soma. Estes nos mostram que, durante 2004, o dia mais lucrativo para implementar esta estratégia foi em uma terça-feira e isso foi seguido de perto por uma quarta-feira. Quando eu testei a estratégia de Vencimento às Sextas - Bullish ou Bearish e escrevi esse artigo, usei uma abordagem muito similar com uma planilha e fórmulas como esta. O objetivo desse teste foi ver se as sextas de caducidade eram geralmente de alta ou baixa. Experimente. Baixe alguns dados do Yahoo Finance. Carregue no Excel e experimente as fórmulas e veja o que pode surgir. Publique suas perguntas no fórum. Boa sorte e estratégia lucrativa caçaBacktesting no Excel vs MQL4 Inscrito em Jul 2011 Status: Membro 4 Posts Alguém faz backtesting no Excel, ou conhece membros que eu gostaria de discutir metodologia e modelos com quem usa o Excel. Alguém tem modelos simples (ou complexos) que estariam dispostos a compartilhar para indicadores ou sistemas básicos. Devo dedicar algum tempo a aprender MQL4. Tenho muita experiência em modelagem no Excel, mas não tenho experiência em programação de computadores. Estou relutante em passar o tempo aprendendo o MQL4, pois eu não partirei do nada, mas talvez isso seja mais fácil. Existem outros não programadores que se tornaram proficientes em MQL4. Participou de outubro de 2007 Status: Membro 92 Posts O Excel é uma ferramenta poderosa. Embora seja projetado para funcionar como uma folha de propagação e modelagem, etc., as pessoas usaram isso para fazer todos os tipos de coisas incríveis, incluindo AI, bases de dados, etc., embora existam ferramentas especializadas especificamente para essas tarefas. O MQL4 é uma linguagem bastante grosa, mas é projetado especificamente para negociação e, portanto, tem muitas coisas específicas para essa tarefa. Enquanto há um debate em curso sobre a eficácia do testador de estratégia como uma ferramenta de teste de volta, estou certo de que você estará de volta testando dez vezes mais rápido com o MQL4 mesmo se você tiver que aprender o idioma do zero. Você provavelmente já está familiarizado com muitos dos conceitos de programação fundamentais, como loops e declarações condicionais. Para a rota do Excel, você pode querer procurar ferramentas que já estão disponíveis, seja surpreendido se alguém já tenha feito isso. Se você não consegue encontrar algo pronto, você terá que primeiro projetar um simulador de comércio, lidar com o relatório, processar seus dados históricos e depois ter uma UI razoável. Tudo isso vem gratuitamente com MT4. Junte-se a outubro de 2007 Status: Membro 887 Posts Qualquer coisa que envolva cálculos que faço no Excel, tenha feito há anos. No entanto, não tenho certeza de que você tirará algo de meus modelos porque eles são específicos do que estou fazendo. O Excel é muito mais flexível e transparente, para que você possa interrogar e verificar os dados corretamente. Para o não programador é dourado. Apenas como um exemplo, quanto tempo demoraria você derrubar uma EA que mostra a volatilidade média de qualquer hora dada nos últimos 14 dias. Não estou dizendo que é impossível - eu não tenho ideia - mas no Excel, uma tabela dinâmica e 5 minutos depois e você está pronto. Onde o Excel cai está em negociação ao vivo - ele não joga muito bem em outras plataformas de negociação (FXCM IBCurrenex), mas para fazer backtesting, isso não importa. Registrado julho 2009 Status. Ou cerca de 216 Posts Quando comecei a fazer minha própria análise, comecei com o Excel, pois não tinha experiência de programação e achava o VBA mais fácil de aprender do que o MQL4. Agora eu uso uma combinação de ambos. Na minha experiência limitada, o MQL4 é mais rápido na realização de cálculos que o Excel, em particular se sua folha do Excel fizer uso de muitas funções definidas pelo usuário. Um dos meus projetos em andamento é construir uma planilha para analisar instrumentos diferentes em intervalos semanais e diários. No começo, pensei que eu usaria o MQL4 para escrever arquivos. csv de informações do OHLC para cada instrumento e prazo, e depois triturar os números no Excel. Inconveniente - levando alguns minutos para recalcular Então, agora eu executo todos os calcs no MT4 e depois escrevo apenas dois arquivos. Excel é então a UI e não há espera em calcs. Suponho que o que estou recebendo é que se você pode usar os dois, então você está se dando a capacidade de usar o que for mais adequado à tarefa que você definiu. Apenas meu 2 pence. Registrado em maio de 2006 Status: Somente um nome de usuário. 1.367 Posts Ive tentou esses métodos ao longo dos anos: MT4 Strategy Tester Programas personalizados do Python OpenOffice Calc (compatível com o Excel) Cada EA possui suas próprias características, mas, em geral, tive os melhores resultados com MT4 IndicatorsScripts. Se você pode criar um indicador que duplique as ações de uma determinada EA, é possível transformar esse indicador em uma ferramenta de análise. Todas as EAs não se prestam a esta abordagem, mas se você tiver uma que faz, fornecerá resultados quase instantâneos (não é preciso para o pip, mas próximo o suficiente) e salvar ter que mexer com arquivos csv ou outras técnicas de interface mais complexas. IMHO, deixe a natureza da EA que você está testando ditar o melhor método de teste. O velho Benjamin estava certo. O QSForex é uma plataforma de negociação em tempo real baseada em eventos e plataforma aberta para uso nos mercados de divisas estrangeiras, atualmente em um estado alfa. Ele foi criado como parte da série Forex Trading Diary no QuantStart para fornecer à comunidade comercial sistemática um motor de negociação robusto que permite a implementação e o teste direto da estratégia forex. O software é fornecido sob uma licença MIT permissiva (veja abaixo). Open-Source - QSForex foi lançado sob uma Licença MIT de código aberto extremamente permissiva, que permite o uso total em aplicações comerciais e comerciais, sem restrições, mas sem garantia de qualquer tipo. Grátis - QSForex é completamente gratuito e não custa nada para baixar ou usar. Colaboração - Como o QSForex é de código aberto, muitos desenvolvedores colaboram para melhorar o software. Novos recursos são adicionados com freqüência. Todos os erros são rapidamente determinados e corrigidos. Desenvolvimento de Software - QSForex está escrito na linguagem de programação Python para suporte direto à plataforma cruzada. 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 por eventos - O QSForex é completamente orientado para eventos tanto para backtesting quanto para negociação ao vivo, o que leva a uma transição direta de estratégias de uma fase de teste de pesquisa 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 possui backtesting de vários dias multi-currency multi-day intraday. Negociação - O QSForex atualmente oferece suporte à negociação intradiária ao vivo usando a OANDA Brokerage API em um portfólio de pares. Métricas de desempenho - O QSForex atualmente oferece suporte a medição básica de desempenho 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á realizar uma negociação ao vivo. Eu explico como realizar isso neste artigo: quantstartarticlesForex-Trading-Diary-1-Automated-Forex-Trading-with-the-OANDA-API. 2) Clonar este repositório git em um local adequado em sua máquina usando o seguinte comando em seu terminal: git clone githubmhallsmooreqsforex. git. Alternativa, você pode baixar o arquivo zip do ramo mestre atual no githubmhallsmooreqsforexarchivemaster. 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. Alternativamente, você pode codificar suas configurações específicas substituindo as chamadas os. environ. get (.) Por cada configuração: 4) Crie um ambiente virtual (virtualenv) para o código QSForex e use pip para instalar os requisitos. Por exemplo, em um sistema baseado em Unix (Mac ou Linux), você pode criar esse diretório da seguinte maneira, digitando os seguintes comandos no terminal: isso criará um novo ambiente virtual para instalar os pacotes. Supondo que você baixou o repositório QSForex git em um diretório de exemplo, como projectsqsforex (mude este diretório abaixo para onde você instalou QSForex), então, para instalar os pacotes, você precisará executar os seguintes comandos: Isso levará algum tempo como NumPy, SciPy, Pandas, Scikit-Learn e Matplotlib devem ser compilados. Existem muitos pacotes necessários para que isso funcione, por isso, dê uma olhada nestes dois artigos para obter mais informações: você também precisará criar um link simbólico do seu diretório de pacotes de sites para seu diretório de instalação QSForex para poder ligar Importe qsforex dentro do código. Para fazer isso, você precisará de um comando semelhante ao seguinte: Certifique-se de alterar projectsqsforex para seu diretório de instalação e venvqsforexlibpython2.7site-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áticas ou negociação ao vivo, então você pode executar o python tradingtrading. py. Que usará a estratégia de negociação padrão do TestStrategy. Isso simplesmente compra ou vende um par de moedas a cada 5%. É puramente para testes - não use isso 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, por exemplo, MeanReversionMultiPairStrategy e garantir que ele tenha um método calculatesignals. Você precisará passar esta classe a lista de pares, bem como a fila de eventos, como em tradingtrading. py. Por favor, veja strategystrategy. py para obter detalhes. 6) Para realizar qualquer backtesting, é necessário gerar dados forex simulados ou baixar dados históricos do tick. Se você deseja simplesmente experimentar o software, a maneira mais rápida de gerar um exemplo de backtest é gerar alguns dados simulados. O formato de dados atual usado por QSForex é o mesmo que o fornecido pelo DukasCopy Historical Data Feed em dukascopyswissenglishmarketwatchhistorical. Para gerar alguns dados históricos, certifique-se de que a configuração CSVDATADIR em settings. py seja configurada para um diretório onde você deseja que os dados históricos sejam exibidos. Você então precisa gerar generatesimulatedpair. py. Que está no diretório de scripts. Ele espera um único argumento de linha de comando, que neste caso é o par de moedas no formato BBBQQQ. Por exemplo: Nesta etapa, o script é codificado para criar dados de um único mês 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 Naquele mês. Se você deseja alterar o mês 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 arquivo backtest em si é armazenado no backtestbacktest. 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 é olhar para o exemplo de Implementação de Crossover em Moving Average no arquivo examplesmac. py e usá-lo como um modelo. Isso faz uso do MovingAverageCrossStrategy que é encontrado em strategystrategy. py. Este padrão é a negociação de GBPUSD e EURUSD para demonstrar o uso de par de moedas múltiplas. Usa 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. Demora cerca de 5-10 minutos para correr. Uma grande parte deste cálculo ocorre no final do backtest real, quando o drawdown está sendo calculado, então lembre-se de que o código não foi desligado. Por favor, deixe-o até a conclusão. 8) Se você deseja visualizar o desempenho do backtest, você pode simplesmente usar output. py para ver uma curva de equivalência patrimonial, retornos de período (ou seja, tick-to-tick returns) e uma curva de redução: E é isso. Nesta fase você está pronto Para começar a criar os seus backtests modificando ou anexando estratégias em strategystrategy. py e usando dados reais baixados da DukasCopy (dukascopyswissenglishmarketwatchhistorical). Se você tiver alguma dúvida sobre a instalação, então fique à vontade para me enviar um e-mail no mikequantstart. Se você tiver algum erro ou outras questões que você acha que podem ser devido especificamente à base de código, sinta-se livre para abrir um problema Github aqui: githubmhallsmooreqsforexissues Copyright (c) 2015 Michael Halls-Moore É concedida, gratuitamente, a qualquer pessoa Obtendo uma cópia deste software e dos arquivos de documentação associados (o Software), para lidar no Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e vender cópias do Software, E permitir que as pessoas a quem o Software seja fornecido, sob reserva das seguintes condições: O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software. O SOFTWARE É FORNECIDO COMO É, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, APTIDÃO PARA UM PROPÓSITO ESPECÍFICO E NÃO INFRACÇÃ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 AÇÃO DE CONTRATO, DELITO OU DE OUTRA FORMA, DECORRENTE, FORA OU RELACIONADA COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NA PROGRAMAS. Disclaimer de Negociação de Forex A troca de câmbio em margem possui um alto nível de risco e pode não ser adequada para todos os investidores. O desempenho passado não é indicativo de resultados futuros. O alto grau de alavancagem pode funcionar contra você, bem como para você. Antes de decidir investir em divisas, você deve considerar cuidadosamente seus objetivos de investimento, nível de experiência e apetite de risco. Existe a possibilidade de que você possa sustentar a perda de algum ou todo seu investimento inicial e, portanto, você não deve investir dinheiro que não pode perder. Você deve estar ciente de todos os riscos associados à negociação cambial e procurar o aconselhamento de um consultor financeiro independente se tiver dúvidas.

No comments:

Post a Comment