Erros, bugs, perguntas - página 438

 
joo:
Talvez a simples presença de Sono (em comparação com a sua ausência) no código afecte de alguma forma o tempo total de execução, mas o facto de Sono não contar no testador - isso é certo.
Bem, não sou um perito aqui... Meio minuto de atraso no processamento O sono() funciona com um argumento negativo e perda de 17 dias de teste - estes são os factos.
 

O código pendura o terminal:

   MqlRates s1[];

   int count=TerminalInfoInteger(TERMINAL_MAXBARS);
   int s1_copied=CopyRates(Symbol(),Period(),0,count,s1);
   if(s1_copied<=0)
      Print("Ошибка копирования ценовых данных ",GetLastError());
   else Print("Скопировано ",ArraySize(s1)," баров");

   Comment(ArrayMaximum(s1,0,WHOLE_ARRAY));

   ArrayFree(s1);

Qual é a razão?

 
Graff:

O código pendura o terminal:

Qual é a razão?

Para começar:
 int count=TerminalInfoInteger(TERMINAL_MAXBARS);
 Print("count=",count);

O terminal não está definido para Unlim?

 
uncleVic:
Para começar:

O I Unlim não está nas definições do terminal?


o valor máximo de barras é fixado em 5000. este valor pode ser reduzido?
 
Graff:
as barras máximas são 5000. este valor pode ser reduzido?

Penso que não se pode fazer menos (não tenho a certeza).

O que mostra Print(count)?

 
uncleVic:

Não creio que menos seja possível (não tenho a certeza).

Bem, o que é que o Print(count) devolve?

2011.06.30 21:41:29 MultiInstrumentos3 (EURUSD,M5) 5000 barras copiadas
2011.06.30 21:41:29 MultiInstrumentos3 (EURUSD,M5) count=5000

em comentário -1

Tentei com outro símbolo mas não apareceu no comentário -1

OBSERVAÇÃO: Congelar após alguns segundos. Eu inicio o código a partir de int OnInit()

 
joo:
Sim, e funciona no testador, porque o sono é ignorado no testador.

O sono é total e precisamente emulado no testador do sono.

No exemplo, devido ao excesso de aritmética ao lidar com valores inteiros, houve apenas uma espera de 17,5 dias. O provador esperou exactamente esse tempo.

Portanto, não há erro no testador ou no ambiente de execução do MQL5, mas há um erro óbvio cometido pelo programador.

 

Renat:

Ou seja, não há erro do testador ou do ambiente de execução MQL5, mas há um erro claro do programador.

É bastante claro.

Renat:

O sono é emulado no testador de forma completa e bastante precisa.

Devido ao excesso de aritmética ao trabalhar com valores inteiros, o tempo de espera é de 17,5 dias. Foi exactamente o tempo que o testador esperou.

Hmm, aí está. E eu, erroneamente, pensei que o sono era apenas ignorado.

Então, por exemplo, se eu puser o Sleep (3 meses) em Expert Advisor em modo de teste, o testador simplesmente adiantaria o histórico durante 3 meses? - Isso é óptimo.

 
Sim, vai rebobinar. Apenas o limite da função é de 49 dias, até o contador de milissegundos estar cheio.

Durante o período de espera, o testador continua a imitar totalmente o ambiente de negociação, incluindo todo o processamento de ordens previamente colocadas. O testador em MT5 é muito detalhado.
 
Graff:
2011.06.30 21:41:29 MultiInstrumentos3 (EURUSD,M5) 5000 barras copiadas
2011.06.30 21:41:29 MultiInstrumentos3 (EURUSD,M5) count=5000

em comentário -1

Tentei com outro símbolo mas não apareceu no comentário -1

OBSERVAÇÃO: Congelar após alguns segundos. Executarei o código a partir de int OnInit()

Sim. Nem sequer reparámos no elefante.

Esta linha deixa-me muito desconfiado:

   Comment(ArrayMaximum(s1,0,WHOLE_ARRAY));

ArrayMaximum

procura o item máximo numa matriz numérica unidimensional.

intArrayMaximum(
duploarray[],// array para pesquisar
intstart=0//f a partir de que índice iniciamos a pesquisa
intcount=WHOLE_ARRAY,// número de índices a verificar
);


e no nosso caso:

   MqlRates s1[];

Penso que o compilador não deve saltar isto. O que é que tem? Nem sequer um aviso? Caso contrário, apresentar um pedido ao Service Desk. Está bem?

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
Razão: