Optimização no Testador de Estratégia - página 10

 

Nas últimas construções, livrámo-nos completamente das despesas gerais do sistema em tarefas, reduzindo-as de quase 2000 ms para zero.

Aqui estão os resultados da execução de uma tarefa de cálculo, que foi sugerida pela joo:

input double   x1=0.0;
input double   x2=0.0;
double OnTester()
  {
   return
   (
    pow(cos((double)(2*x1*x1))-0.11 e1,0.2 e1)+
    pow(sin(0.5 e0 *(double) x1)-0.12 e1,0.2 e1) -
    pow(cos((double)(2*x2*x2))-0.11 e1,0.2 e1)+
    pow(sin(0.5 e0 *(double) x2)-0.12 e1,0.2 e1)
    );
  }

Definições (as datas são fixadas de propósito para que o histórico do gráfico não seja utilizado):

Parâmetros a executar:

Agentes utilizados (4 agentes locais):

Resultados da optimização:

A optimização demorou apenas 25 segundos, foram feitos 18.432 passes:



Resultado global: MetaTrader 5 e a sua rede de agentes pode ser utilizada para cálculos matemáticos massivos.

 
Renat:

Nas últimas construções, livrámo-nos completamente das despesas gerais do sistema em tarefas, reduzindo-as de quase 2000 ms para zero.

Aqui estão os resultados da execução de uma tarefa de cálculo, que foi sugerida pela joo:

Definições (as datas são fixadas de propósito para que o histórico do gráfico não seja utilizado):

Parâmetros a executar:

Agentes em uso (4 agentes locais):

Resultados da optimização:

A optimização demorou apenas 25 segundos e foram feitos 18.432 passes:

O resultado global: MetaTrader 5 e a sua rede de agentes pode ser utilizada para cálculos matemáticos massivos.

Este é um resultado muito bom. Agora o optimizador é realmente mais ou menos adequado para tarefas de optimização (tanto relacionadas com o comércio como não relacionadas com o comércio). Os resultados serão ainda melhores se o número de passes for reduzido para 2-3 milhares para esta tarefa específica com configurações de AG por defeito, mas para isso é necessário exibir configurações de AG para acesso do utilizador (será possível reduzir o número de passes para 500-900 se o utilizador quiser).

Continua a existir o problema da limitação do espaço de busca. Uma proposta de optimização correspondente foi feita em servicedesk.

 
joo:

Este é um resultado muito bom. Agora o optimizador é realmente mais ou menos adequado para tarefas de optimização (tanto directamente relacionadas com o comércio como não relacionadas com o comércio). Resultados ainda melhores seriam se o número de passes fosse reduzido para 2-3 mil para esta tarefa específica com configurações padrão de optimizador de AG, mas para isso é necessário disponibilizar as configurações de AG ao utilizador (será possível reduzir o número de passes para 500-900 se o utilizador quiser).

Subsiste um problema relacionado com a limitação do espaço de busca. Uma proposta de optimização correspondente foi feita no balcão de serviço.

E a solução para este problema está principalmente relacionada com este problema:

Se o transbordo da passagem de optimização já acontece em 4 parâmetros, então falar em aumentar o número de parâmetros mais do que o permitido agora (64) ainda não é apropriado.

 
Urain:

E a solução para este problema está principalmente ligada a este problema:

Se o excesso de optimização já acontece em 4 parâmetros, então falar de um número crescente de parâmetros mais do que o permitido agora (64) ainda não é apropriado.

Claro que sim. Grosso modo, o espaço de pesquisa é P=n*step, onde n-número de parâmetros a optimizar e passo-a-passo de parâmetro. Ao mesmo tempo, P deve ser menor que Pmax (máximo espaço de pesquisa possível, limitado por características de codificação binária do cromossoma). Portanto, uma das restrições introduzidas artificialmente (por exemplo, pode fazer um limite de 10000 parâmetros, mas então o passo será mais do que necessário para resolver a maioria dos problemas de optimização), para que P não exceda Pmax, foi introduzida uma restrição sobre n.

Os pensamentos sobre este assunto são expressos em proposta de optimizador em servicedesk.


PS Com o crescimento das redes de agentes remotos, o problema do elevado número de execuções está a chegar a zero. Mas, claro, apenas se as restrições de codificação dos cromossomas binários forem removidas (leia-se: mudar para codificação dos cromossomas com números reais).

 
joo:

Claro que sim. Grosso modo, o espaço de pesquisa é P=n*step, onde n-número de parâmetros a serem optimizados e passo-a-passo de parâmetro. Assim, P deve ser menor que Pmax (máximo espaço de pesquisa possível, limitado por características de codificação binária dos cromossomas). Portanto, uma das restrições, introduzida artificialmente (por exemplo, pode-se fazer um limite de 10000 parâmetros, mas então o passo será mais do que necessário para resolver a maioria dos problemas de optimização), que P não ultrapassaria Pmax, foi introduzido um limite de n.

Os pensamentos sobre isto são dados na proposta do optimizador no Service Desk.


PS À medida que as redes de agentes remotos crescem, o problema dos grandes números de fugas desaparece. Mas claro, apenas se as restrições de codificação dos cromossomas binários forem removidas (leia-se: mudar para a codificação dos cromossomas com números reais).

Ligeiramente errado, o número correcto de variantes é P=step_0*step_1*...*step_n

que, se o tamanho do passo for igual, resulta em P=step^n

 
Urain:

Ligeiramente errado, o número correcto de escolhas é P=step_0*step_1*...*step_n

que, se o tamanho do passo for igual, resulta em P=step^n

Bem, sim, tem razão, só estou a dizer - grosso modo, para ser mais claro e mais evidente, o que depende de quê.
 
Renat:

Nas últimas construções, eliminámos completamente as despesas gerais do sistema no arranque da tarefa, reduzindo-as de quase 2000 ms para zero.

Fantástico! Ah, quanto tempo desperdiçado no Verão em optimização...

Primeiro as primeiras coisas. Fez o teste por joo em construção corrente e em construção 319 (02 Set 2010). resultados:

2010 12/229 15:49:18 O teste passou em 2 minutos 41 segundos
2010.12.29 15:49:18 Optimização do testador concluída no passe 15360 (de 100000020000001)
2010.12.29 15:49:18 A cache de resultados do teste foi utilizada 7265 vezes
2010.12.29 15:49:13 A genética do testador está terminada
2010.12.29 17:10:59 Optimização do teste passado em 1 hora 17 minutos 34 segundos
2010.12.29 17:10:59 Optimização genética do testador terminado no passe 18176 (de 100000020000001)
2010.12.29 17:10:59 A cache de resultados do teste foi utilizada 10582 vezes
2010.12.29 17:10:52 A genética do testador terminou

Nem sequer sei se devo felicitar ou agradecer. Obrigado!

 
Urain:

E a solução para este problema tem a ver, em primeiro lugar, com este problema:

Se o transbordo de passagens de optimização ocorrer já em 4 parâmetros, então falar em aumentar o número de parâmetros mais do que o permitido agora (64) ainda não é apropriado.

Usar uma abordagem razoável para procurar, mas não virar os botões ao máximo no modo "homens russos quebram a motosserra japonesa".

Assim que começar a aplicar a optimização genética no trabalho real, começará imediatamente a escolher limites razoáveis.

 
Yedelkin:

Fantástico! Quanto tempo desperdiçado durante o Verão na optimização...

Em ordem. Testei-o na construção actual e na 319ª construção (02 Set 2010):

2010.12.29 15:49:18 Optimização do testador passado em 2 minutos 41 segundos
2010.12.29 15:49:18 Optimização genética do testador terminado no passe 15360 (de 100000020000001)
2010.12.29 15:49:18 A cache de resultados do testador foi utilizada 7265 vezes
2010.12.29 15:49:13 A genética do testador terminou
2010.12.29 17:10:59 Optimização do testador passou em 1 hora 17 minutos 34 segundos
2010.12.29 17:10:59 A genética do testador terminou no passe 18176 (de 100000020000001)
2010.12.29 17:10:59 A cache de resultados do testador foi utilizada 10582 vezes
2010.12.29 17:10:52 A genética do testador terminou

Não sei se devo felicitar ou agradecer. Obrigado!

Note-se que reduzimos a sobrecarga do sistema nas fases de "sincronização/transmissão de dados iniciais do terminal para o agente e recepção de resultados do agente", o que resultou numa poupança de 1,5-2 segundos por execução. Não houve aceleração dos cálculos na própria língua.

Ou seja, o efeito mais grave que isto tem é nos cálculos de alta velocidade, em que o cálculo leva um tempo próximo de zero. Para cálculos massivos, a poupança não é tão pronunciada. Embora uma economia de 2 segundos por 10.000 corridas dê 20.000 segundos = 333 minutos = 5,5 horas.

 
Renat:
Não o faz.

Tenho notado que tem um efeito. Corri o EA em dias de semana e corri-o agora com spread alargado, o resultado é bastante diferente, o spread é agora de cerca de 4 pips (quatro dígitos) no Eurobuck. Por isso, também no fim-de-semana, há alguma compota espalhada no mt5, por isso não a quero correr no fim-de-semana, porque a optimização não será correcta. Posso até vê-lo visualmente no mt4 onde uma EA tem vindo a optimizar desde segunda-feira e a curva de resultados tem descido desde o fim-de-semana; prova que a propagação afecta os resultados da optimização, eles tornaram-se piores.

Razão: