Documentação

Aplicações

Última atualização em 1. 3. 2019 por Kornel Mazur

Otimização simples

A idéia por trás de uma otimização é simples. Primeiro você deve ter um sistema comercial, isto pode ser um simples crossover de média móvel, por exemplo.

Em quase todos os sistemas há alguns parâmetros (períodos indicadores, constantes comparativas, etc.) que decidem como determinado sistema se comporta. A otimização significa testar o sistema com diferentes valores de parâmetros

para encontrar os valores ótimos desses parâmetros (dando o maior lucro ou a melhor relação retorno/desempenho).

Exemplo de otimização

Etapa 1: Carregando uma estratégia de otimização

Primeiro, você deve mudar para a janela Optimizer e carregar a estratégia que você deseja otimizar.

Para este exemplo, usaremos a estratégia simples da EMA Cross que vai longo quando a EMA mais rápida atravessa acima da EMA mais lenta, e vai curto quando a EMA mais rápida atravessa abaixo da EMA mais lenta.

Depois de carregar a estratégia, ela é adicionada também como estratégia original ao banco de dados de resultados da Otimização.

Você pode clicar duas vezes na estratégia original e depois ir para Results -> Source code para ver suas regras.

Certifique-se de verificar o Colocar valores em variáveis para que você veja que as variáveis LongEMAPeriod, LongEMAPeriod2, ShortEMAPeriod, ShortEMAPeriod2 são usadas para armazenar parâmetros indicadores.

Em nossa otimização, tentaremos encontrar os valores ótimos desses parâmetros.

Há ainda um pequeno problema. Podemos ver que a estratégia utiliza parâmetros diferentes para uma direção longa e para uma direção curta.

Podemos usá-lo assim se quisermos encontrar valores ótimos independentemente para o lado longo e curto, mas para nosso exemplo gostaríamos de usar o mesmo parâmetro para o lado longo e curto.

Podemos fazer isso usando a outra caixa de seleção Gerar variáveis simétricas

Se você marcar a caixa de seleção, ela usará os mesmos parâmetros para direção longa e curta (desde que as regras sejam as mesmas).

Agora você pode ver que a estratégia contém apenas os parâmetros EMAPeriod, EMAPeriod2 que são usados para ambas as direções.

Etapa 2: Definição de valores de otimização

Para definir valores que serão otimizados, temos que ir para Configurações -> Parâmetros

Parâmetros - automático

Uma vez selecionada esta opção, todos os parâmetros terão o intervalo de valores gerado automaticamente, utilizando um processo de distribuição definido por Distribuição de valores (%). Este valor define o quanto o valor do parâmetro flutuará por incrementos de %. Passos Máximos define quantos incrementos de % para o valor do parâmetro serão gerados.

Parâmetros - manual

Aqui você pode ver a lista de todos os parâmetros estratégicos que estão disponíveis para otimização e modificação manual.
Otimização significa simplesmente tentar diferentes valores de parâmetros de entrada.

Para cada parâmetro que você deseja otimizar, você tem que cheque a linha do parâmetro e escolha Início, Parada e Etapa valores. O otimizador irá iterar o valor de Start to Stop, dando passos.

O valor original também é configurável, será usado para testar novamente a estratégia original. Você pode usar este valor para comparar o desempenho dos novos resultados com as configurações "originais".

O Combinações totais valor nos mostra quantos testes devem ser realizados para testar todas as combinações dos valores. Isto pode ser limitado usando Otimizações máximas.

Nota!

É possível que sua tabela de parâmetros contenha muito mais parâmetros, poderia ser assim:

Esta é outra característica poderosa da StrategyQuant. Ela permite otimizar não apenas os parâmetros da estratégia, mas também outras opções de negociação, tais como quantas negociações devem ser feitas por dia, ou qual deve ser o intervalo de tempo para negociação ou mesmo mudanças de indicador.

Estas configurações normalmente fazem parte das Opções de Estratégia, mas você também pode otimizar seus valores.

A última coisa que temos que configurar são os dados que serão usados para os testes. Podemos escolher o EURUSD no período de H1 para este exemplo no Dados tab.

Etapa 3: Executando a otimização

Antes de iniciarmos o processo de otimização, precisamos decidir como a StrategyQuant irá armazenar os resultados. Há duas opções para isso. StrategyQuant pode Armazenar todas as otimizações em banco de dados ou Armazenar apenas o melhor otimização que mantém apenas a modificação de melhor desempenho da estratégia no banco de dados.

Agora estamos prontos para executar a otimização. Vamos clicar em Início botão.

O motor de otimização testará todas as combinações possíveis de parâmetros de entrada selecionados e armazenará os resultados de cada combinação no banco de dados na parte inferior.

Podemos classificar o banco de dados por Lucro Líquido e podemos ver que os melhores valores de entrada em termos de lucro máximo são EMAPeriod = 9 e EMAPeriod2 = 40.

Nota!

Você pode ver certos resultados tendo um ponto de exclamação mostrado ao lado do título da estratégia. Isto significa que, para determinados parâmetros definidos, o otimizador encontrou um comportamento estranho da estratégia e precisa ser revisto manualmente com mais detalhes.

 

Interpretando os resultados

Agora temos parâmetros de entrada que foram otimizados para nosso símbolo e cronograma.

O que realmente fizemos foi descobrir o que funcionou melhor no passado. Temos que ter muito cuidado porque os parâmetros podem ser ideais para os dados históricos,

mas não há garantia de que o que funcionou melhor nos dados da história funcionará também no futuro.

É chamado de encaixe de curva - geralmente quanto mais parâmetros a estratégia tem, maior é o perigo de encaixe de curva.

Há duas abordagens para o ajuste de curvas:

  • garantir que a estratégia seja robusta e não otimize em nada seus valores
  • garantir que a estratégia se beneficie de uma reoptimização periódica

Então a questão é - a reoptimização periódica melhorará os resultados da minha estratégia?

Se sim, com que freqüência devo fazer isso?

 

StrategyQuant pode lhe dar respostas a estas perguntas usando outra de sua funcionalidade avançada - Otimização do Walk-Forward e a Matriz de Avanço e Caminhada.

Este artigo foi útil? O artigo foi útil O artigo não foi útil

Assine
Notificação de
0 Comentários
Feedbacks em linha
Ver todos os comentários