среда, 27 июня 2018 г.

Backtester amibroker forex


Plataformas Backtesting de estratégia Até o momento, atualmente estou testando vários pacotes de software para estratégias de backtesting para escolher o melhor para usar para um grande projeto. Eu tenho que dizer que eu estive longe de tais detalhes nos últimos 2-3 anos e estou certo de que minha informação está desatualizada e preciso de uma atualização dos especialistas aqui que estão usando os pacotes de software atuais e suas experiências. Eu estou testando o envio dos seguintes pacotes agora (então, por favor, se você tiver algum comentário sobre qualquer um deles, seria muito apreciado para postar uma resposta detalhada): 1- Matlab 2- Trading Blox 3- MultiCharts 4- Trade Station 5- AmiBroker 6- NinjaTrader Agora, eu sei que a maioria dos pacotes e plataformas mencionados são principalmente varejistas e eles serão tão bons quanto o uso de varejo para todas as camadas, no entanto, também estou aberto a pacotes institucionais, se algum membro aqui tiver Uma experiência anterior com um (apenas para esclarecer, pacotes institucionais significa plataformas usadas por hedge funds ou desktops em grandes bancos). Não fale sobre MT (Metatrader) ou Metastock, pois não vou usar nenhum deles. MT usa alguma variação de C e não estou disposto a aprender C, pois não tenho tempo. Metastock, eu já tentei e devo dizer que é um lixo, muito básico, limitado e um monte de constrangimentos, então não se encaixa mesmo nas necessidades de varejo de nível médio. Eu usei o Matlab em meus antigos dias de engenharia e devo dizer que é uma ferramenta muito útil, mas novamente exigirá muito gerenciamento de código e estou tentando minimizar a codificação o máximo possível. Aqui está o que eu procuro na plataforma backtesting, então, se você já experimentou isso em um dos mencionados acima ou em outra plataforma não mencionada, seus comentários são muito apreciados: 1- A plataforma deve ser precisa, precisa e realista Possível no backtesting, ou seja, estratégias de backtesting o mais próximo possível da realidade 2- O design e a construção do sistema devem ser o mais flexíveis possível, permitindo que todos os componentes e condições sejam criados e com a possibilidade de vincular esses componentes, ou seja, o pacote deve Oferecer a possibilidade de dependência de componentes Por exemplo, ao simular entradas, é necessário ter a capacidade de construir as regras das entradas com base em qualquer condição ou conjunto de condições, dependentes ou independentes, sem remover a possibilidade de integrar o componente de entrada de Outros componentes do sistema. Para esclarecer isso, digamos que uma estratégia tem uma regra de entrada simples, que está indo por muito tempo quando o preço cruza acima de sua 20-EMA por 1 em uma base intradiária, no entanto, se as últimas 3 negociações consecutivas perderam dinheiro, a regra de entrada deveria Passando acima do 20-EMA em 1.35 em vez disso e se os últimos 2 negócios consecutivos fossem vencedores com uma média de 15 lucros ou mais, a regra de entrada deveria estar passando acima da 20-EMA por apenas 0,5. Espero que você tenha entendido. O mesmo aplica-se não apenas às regras de entrada, mas também para parar as saídas de perda e as saídas de lucro. 3- As condições do componente de dimensionamento da posição podem ser construídas por qualquer conjunto de condições ou regras. Por exemplo, se eu precisar que o dimensionamento da posição seja dinâmico com base na diferença percentual entre o preço e um 250-EMA, devo ser capaz de fazer isso, onde 100 da posição a ser tomada quando o preço estiver acima do valor de 250 - EMA por 1 e o tamanho da posição diminui gradualmente em 10 por cada 1 passo de distância do 250-EMA em qualquer direção. Needles para dizer que o cálculo da classificação da posição do cálculo da fórmula deve ser suportado e devo ter a capacidade de usar dados da curva de equidade em série para alterar dinamicamente o tamanho da posição das próximas negociações. Outra coisa muito importante no suporte aos cálculos do dimensionamento da posição é ter a capacidade de usar as probabilidades calculadas dos resultados em um determinado ponto para ajustar o dimensionamento da posição de acordo com uma fórmula. Como exemplo, digamos que estarei usando uma determinada fórmula de dimensionamento de posição para as primeiras 100 negociações e, em seguida, com base no valor da conta após esses 100 negócios e a distribuição desses 100 negócios, em seguida, utilizarei diferentes fórmulas de dimensionamento de posição. Para elaborar: se, após as primeiras 100 negociações, o valor da conta cresceu 30 ou mais e as primeiras 100 negociações foram 60 vencedoras e 40 perdedores, índice winloss de 2.51, eu preciso ter a capacidade de usar outra fórmula de dimensionamento de posição neste caso Para os próximos 100 negócios e assim por diante. A principal idéia por trás disso, é a medida que você vai, a expectativa do sistema muda ao longo do tempo à medida que você assume cada vez mais negócios e o conceito básico é que, se sua expectativa de sistema está melhorando, você deseja aumentar o tamanho da sua posição e fazer O melhor proveito da expectativa melhorada e se a expectativa de seu sistema está piorando, você precisa diminuir o tamanho da sua posição e negociar menores desde que a expectativa do sistema fica melhor, você está obtendo cada vez mais recompensas por cada dólar que você arrisca e vice-versa . 4- As condições de execução devem ser tão flexíveis quanto possível e muito próximas das situações da vida real, permitindo uma derrapagem variável ou baseada em fórmulas. A execução também deve suportar fórmulas para determinar com precisão onde e como inserir levando em consideração o volume e a liquidez (Para ser definido por fórmulas e filtros) 5- Os testes múltiplos do sistema ao mesmo tempo em vários instrumentos devem ser suportados, ou seja, se eu tiver 3 Diferentes sistemas de negociação e 100 instrumentos para negociar com base nas condições dos sistemas, o pacote deve permitir testar os 3 sistemas de negociação entre os 100 instrumentos ao mesmo tempo, levando negócios na ordem em que eles se baseiam nas regras dos 3 sistemas e Em seguida, combine os resultados em um único portfólio, como se o pacote simulasse uma varredura diariamente para os 100 instrumentos para ver quais sistemas geravam sinais e executavam os sinais com base nas condições programadas do sistema e, assim, gerenciando várias posições no mesmo Tempo 6- Os resultados de relatórios e testes devem ser abrangentes e exportáveis ​​para se destacar. As métricas estatísticas básicas devem ser incluídas além da rentabilidade do sistema ou da combinação de sistemas que estão sendo testados. Os dados da curva de capital também devem ser exportáveis ​​para excel. A curva de equidade básica mede como max. Redução e redução mensal média, variabilidade de retorno e desvio padrão dos dados da curva de equidade, etc. são preferidos para estar presente no pacote 7- Otimização para 1 ou mais variáveis ​​deve fazer parte da embalagem e a embalagem deve ser capaz de Otimize para variáveis ​​não-padrão, como otimizar para alcançar o mínimo. Drawdown, etc. 8- O pacote deve ter a capacidade de obter dados de uma fonte em tempo real ou automática, ou manualmente através de arquivos csv ou excel. Ele tem que suportar os dados contínuos dos contratos de futuros, bem como os dados de opções 9 - Instrumentos Financeiros a serem suportados são ações, opções, futuros e dados OTC FX e os campos a serem suportados na base de dados do pacote são Timestamp, open, high, low, close, Volume, lance, volume de lances, pergunte, solicite o volume, o preço de liquidação e o interesse aberto Finalmente, desculpe a longa publicação e desculpe por ter mantido você lendo tudo isso. Os seus comentários são realmente muito apreciados. Junte-se a janeiro de 2005 Status: Membro Feliz do Fórum 1.152 Posts Agradeço muito a Sti pela sua resposta e pela sua oferta também, muito generosa de você. O tempo é um pouco limitado aqui, por isso estou deixando a opção de programação como a última, se eu não encontrou um pacote pronto, o que é bom para o que estou procurando. Até agora, de todos os pacotes que mencionei, o Trading Blox parece ser bom para o que estou procurando, e não a correspondência exata, mas parece bom, mas não vou comprometer a qualidade e os recursos de qualquer maneira, então ainda preciso de mais em profundidade Teste. Obrigado novamente e manter-se-ão em contato. Compreendo perfeitamente de onde você vem com sua primeira postagem. Mas, eu realmente acredito que, para os requisitos que você afirma, você terá que seguir uma rota diferente. Eu não acho que haverá nenhum pacote fora da caixa (diferente dos que você mencionou) que poderá atender a esses requisitos. Eu me testei demais e tive a necessidade de testar muitas coisas. No final, eu escrevi meu próprio software de backtesting em c. Eu entendo que você afirmou que não está interessado em seguir esta estrada, mas. Eu realmente affraid. ami broker 5 de fevereiro de 2015 Às vezes, quando otimizamos nosso sistema, podemos querer usar apenas um subconjunto de todas as permutações de parâmetros para nossa análise e ignorar os outros que não atendem aos nossos requisitos. Por exemplo, 8211 se testarmos uma estratégia simples de tendência seguinte, onde inserimos uma posição longa quando o MA curto cruza acima da MA longa usando o código, como: então, o valor do parâmetro ShortPeriods deve permanecer menor do que o LongPeriods, caso contrário as regras de negociação funcionariam contra o principal Princípio da estratégia testada. Existe uma maneira fácil de ignorar os conjuntos de parâmetros indesejados usando a declaração Excluir em nosso código. Se a variável for verdadeira 8211, o backtester não calculará nenhuma estatística para essa execução específica: A guia Informações da informação da Análise mostra a diferença entre a primeira execução (todas as 10000 execuções de backtest) e a segunda usando a declaração Excluir. Observe o número reduzido de etapas e o tempo de otimização reduzido. Artigos relacionados: 4 de fevereiro de 2015 Se quisermos identificar datas, quando os níveis de MAE e MFE foram atingidos durante a vida comercial 8211, podemos usar o exemplo de código apresentado abaixo. A fórmula irá processar os negócios um por um, ler a propriedade BarsInTrade para saber quantos bares ele demorou desde a entrada comercial até a saída e, em seguida, use as funções do HHVBars LLVBars para identificar quantas barras passaram desde a menor baixa ou alta alta dentro do comprimento comercial. Com a informação, o valor mais alto ou mais baixo foi observado N-bars atrás 8211 ele mudará a tabela DateTime de acordo com 8211, então, com o uso da função Lookup () apontando para a barra de saída 8211, podemos ler a data em que o HHVLLV foi observado dentro da vida comercial (BarsInTrade) . Artigos relacionados: 30 de janeiro de 2015 Em testes de Otimização e Avançar Avançado AmiBroker nos permite escolher o objetivo de otimização que determina os melhores valores de parâmetros otimizados. Isso pode ser feito na guia Análise-Configurações-Avançar para a frente e a lista suspensa contém uma lista de estatísticas internas para escolher: No entanto, não estamos limitados somente a métricas integradas. A Interface Backtester personalizada nos permite adicionar quaisquer estatísticas personalizadas aos relatórios backtestoptimization e também podemos usar essas métricas para otimização. Para fazer isso, primeiro precisamos adicionar uma métrica personalizada (este artigo explica como fazê-lo: amibrokerguideacustommetrics. html). Em seguida, 8211 precisamos digitar nosso nome de métrica na caixa Destino de otimização: o nome que inserimos deve ser uma correspondência exata do nome da métrica que definimos no método AddCustomMetric (). Se o nome introduzido não puder ser encontrado na tabela de resultados da Otimização, então o lucro líquido será usado. Artigos relacionados: 6 de janeiro de 2015 O relatório de backtest padrão mostra o valor total do Lucro Líquido, que inclui lucros comerciais e ganhos de juros. Com o procedimento Custom Backtest, podemos facilmente isolar esses componentes ao resumir lucros e perdas de negócios individuais, subtraindo os ganhos de negociação do Lucro Líquido e informando-os como métricas separadas. Depois que o backtest é executado, podemos ver nossas métricas personalizadas no relatório do backtest. Mais informações sobre a criação de métricas personalizadas podem ser encontradas no manual: amibrokerguideacustommetrics. html Artigos relacionados: 2 de janeiro de 2015 Após o processo de otimização ter encontrado valores ótimos para os parâmetros do nosso sistema comercial, normalmente queremos usar valores ótimos em backtesting ou explorações subsequentes. Para conseguir isso, precisamos atualizar manualmente o argumento padrão padrão (segundo) da função Otimizar com os valores obtidos no relatório de otimização. Os argumentos da função Otimizar são mostrados abaixo (nota segundo parâmetro marcado em cor vermelha escura 8211 este é o parâmetro de valor padrão que iremos mudando após a otimização executada): somevar Otimizar (descrição, defaultval. Minval. Maxval, etapa) Consideremos a Seguinte fórmula de exemplo utilizada para o processo de otimização: se realizarmos o processo de otimização e verificar os resultados (para este exemplo, usamos o Lucro Líquido como o objetivo de otimização), podemos ver que os melhores resultados usam os Períodos 6 e o ​​Nível 126. Agora, para executar backtest e obter exatamente os mesmos resultados que na linha respectiva dos resultados de otimização acima, precisamos inserir os valores em argumento padrão, então o código modificado ficará assim: agora podemos usar o código com os modos Diferente da Otimização e a fórmula usará valores otimizados que recuperamos dos resultados. Artigos relacionados: 10 de dezembro de 2014 Existem várias maneiras de transferir os resultados do backtest para uma planilha. Imediatamente após o teste, podemos clicar apenas na lista de resultados com o botão direito do mouse e escolher Copiar no menu. Também é possível clicar nos resultados e usar o atalho da tecla CtrlC. A operação copiará toda a lista, portanto, não há necessidade de selecionar todas as linhas manualmente. Após o teste, também podemos usar a opção File-Export no menu principal do programa para exportar a lista de resultados para um arquivo CSV ou HTML, que pode ser aberto no Excel mais tarde. Os resultados do Backtest também são acessíveis através do Report Explorer: Para abrir o relatório detalhado para o teste específico, basta clicar duas vezes na linha selecionada. Então, depois de navegar para a página de Lista de Comércio, para copiar os resultados, a melhor opção para usar é Editar-Copiar a Tabela. Ao contrário da opção Copiar regular, Copiar Tabela transforma tabelas HTML em formato CSV e as copia na área de transferência para que as tabelas possam ser facilmente coladas para se destacar. Também divide as colunas EntryExit em colunas de preço de entrada Entryexit separadas. Artigos relacionados: 5 de dezembro de 2014 Por padrão, quando executamos backtest em um grupo ou lista de símbolos de substituição, a AmiBroker realizará um teste de portfólio. No entanto, há também um modo individual do backtest disponível, onde cada símbolo é testado individualmente e de forma independente. Uma vez que enviamos a fórmula para a janela de Análise e defina o grupo de símbolos para executar o código em (Aplicar Para), para executar um back-back individual, é necessário desdobrar o menu ao lado do botão Backtest e selecionar Individual Backtest no menu. Para obter o relatório completo gerado para cada um dos testes, é necessário primeiro acessar a guia AnalysisSettings-Report e marcar Gerar relatórios detalhados para cada símbolo na opção backtests individual. Em seguida, os relatórios completos podem ser acessados ​​através do Report Explorer. A letra I indica que o relatório contém os resultados de um teste individual. Clicando duas vezes na linha de resultados particular mostrará o conteúdo completo do relatório do backtest. Artigos relacionados: 26 de novembro de 2014 Para simular ordens de limite no backtesting, é necessário verificar o código se o preço baixo da barra de entrada estiver abaixo do preço limite que queremos usar. O exemplo a seguir mostra um sinal de entrada com base no cruzamento de preços fechados em uma média móvel simples de 100 períodos. A posição é aberta na próxima barra se o preço cair 1 abaixo da barra de fechamento do sinal. Se quisermos que a ordem seja válida para mais de uma barra, então podemos usar a função Hold para este fim: Em um backtest de nível de portfólio, geralmente defendemos contra o uso de ordens limitadas. Por que simplesmente porque não podemos ter dinheiro suficiente na sua conta para colocar ordens limitadas para todos os possíveis candidatos de entrada. Se o seu sistema comercial gerar 100 entradas possíveis, você precisaria colocar 100 ordens limite apenas para descobrir que, eventualmente, apenas alguns deles dispararam. Com o poder de compra limitado, talvez possamos colocar pedidos limitados apenas para os principais tickers N-rated que geraram o BuySignal e ignorar os outros. Para simular a situação quando colocamos um pequeno conjunto de pedidos de limite para estoques de topo, podemos usar novas funcionalidades de classificação apresentadas no AmiBroker 5.70. Conhecer o ranking nessa etapa é necessário se quisermos apenas autorizar pedidos de tickers de pontuação superior. Digamos que preferimos símbolos com menores valores RSI. O código seria o seguinte: a Fórmula primeiro gera uma classificação para todos os tickers incluídos no teste (abaixo o exemplo usa a Watchlist 0), então, ao testar os símbolos individuais 8211, verifica a classificação pré-calculada e gera sinal de Compra com base nessa leitura. A descrição detalhada da funcionalidade de classificação usada acima está disponível no manual em: amibrokerguidehranking. html Artigos relacionados:

Комментариев нет:

Отправить комментарий