Erros, bugs, perguntas - página 432

 
gumgum:

290 no total e... em)

O excesso total de mortes faz 290.

Presumo que não há nenhum passe (corrida real) mas é fixo (se houver fósforos)?

Uma vez que escolheu o algoritmo genético, ele constrói o seu próprio plano de cruzamento e a produção populacional. O algoritmo do optimizador genético é descrito no artigo relevante.

Não é razoável executar a genética com tão poucas (290) passagens. O algoritmo genético deve ser utilizado com uma contagem inicial de pelo menos dezenas de milhares, de preferência milhões/biliões/triliões, de variantes.

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 

Manual de Referência MQL5 - Biblioteca Standard - Classes para organização de dados - CArrayObj (no website e na ajuda):

2. O mecanismo de gestão da memória está desactivado.

Neste caso, o CArrayObj não é responsável pela libertação de memória

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Renat:

Sim, não há necessidade de testar até à data mais recente existente.

Escolher uma data final fixa razoável sob a forma de 00:00 do dia útil anterior, ou mesmo o final da semana de trabalho anterior. Se utilizar o último dia o tempo todo, o fim do horário flutuará periodicamente, especialmente se o processo de teste for longo utilizando agentes remotos ou claudicantes.


Utilizei o domingo como data final. Onde mais é sensato? Não há comércio ao domingo. O que poderia flutuar lá???
 
MoneyJinn:
Utilizei o domingo como data final. Onde mais faria sentido? Não há comércio ao domingo. O que poderia flutuar lá???

Então talvez o problema esteja no outro extremo da história. Qual a duração da história necessária para que os indicadores funcionem? O início do teste é garantido, segundo sei, por uma centena de barras anteriores.

Se precisar de mais, deve saltar uma parte da história após o início do Expert Advisor com um comprimento superior a[número_necessário_de_barras - 100]. Isto resolveu os meus problemas com a correlação dos resultados do testador e optimizador.

 
MetaDriver:

Então talvez o problema esteja no outro extremo da história. Qual a duração da história necessária para que os indicadores funcionem? No início dos testes, é garantido, segundo sei, uma centena de barras anteriores.

Se precisar de mais, salte um pedaço de história após o início do Expert Advisor com um comprimento superior a[necessário_número_de_barras - 100]. Isto resolveu os meus problemas com os resultados do testador e optimizador correspondentes.

Obrigado, mas a partir das capturas de ecrã podemos ver que a história de sexta-feira (24.06.11) se perde ao optimizar através da rede

 

Não é uma questão crucial, mas mesmo assim. Concatenação de cordas. A documentação descreve duas funções StringAdd e StringConcatenate.

A primeira diz:"A função StringAdd() funciona mais rapidamente e mais económica na memória do que a concatenação de cordas por meio de operações de adição.

O segundo diz,"A função StringConcatenate() funcionamais rápida e economicamente do que a encadernação de cordas utilizando operações de adição devido ao facto de não serem utilizadas variáveis temporárias do tipo string.

void OnStart() {
  string string1 = "sdfdsfjssdfads";
  string string2 = "bsadfasdfaaa";
  string string3 = "ssdfsdgasgsaggsda";
  string result;
  uint i, start, stop, length = 10000000;

  start = GetTickCount();
  for(i = 0; i < length; i++)
    result = string1 + string2 + string3;
  stop = GetTickCount();
  Print("№1 ", (stop-start), " milliseconds, i = ", i);
 
  start = GetTickCount();
  for(i = 0; i < length; i++) {
    StringAdd(result, string1);
    StringAdd(result, string2);
    StringAdd(result, string3);
  }
  stop = GetTickCount();
  Print("№2 ", (stop-start), " milliseconds, i = ", i);

  start = GetTickCount();
  for(i = 0; i < length; i++)
    StringConcatenate(result, string1, string2, string3);
  stop = GetTickCount();
  Print("№3 ", (stop-start), " milliseconds, i = ", i);
}

Resultado:

2011.06.26 19:10:55 teste (EURUSD,H1)№1 2012 milissegundos, i = 10000000
2011.06.26 19:11:04 teste (EURUSD,H1)#2 8269 milissegundos, i = 10000000
2011.06.26 19:11:10 teste (EURUSD,H1)#3 6661 milissegundos, i = 10000000

Acontece, no entanto, que a adição habitual é mais rápida.

Документация по MQL5: Строковые функции / StringConcatenate
Документация по MQL5: Строковые функции / StringConcatenate
  • www.mql5.com
Строковые функции / StringConcatenate - Документация по MQL5
 
voix_kas:

Acontece, no entanto, que a adição normal é mais rápida.

A questão já se colocou: https://www.mql5.com/ru/forum/58/page13#comment_59630 Veja a discussão mais tarde no texto. Para os criadores: a conclusão a tirar é que existe uma falta de cobertura desta questão nos materiais de referência.
Изучаем и пишем вместе на MQL5
Изучаем и пишем вместе на MQL5
  • www.mql5.com
2) вывод всей возможной информации по инструментам, ордерам и др.
 
MoneyJinn:
Utilizei o domingo como data limite. Onde mais é sensato? Não há Torg no domingo. O que poderia estar a flutuar por aí?

Como este tipo de questão precisa de detalhes, crie um bilhete no balcão de atendimento com mais detalhes - tentaremos resolvê-lo.

O problema, claro, é a história e a sua sincronicidade.

 
voix_kas:

Não é uma questão crucial, mas mesmo assim. Concatenação de cordas. A documentação descreve duas funções StringAdd e StringConcatenate.

A primeira diz:"A função StringAdd() funciona mais rapidamente e mais económica na memória do que a concatenação de cordas por meio de operações de adição.

O segundo diz,"A função StringConcatenate() funcionamais rapidamente e mais económico na memória do que a encadernação de cordas usando operações de adição devido ao facto de não serem usadas variáveis temporárias do tipo string.

Resultado:

2011.06.26 19:10:55 teste (EURUSD,H1)№1 2012 milissegundos, i = 10000000
2011.06.26 19:11:04 teste (EURUSD,H1)#2 8269 milissegundos, i = 10000000
2011.06.26 19:11:10 teste (EURUSD,H1)#3 6661 milissegundos, i = 10000000

Acontece, no entanto, que a adição normal é mais rápida.

Isto parece ser uma optimização da concatenação de cordas com +.

O compilador está a sofrer algumas modificações sérias relativamente à inclusão dos modos de optimização há muito esperados. Mostraremos os resultados dentro de algum tempo.

 
Renat:

Parece que é a optimização da concatenação de cordas com + que está a funcionar.

Estamos agora a mudar seriamente o compilador em termos de permitir os tão aguardados modos de optimização. Mostramos-lhe os resultados dentro de algum tempo.

Estou a ver. Bem, se for possível, descrevê-lo-á explicitamente no fórum (tento seguir todos os tópicos).

Até agora, no algoritmo deixei o trabalho "+".