Otimização
<< Click to Display Table of Contents >> Otimização |
Você pode ajustar os parâmetros de entrada de uma estratégia por meio da otimização. Otimização é o processo de testar um intervalo de valores por meio de backtests iterativos para determinar os valores de entrada ideais durante o período de teste histórico com base na sua adequação de otimização. Para executar uma otimização, você precisará de:
•Acesso a dados históricos
•Personalizado NinjaScript *estratégia
•Uma compreensão completa dosrecursos de backtesting do Analisador de Estratégia
Sugestão : Existem várias estratégias de amostra pré-definidas que são instaladas com o NinjaTrader que você pode explorar. |
Executando uma OtimizaçãoPara executar umaotimização,selecione otipode " Otimização" do Backtest no painel de configurações doAnalisador de Estratégia.
Definindo o intervalo de testeVocê pode testar os parâmetros da estratégia a serem testados clicando com o botão esquerdo no triângulo para expandir os sub-parâmetros de estratégias.
Nota: Se você não vir o triângulo, certifique-se de que otipo de backtestesteja definido como "Otimização".
Min. - O valor inicial que você deseja testar
Na imagem acima, a entrada "Fast" tem um valor inicial (inicial) de 10 e um valor final de 30 com um incremento de 1. Isso significa que o primeiro valor testado será 10, depois 11, depois 12, até 30. A entrada "Slow" tem um valor inicial de 6, valor final de 16 com um incremento de 1. Com base nessas configurações, um total de 200 (20 valores exclusivos para "Rápido" multiplicado por 10 valores exclusivos para "Lento") iterações de backtest serão processadas para encontrar a combinação ideal de valores de entrada com base na melhor adequação de otimização.
Definindo a Aptidão de OtimizaçãoA otimização é baseada na melhor adequação de otimização selecionada. Se você definir a propriedade "Otimizar em ..." para "Lucro líquido máximo", o otimizador buscará os valores de entrada ideais que retornam o lucro máximo possível. Existem mais de 10 critérios de otimização diferentes que você pode selecionar e podem ser personalizados viaNinjaScript. Por favor, veja a seção "Entendendo as propriedades de Otimização" abaixo para mais informações. |
Entendendo as propriedades de otimização
Propriedades de otimizaçãoAlém das propriedades específicas de otimização descritas abaixo, as propriedades são idênticas às encontradas na janela de propriedades do backtest. Consulte a seção "Noções básicas sobre propriedades de backtest" da páginaTestar uma Estratégiado Guia de Ajuda para obter mais informações.
As seguintes propriedades específicas de otimização estão disponíveis:
|
Entendendo os resultados da otimização
Entendendo os resultados da otimizaçãoQuando o processo de otimização estiver concluído, você verá uma grade de resultados de otimização aparecer na guia Analyzer. Os resultados serão agrupados por instrumento e mostra a combinação de parâmetros que alcançou o melhor desempenho. A coluna "Desempenho" é dinâmica e sempre será o Optimization Fitness selecionado para oparâmetro "Otimizar" ao executar a otimização.
Os principais resultados de otimizaçãoA guia Otimizador exibirá o número mais alto de resultados com base no valor definido para a propriedade "Manter os melhores resultados #" na janela de diálogo do Otimizador. Os parâmetros da coluna exibem os valores de entrada otimizados.
1.O valor ideal para a entrada "Rápida" para a estratégia de demonstração usada para essa otimização 2.O valor ideal para a entrada "Lenta" para a estratégia de demonstração usada para essa otimização |
Teste de cestaExecutar uma otimização em uma lista de instrumentos funciona da mesma maneira que executar um backtest de cesta regular. Para informações gerais, consulte a páginaTeste de múltiplos instrumentos da Basket. No entanto, ao executar uma otimização em vários instrumentos, uma opção opcional "Agregado" estará disponível.
|
Entendendo os fatores que afetam o desempenho da otimização
32 bits contra 64 bitsQuando você executa uma otimização na versão de 32 bits do NinjaTrader para consumir menos memória, não armazenamos dados de negociação para cada backtest executado. Portanto, se você quiser fazer uma análise de negociação em um dos resultados de backtest retornados de uma otimização, o NinjaTrader deve executar novamente o backtest para obter os dados de negociação, isso adiciona um pequeno atraso ao alternar entre os testes. Aversão de64 bits do NinjaTrader aproveitará a RAM extra disponível para o NinjaTrader e manterá os resultados comerciais para cada backtest mantido, permitindo que você mude rapidamente entre os relatórios de resultados do backtest.
Mantenha os melhores # resultados Se você está achando que está com pouca memória do sistema durante os backtests, reduza esse número de resultados para manter uma melhoria significativa na memória usada pelo NinjaTrader.
Executando vários testes de cada vezVocê não fará mais em um período de tempo menor separando vários testes manualmente e executando-os ao mesmo tempo no mesmo PC. NinjaTrader irá usar eficientemente todos os núcleos de CPU para qualquer otimização para testes mais rápidos possíveis.
Recursos da CPUPor favor, assegure-se de que você tenha tantos recursos do sistema disponíveis para a otimização quanto possível, isso geralmente significa garantir que todos os outros aplicativos estejam fechados. Além disso, como o mecanismo de otimização NinjaTrader é otimizado para aproveitar ao máximo os recursos do sistema, é aconselhável não acionar uma otimização durante um período em que você precisaria estar usando o PC. Por exemplo, não é aconselhável iniciar uma otimização enquanto você estiver gerenciando a saída de uma negociação.
Dados Históricos de ComércioApropriedadeIncludeTradeHistoryInBacktest é definida como falsepor padrão quando uma estratégia é aplicada noStrategy Analyzerpara otimização. Isso proporciona um uso mais enxuto da memória, mas às custas de não conseguir acessar objetos Trade para negociações históricas. Assim, campos como SystemPerformance.AllTrades.Count que dependem de referências a objetos Trade não terão essas referências para trabalhar. Se você gostaria de salvar esses objetos para referência em seu código, você pode definir IncludeTradeHistoryInBacktest como true no estado Configure, mas isso pode resultar em maior uso de memória. Para mais informações, consulte a páginaTrabalhando com dados históricos de comércio.
Executando otimizações eficientesEspera-se que as otimizações de estratégia consumam uma boa quantidade de recursos da CPU, simplesmente devido à natureza do processamento de dados iterativo que eles executam. Estratégias com um número relativamente grande de parâmetros para otimização podem multiplicar esse impacto. Ao trabalhar com estratégias com um grande número de parâmetros, evite usar "1" como o valor de incremento para o otimizador, para evitar forçar o algoritmo do otimizador a executar o número máximo de permutações. Alterar o valor do incremento para um valor tão pequeno quanto "2" pode reduzir o número de permutações pela metade e aumentar esse valor pode ter um impacto progressivamente menor.
O Algoritmo Genético pode oferecer uma solução alternativa para aumentar os valores de incremento de parâmetro. Em vez de executar testes de força bruta por meio da iteração de todas as permutações, o Algoritmo Genético ignora intencionalmente as combinações de parâmetros que provavelmente produzirão resultados abaixo do ideal.
Especialmente em conjuntos de parâmetros maiores com valores de incremento mais precisos, os limites superiores de combinações de potenciais permutações / parâmetros podem ser alcançados para ambas as abordagens de otimização - a mensagem de erro "A estratégia precisa de pelo menos um parâmetro para otimizar" seria uma indicação para retrabalhar # de parâmetros ou aumentar os valores de incremento para alcançar uma contagem de permutação mais significativa.
Usando um servidor virtual / em nuvemSe você estiver usando um servidor virtual ou em nuvem como base para sua configuração ao executar testes de otimização no Strategy Analyzer, lembre-se de que esses ambientes geralmente podem alocar recursos disponíveis sob demanda. O NinjaTrader ainda aproveitará todos os threads disponíveis para seu processamento, no entanto, esses recursos disponíveis serão determinados no início da plataforma NinjaTrader. Portanto, se seus recursos virtuais tiverem mudado enquanto você estava em uma sessão de trabalho, reinicie-o para garantir que o desempenho seja ideal. |