Tuesday 18 February 2020

Teste de média retrocesso simples


Simple Moving Averages - Trading backtests. What mover parâmetros médios são os melhores. Este site tem um oceano de média móvel backtests que eu realizei para o DAX, SP500 e também EU EU Forex. These testes foram feitos usando diferentes estratégias de sinal simples exponencial e crossover Variantes e índices diferentes para um período de tempo de 1000 dias de negociação. Em contraste com outros sites, eu testei todos os valores médios da janela do dia de 1 a 1000 dias, para as estratégias de cross-over também em combinação. Estes dados também são unqiue como Eu tentei realizar testes realistas, simulando o spread de venda de compra e impostos para comparação com uma estratégia de retenção de compra de referência. Um valor de janela reagindo rápido parece bom na teoria e com um teste simples Mas o spread, taxas e impostos vai destruir todo o desempenho em Aplicação prática É por isso que estes testes realistas são tão valiosos. Espero que este site pode ajudá-lo com seus negócios, apreciá-lo. Back-testando suas idéias de negociação. Uma das coisas mais úteis que você pode fazer Na janela de análise é back-test sua estratégia de negociação em dados históricos Isso pode lhe dar uma visão valiosa em pontos fortes e fracos de seu sistema antes de investir dinheiro real Este recurso único AmiBroker é pode economizar muito dinheiro para you. Writing suas regras comerciais . Primeiro, você precisa ter regras objetivas ou mecânicas para entrar e sair do mercado. Este passo é a base da sua estratégia e você precisa pensar sobre isso sozinho, já que o sistema deve corresponder a sua tolerância ao risco, tamanho de carteira, técnicas de gerenciamento de dinheiro e muitos Outros fatores individuais. Uma vez que você tem suas próprias regras para a negociação você deve escrevê-los como comprar e vender regras em AmiBroker Formula Lanugage mais curto e tampa se você quiser testar também negociação curta. Em este capítulo vamos considerar transição média móvel muito básico Sistema O sistema compraria contratos de ações quando o preço próximo sobe acima da média móvel exponencial de 45 dias e venderá contratos de ações quando o preço de fechamento cai abaixo de 45 dias exponentia L média móvel. A média móvel exponencial pode ser calculada em AFL usando sua função embutida EMA. Tudo o que você precisa fazer é especificar a matriz de entrada eo período de média, então a média móvel exponencial de 45 dias dos preços de fechamento pode ser obtida por A seguinte declaração. O identificador de fechamento refere-se a built-in matriz mantendo os preços de fechamento do símbolo atualmente analisado. Para testar se o preço próximo cruza acima da média móvel exponencial, vamos usar built-in cross function. buy cruz fechar, ema close, 45. A declaração acima define uma regra de negociação de compra Dá 1 ou verdade quando o preço próximo cruza acima ema perto, 45 Então podemos escrever a regra de venda que daria 1 quando acontecer situação oposta - fechar preço cruza abaixo ema close, 45.sell cross ema Fechar, fechar 45. Por favor, note que estamos usando a mesma função de cruz, mas a ordem oposta de arguments. So fórmula completa para longos comércios será parecido com this. buy cross fechar, ema close, 45 vender cross ema close, 45, close. NOTE To c Reate nova fórmula, por favor abra o Editor de fórmulas usando o menu Analysis - Formula Editor, digite a fórmula e escolha Tools - Envie para o menu Analysis no editor de fórmulas. Para testar seu sistema basta clicar no botão Back test na janela Automatic analysis Certifique - Ter digitado na fórmula que contém, pelo menos, comprar e vender as regras de negociação, como mostrado acima Quando a fórmula está correta AmiBroker começa a analisar seus símbolos de acordo com suas regras de negociação e gera uma lista de comércios simulados Todo o processo é muito rápido - Milhares de símbolos em questão de minutos A janela de progresso irá mostrar-lhe o tempo estimado de conclusão Se você quiser parar o processo, você pode simplesmente clicar no botão Cancelar na janela de progresso. Quando o processo for concluído a lista de comércios simulados é mostrado na parte inferior Parte da janela de análise automática o painel de resultados Você pode examinar quando os sinais de compra e venda ocorreu apenas clicando duas vezes no comércio no painel de resultados Isto lhe dará ra W ou sinais não filtrados para cada bar quando as condições de compra e venda forem atendidas Se você quiser ver apenas setas de comércio único abrindo e fechando comércio selecionado atualmente você deve clicar duas vezes na linha enquanto mantém pressionada a tecla SHIFT pressionada Alternativamente, você pode escolher o tipo de exibição por Selecionando o item apropriado no menu de contexto que aparece quando você clica no painel de resultados com um botão direito do mouse. Além da lista de resultados, você pode obter estatísticas muito detalhadas sobre o desempenho do seu sistema clicando no botão Relatório Para saber mais Sobre as estatísticas do relatório por favor verifique descrição da janela de relatório. Changing suas configurações de teste back. Back teste motor em AmiBroker usa alguns valores predefinidos para realizar sua tarefa, incluindo o tamanho da carteira, periodicidade diária semanal mensal, montante da comissão, taxa de juros, perda máxima e lucro Paradas de destino, tipo de negócios, campos de preço e assim por diante Todas essas configurações podem ser alteradas pelo usuário usando a janela de configurações A Depois de mudar as configurações, por favor, lembre-se de executar o seu teste de volta novamente se você quiser que os resultados sejam em sincronia com as configurações. Por exemplo, para testar as barras semanais em vez de diariamente basta clicar no botão Configurações selecione semanal da caixa de combinação Periodicity e Clique em OK, em seguida, clique em OK, em seguida, execute a análise, clicando em Test. Reserved retorna nomes de variáveis. A tabela a seguir mostra os nomes das variáveis ​​reservadas usadas pelo Automatic Analyzer O significado e exemplos sobre como usá-los são dadas mais adiante neste capítulo. Que é investido no comércio ver explicações abaixo. Automatic Analysis novo em 3 9.Until agora discutimos o uso bastante simples do testador traseiro AmiBroker, no entanto, suporta muito mais sofisticados métodos e conceitos que serão discutidos mais adiante neste capítulo Observe que O usuário iniciante deve primeiro jogar um pouco com os tópicos mais fáceis descritos acima antes de proceder. Assim, quando você estiver pronto, por favor, dê uma olhada no followin G recursos recentemente introduzidos do back-tester. a AFL scripting host para escritores de fórmulas avançadas b suporte reforçado para operações de curto c a maneira de controlar o preço de execução de ordem a partir do script d vários tipos de paradas em testador de volta posição e dimensionamento f lote tamanho do lote E tiquetaque tamanho g margem conta h backtesting futuros. FL scripting host é um tópico avançado que é coberto em um documento separado disponível aqui e eu não vou discutir isso neste documento Recursos restantes são muito mais fáceis de entender. Nas versões anteriores do AmiBroker , Se você quisesse back-testar o sistema usando os comércios longos e curtos, você poderia somente simular a estratégia stop-and-reverse Quando a posição longa foi fechada uma posição curta nova foi aberta immediatelly Era porque as variáveis ​​reservadas compra e venda foram usadas para ambos Tipos de negócios. Agora com a versão 3 59 ou superior existem variáveis ​​reservadas separadas para abrir e fechar trades. buy longo e curto - true ou 1 valor abre o comércio longo vender - verdadeiro ou 1 valor Fecha o comércio de curto prazo - verdadeiro ou 1 valor abre a cobertura de comércio curto - verdadeiro ou 1 valor fecha trade. Som curto, a fim de back-test negociações de curto você precisa atribuir curto e cubra as variáveis ​​Se você usar stop-and-reverse sistema sempre em O mercado simplesmente atribuir vender a curto e comprar para cobrir. Comprar curto cover. This venda simular a maneira pre-3 59 versões trabalhadas. Mas agora AmiBroker permite que você tenha regras de negociação separada para ir muito tempo e para ir curto como mostrado neste simples exemplo. Negociação longa regras de entrada e saída comprar cruz cci, 100 vender cruz 100, cci. Curto transações entrada e saída regras curto cross -100, cci cobrir cruz cci, -100.Note que, neste exemplo, se CCI está entre -100 e 100 você está fora do market. Controlling trade price. AmiBroker agora fornece 4 novas variáveis ​​reservadas Para especificar o preço ao qual as ordens de compra, venda, curto e de cobertura são executadas. Essas matrizes têm os seguintes nomes: buyprice, sellprice, shortprice e coverprice. A principal aplicação dessas variáveis ​​é o controle do preço de negociação. BuyPrice IIF dayofweek 1, HIGH, CLOSE on Compra de segunda-feira em alta, caso contrário, comprar em close. Portanto, você pode escrever o seguinte para simular real stop-orders. BuyStop a fórmula para comprar stop nível SellStop a fórmula para vender nível de stop. Se em qualquer momento durante o dia os preços sobem acima buystop nível alto buystop a ordem de compra ocorre no buystop ou baixo o que for maior Buy Cross High, BuyStop. Se em qualquer momento durante o dia os preços caem abaixo do nível de sellprice baixo sellstop a ordem de venda ocorre em sellstop ou alta o que for menor Sell Cross SellPrice, SellStop. BuyPrice max BuyStop, Low certifique-se comprar preço não inferior a SellStop Low Sell Sell, Preço de venda não superior a alta. Por favor, note que AmiBroker predefinições de preço de compra, sellprice, shortprice e coverprice variáveis ​​de matriz com os valores definidos na janela de configurações de teste do sistema mostrado abaixo, assim você pode, mas don t precisa defini-los em sua fórmula Se você don t Definir AmiBroker funciona como nas versões antigas. Durante back-testing AmiBroker irá verificar se os valores que você atribuiu a preço de compra, sellprice, shortprice, coverprice caber no intervalo de alta e baixa de determinado bar Se não, AmiBroker irá ajustá-lo ao preço alto se Preço é maior do que a alta ou para o preço baixo se o preço da matriz valor é menor do que low. Profit alvo stops. As você pode ver na imagem acima, novas configurações para o lucro metas paradas são availab Le na janela de configuração do teste do sistema As paradas de objetivo de lucro são executadas quando o preço alto para um determinado dia excede o nível de parada que pode ser dado como uma porcentagem ou um aumento de ponto do preço de compra Por padrão as paradas são executadas ao preço que você define como vender Array de preço para negociações longas ou matriz de preço de cobertura para negócios curtos Esse comportamento pode ser alterado usando Exit at stop feature. Exit em stop feature. If você marca Sair em stop box nas configurações os stops será executado no nível de parada exata, ou seja Se você definir objetivo de lucro parar em 10 sua parada eo preço de compra foi de 50 ordem stop será executado em 55, mesmo se a sua tabela preço de venda contém valor diferente, por exemplo preço de fechamento de 56. Máximo perdas pára de uma maneira semelhante - eles são Executado quando o preço baixo para um determinado dia cai abaixo do nível de parada que pode ser dado como uma porcentagem ou aumento de ponto do preço de compra. Este tipo de parada é usado para proteger os lucros como ele rastreia seu comércio assim cada vez que uma posição O valor atinge uma nova altura, o batente de arrasto é colocado em um nível mais alto Quando o lucro cai abaixo do nível de parada de arrasto, a posição é fechada Este mecanismo é ilustrado na figura abaixo. Uma amostra de baixo nível de implementação de lucro-alvo parar em AFL. Buy Cross MACD, Signal. for i 0 i BarCount i if priceatbuy 0.if priceatbuy 0 1 1 priceatbuy Venda i 1 SellPrice i 1 1 priceatbuy priceatbuy 0 else Sell i 0 . Esta é uma característica nova na versão 3 9 O dimensionamento da posição no backtester é executado por meio da nova variável reserved. PositionSize tamanho array. Now você pode controlar a quantidade do dólar ou a porcentagem da carteira que é investida no número trade. positive defina o montante do dólar que É investido no comércio por exemplo. PositionSize 1000 investir 1000 em cada trade. negative números -100 -1 definir percentual -100 dá 100 do tamanho da carteira atual, -33 dá 33 de capital disponível por exemplo. PositionSize -50 sempre investir apenas metade Do atual exemplo de dimensionamento equity. dynamic. PositionSize - 100 RSI. as RSI varia de 0 100 isso resultará em posição dependendo dos valores de RSI - baixos valores de RSI resultará em porcentagem maior investido. Se menos de 100 de dinheiro disponível está em O valor remanescente gera a taxa de juros conforme definido nas configurações. Há também uma nova caixa de seleção na janela de configurações do AA Permitir redução do tamanho da posição - isso controla como o backtester trata a situação quando o tamanho da posição solicitado através da variável PositionSize excede o dinheiro disponível quando esse sinalizador É verificado a posição é introduzida com o tamanho shinked ao dinheiro disponível se for desmarcada a posição não é entrada. Para ver tamanhos reais da posição use por favor um modo novo do relatório na janela das configurações de AA Lista de comércio com preços e pos o tamanho. Para o fim, aqui É um exemplo da técnica de dimensionamento de posição baseada em ATR da Tharp, codificada em AFL. Compre sua fórmula de compra aqui Venda 0 vendendo apenas por stop. TrailStopAmount 2 ATR 20 Capital 100000 IMPORTANTE Defina também na Configuração Initial Equity. Risk 0 01 Capital PositionSize Risk TrailStopAmount BuyPrice ApplyStop 2, 2, TrailStopAmount, 1. A técnica poderia ser resumida da seguinte forma. O capital total por símbolo é de 100.000, definimos o nível de risco em 1 de tota L equity O nível de risco é definido da seguinte forma se uma parada de arrasto em um estoque de 50 é, digamos, 45 o valor de dois ATR s contra a posição, a perda de 5 é dividido em 1000 de risco para dar 200 ações para comprar Então, Risco de perda é de 1000, mas o risco de alocação é de 200 partes x 50 partes ou 10.000 Portanto, estamos alocando 10 do capital próprio para a compra, mas apenas arriscando 1000 Editado trecho do AmiBroker mailing list. Round tamanho do lote e tiquetaque size. Various instrumentos são Negociado com várias unidades de negociação ou blocos Por exemplo, você pode comprar o número fracionário de unidades de fundo mútuo, mas você não pode comprar o número fracionário de ações Às vezes você tem que comprar em 10s ou 100s lotes AmiBroker agora permite que você especifique o tamanho do bloco global Eo nível por símbolo. Você pode definir o tamanho do lote redondo por símbolo na página Symbol - Information pic 3 O valor de zero significa que o símbolo não tem tamanho de lote redondo especial e usará a configuração global do tamanho de lote padrão da Análise automática Configurações p Age pic 1 Se o tamanho padrão é definido também para zero, significa que o número fracionário de contratos de ações é permitido. Você também pode controlar o tamanho do lote redondo diretamente de sua fórmula AFL usando RoundLotSize variável reservada, por exemplo. Esta configuração controla o movimento de preço mínimo de Dado o símbolo Você pode defini-lo no nível global e por símbolo Como com o tamanho do lote redondo, você pode definir o tamanho do carimbo por símbolo na página Symbol - Information pic 3 O valor de zero instrui o AmiBroker a usar o tamanho do carimbo padrão definido nas configurações Página pic 1 da janela de Análise Automática Se o tamanho de marca padrão também é definido como zero, significa que não há movimento de preço mínimo. Você pode definir e recuperar o tamanho de escala também da fórmula AFL usando a variável reservada TickSize, por exemplo. Size afeta somente os comércios saídos pelas paradas internas e ou ApplyStop O backtester supõe que os dados do preço seguem exigências do tamanho do tiquetaque e não muda os arrays de preço fornecidos pelo usuário. Akes sentido apenas se você estiver usando built-in pára pontos de saída são gerados em níveis de preços permitidos em vez de calculados Por exemplo, no Japão - você não pode ter partes fracionárias de ienes para que você deve definir global ticksize para 1, de modo built-in Pára o comércio de saída em níveis inteiros. Definição de margem de conta define o requisito de margem de porcentagem para toda a conta O valor padrão da margem de conta é 100 Isso significa que você tem que fornecer 100 fundos para entrar no comércio e esta é a maneira como backtester trabalhou em versões anteriores Mas agora você pode simular uma conta de margem Quando você compra na margem você está simplesmente emprestado dinheiro de seu corretor para comprar ações Com regulamentos atuais você pode colocar até 50 do preço de compra do estoque que você deseja comprar e emprestar a outra metade do seu Broker Para simular isso, basta digitar 50 no campo Margem da conta, veja a figura 1 Se sua equidade intial estiver definida como 10000, seu poder de compra será então de 20000 e você será capaz de entrar em posições maiores. Que esta configuração define a margem para a conta inteira e não está relacionada com a negociação de futuros em tudo Em outras palavras, você pode negociar ações na margem account. Reverse sinal de entrada força a caixa de seleção de saída para as configurações Backtester Quando ele está na configuração padrão - backtester Funciona como nas versões anteriores e fecha a positon já aberta se o novo sinal de entrada no sentido inverso for encontrado Se este interruptor estiver DESLIGADO - mesmo se o sinal inverso ocorrer o backtester mantém a negociação actualmente aberta e não fecha a posição até que a saída regular ou o sinal de cobertura seja gerado Outras palavras, quando esta opção é OFF backtester ignora sinais curtos durante longos comércios e ignora Comprar sinais durante curtos trades. Allow mesmo bar saída single bar comércio opção para as configurações Quando é ON as configurações padrão - entrada e saída na mesma barra é Permitido como em versões anteriores se estiver OFF - a saída pode acontecer a partir da próxima barra somente isso se aplica a sinais regulares, há uma configuração separada para o ApplyS Top-generated Exits Mudar para OFF permite reproduzir o comportamento do MS backtester que não é capaz de lidar com mesmo dia exits. Activate pára imediatamente. Esta configuração resolve o problema de testar sistemas que entram comércios no mercado aberto Em versões anteriores a 4 09 Backtester assumiu que você estava entrando em comércios no mercado próximo tão built-in paradas foram ativadas a partir do dia seguinte O problema era quando você de fato definido preço aberto como o preço de entrada de comércio - então mesmo dia flutuações de preços não desencadear as paradas Havia alguns Publicado soluções baseadas no código AFL, mas agora você don t necessidade de usá-los Simplesmente se você comércio aberto você deve marcar Ativar pára imediatamente pic 1.Você pode perguntar por que não basta verificar o buyprice ou shortprice matriz se é igual ao preço aberto Desafortunadamente isto ganhou o trabalho de t Porque simplesmente porque há dias doji onde o preço aberto iguala próximo e então o backtester nunca saberá se o comércio foi entrado no mercado aberto ou próximo Assim nós necessitamos realmente um separado s Etting. Use QuickAFL. QuickAFL tm é um recurso que permite um cálculo mais rápido AFL sob certas condições Inicialmente desde 2003 estava disponível apenas para indicadores, a partir da versão 5 14 está disponível na Análise Automática too. Inicialmente a idéia era permitir redesenho mais rápido do gráfico Através do cálculo da fórmula AFL apenas para aquela parte que é visível no gráfico De uma maneira semelhante, janela de análise automática pode usar subconjunto de cotações disponíveis para calcular AFL, se o parâmetro de intervalo selecionado é menor do que Todas as cotações. Explicação detalhada sobre como QuickAFL funciona e como Para controlá-lo, é fornecido neste artigo Knowledge Base. Note que esta opção funciona não só no backtester, mas também em otimizações, explorações e scans. Backtesting um Crossover média móvel em Python com pandas. No artigo anterior sobre Research Backtesting Ambientes Em Python With Pandas criamos um ambiente de backtesting baseado em pesquisa orientado a objetos e testámo-lo em uma estratégia de previsão aleatória. O artigo nós usaremos da maquinaria que nós introduzimos para realizar a pesquisa em uma estratégia real, a saber o Crossover Médio Móvel em AAPL. Moving Crossover Médio Estratégia. A Crossover média móvel é uma estratégia extremamente bem conhecida do momentum É frequentemente Considerado o exemplo de Hello World para negociação quantitativa. A estratégia descrita aqui é longa apenas Dois filtros de média móvel simples separados são criados, com períodos de retrocesso variáveis, de uma série de tempo particular Os sinais para comprar o ativo ocorrem quando a média móvel de retrovindo mais curta excede A média mais longa lookback Se a média mais longa, subsequentemente, excede a média mais curta, o activo é vendido de volta A estratégia funciona bem quando uma série de tempo entra em um período de forte tendência e, em seguida, inverte lentamente a tendência. Para este exemplo, Inc AAPL como a série de tempo, com um lookback curto de 100 dias e um longo lookback de 400 dias Este é o exemplo fornecido pelo zipline Biblioteca de negociação algorítmica Assim, se queremos implementar nosso próprio backtester precisamos garantir que ele corresponde aos resultados em zipline, como um meio básico de validação. Certifique-se de seguir o tutorial anterior aqui que descreve como a hierarquia de objeto inicial para o backtester é Construído, caso contrário, o código abaixo não vai funcionar Para esta implementação em particular, tenho usado as seguintes bibliotecas. A implementação de exige do tutorial anterior A primeira etapa é importar os módulos e objetos necessários. Como no tutorial anterior, vamos subclasse A classe base abstrata Estratégia para produzir MovingAverageCrossStrategy que contém todos os detalhes sobre como gerar os sinais quando as médias móveis de AAPL se cruzam entre si. O objeto requer uma janela curta e uma janela longa sobre a qual operar Os valores foram definidos para padrões De 100 dias e 400 dias respectivamente, que são os mesmos parâmetros usados ​​no exemplo principal de tirolesa. Fechar preço de fechamento do estoque de AAPL Uma vez que as médias móveis individuais foram construídas, o sinal Série é gerado ajustando o colum igual a 1 0 quando a média móvel curta é maior do que o A média móvel longa, ou 0 0 caso contrário, a partir destas ordens de posições podem ser gerados para representar sinais de negociação. O MarketOnClosePortfolio é subclassificado do portfólio que é encontrado em É quase idêntico à implementação descrita no tutorial anterior, com a exceção de que os comércios São agora realizadas em uma base Close-to-Close, em vez de uma base Open-to-Open Para detalhes sobre como o objeto Portfolio é definido, consulte o tutorial anterior eu deixei o código em para completude e para manter este auto tutorial Agora que as classes MovingAverageCrossStrategy e MarketOnClosePortfolio foram definidas, uma função principal será chamada para amarrar toda a funcionalidade em conjunto. O desempenho da estratégia será examinado através de uma trama da curva de equidade. O objeto pandem DataReader downloads OHLCV preços de estoque AAPL para o período de 1 de janeiro de 1990 a 01 de janeiro de 2002, momento em que os sinais DataFrame é criado para gerar a longo prazo, Somente sinais Subseqüentemente a carteira é gerada com uma base de capital inicial de 100.000 USD e os retornos são calculados na curva de equidade. A etapa final é usar matplotlib para plotar um gráfico de dois dígitos de ambos os preços de AAPL, overlaid com as médias móveis e comprar Venda sinais, bem como a curva de equidade com os mesmos sinais de venda de compra O código de plotagem é tomado e modificado a partir do exemplo de implementação de tirolesa. A saída gráfica do código é como segue Eu fiz uso do comando de colar IPython para colocar isso diretamente em O console IPython enquanto no Ubuntu, de modo que a saída gráfica permaneceu à vista Os upticks rosa representam a compra do estoque, enquanto os downticks pretos representam vendê-lo de volta. AAPL Moving Average C Rossover Desempenho de 1990-01-01 a 2002-01-01.Como se pode ver a estratégia perde dinheiro durante o período, com cinco negócios de ida e volta Isso não é surpreendente, dado o comportamento da AAPL durante o período, que estava em um Ligeira tendência descendente, seguida por um aumento significativo início em 1998 O período de retorno dos sinais de média móvel é bastante grande e isso afetou o lucro do comércio final, o que de outra forma pode ter feito a estratégia rentável. Em artigos subseqüentes vamos criar um mais Sofisticados meios de analisar o desempenho, bem como descrevendo como otimizar os períodos de lookback dos sinais individuais de média móvel. Apenas começando com Quantitative Trading.

No comments:

Post a Comment