Erros, bugs, perguntas - página 2621

 

Tropeçou numa confusão num local aparentemente óbvio. Aqui está o guião:

double Sigma = 1.0;
double Smax = 5.0;
double Step = 2;


void OnStart()
{
  int scount = 1;

  double s = Sigma;

  for( ; s < Smax; scount++)
  {
    s *= Step;
    Print(scount, " ", s);
  }
  
  Print(scount);
}

por alguma razão acaba com uma contagem igual a 4, embora seja suposto ser 3. O laço de incremento após verificação bem sucedida só deve ser executado quando s for igual a 1,0, 2,0, 4,0. Depois há 8 em s, o que é mais de 5.

 
Stanislav Korotky:

Tropeçou numa confusão num local aparentemente óbvio. Aqui está o guião:

por alguma razão acaba com uma contagem igual a 4, embora seja suposto ser 3. O laço de incremento após verificação bem sucedida só deve ser executado quando s é 1.0, 2.0, 4.0. Depois s contém 8, que é superior a 5.

no for incremento de declaração é realizado após o fim do corpo do laçohttps://www.mql5.com/ru/docs/basis/operators/for

para(expressão1; expressão2; expressão3)operador;

выражение1;
while(выражение2)
  {
   оператор;
   выражение3;
  };

pesquisei no Google o primeiro artigo, no caso de não me lembrar - funciona da mesma forma em C++ https://en.cppreference.com/w/cpp/language/for

init_statement
while ( condition ) {
statement
iteration_expression ;
}
 
Igor Makanu:

No for statement, o incremento é feito após o fim do corpo do laçohttps://www.mql5.com/ru/docs/basis/operators/for

para(expressão1; expressão2; expressão3)

Exactamente. A variável de laço deve passar os valores 1, 2, 3. Porque após a terceira multiplicação, a condição não é preenchida: 8 > 5 - isto pode ser visto a partir da última impressão do laço.

 
Stanislav Korotky:

Exactamente. A variável de laço deve passar os valores 1, 2, 3. Porque após a terceira multiplicação, a condição não é satisfeita: 8 > 5 - isto pode ser visto a partir da última impressão do laço.

sim, mas o corpo do laço é executado, certo? por isso há um incremento após o fim do corpo "expressão3", depois há uma verificação - "expressão2".

 
Igor Makanu:

sim, mas o corpo do laço está feito, certo? por isso há um incremento após o fim do corpo "expressão3", depois há uma verificação - "expressão2".

Sexta-feira é a última sexta-feira do ano :-/

 

1- Os resultados dos testes pararam de funcionar. Há espaço na unidade. Tudo está lá. O que estava a correr alguns minutos antes parou subitamente.

Carrego no botão start, ou clico no resultado da optimização e nada acontece. Este tipo de mensagem apenas aparece:

2019.12.29 11:44:51.402 Testador único passe iniciado

E uma vez, esta mensagem aparece:

2019.12.29 11:41:56.053 Testador versão debug de "Name.ex5" detectada

Embora nenhum debug esteja habilitado e esta EA não esteja aberta no editor e o editor esteja desactivado, nada foi compilado ou alterado.

Parâmetros desde a optimização até às definições, transfere-se com sucesso e é aí que pára visualmente.


2- E o botão "stop" no forwarder falha. Em alternativa, não muda a sua cor de rosa para verde, ou o terminal apenas chega ao estado intermédio, quando nada faz, mas não posso seleccionar nada no separador "definições", porque tudo é desactivado ali.

Ao premir novamente o botão stop, inicia-se a corrida. E pode pará-lo antes de avançar e depois está bem.


3- E outro "truque" é que a optimização começa a correr algumas vezes mais lentamente. Pouco a pouco tempo. Cura através do reinício do terminal.... Algo está a acumular-se algures... A limpeza do registo e da cache não parece afectar esta desaceleração. Mas o reinício tem um grande efeito!
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Михаил:

Os resultados dos testes pararam de funcionar. O espaço em disco está lá. Tudo está lá. O que estava a correr alguns minutos antes parou subitamente.

Carrego no botão start, ou clico no resultado da optimização e nada acontece. Este tipo de mensagem apenas aparece:

2019.12.29 11:44:51.402 Testador único passe iniciado

E uma vez, esta mensagem aparece:

2019.12.29 11:41:56.053 Versão de depuração do testador "Nome.ex5" detectado

Embora nenhum debug esteja habilitado e esta EA não esteja aberta no editor e o editor esteja desactivado, nada foi compilado ou alterado.

Salva com êxito parâmetros desde a optimização até às definições e pára visualmente nesse ponto.


E o botão "stop" no forwarder não funciona correctamente. Por vezes não muda a sua cor de rosa para verde, ou o terminal apenas chega ao estado intermédio quando não faz nada mas não pode seleccionar nada no separador de definições porque tudo está desactivado ali.

Ao premir novamente o botão stop, inicia-se a corrida. E pode pará-lo antes de avançar e depois está bem.


E outro 'truque' é que a optimização começa a correr várias vezes mais devagar. Pouco a pouco tempo. Remédios através do reinício do terminal.... Algo está a acumular-se algures... A limpeza do registo e da cache não parece afectar esta desaceleração. Mas o reinício tem um grande efeito!

É necessário compilar a versão de lançamento por F7. Pressionou F5 e compilou a versão de depuração

 
Artyom Trishkin:

É necessário compilar a versão de lançamento por F7. Pressionou F5 e compilou a versão de depuração

Não, compenso com o rato e botão "Compile". Mas não se aplica ao caso descrito, porque esta EA foi compilada anteontem. Depois foi optimizado com sucesso e funcionou várias vezes. E depois caiu. Reiniciar o terminal ajudou...

Por isso, parece que há insectos a acumular-se algures. O que leva a mau funcionamento e travões. Repor (reiniciar) as curas...
 
E outra coisa - quanto mais longe (por data) a corrida para a frente é, a partir da data de início da corrida para a frente, mais lenta ela vai. No início é rápido, e depois cada vez mais lento. E depois catastroficamente mais lento. É uma boa ideia consertar isso)
 
Михаил:
E outra coisa - quanto mais longe (por data) a corrida para a frente é, a partir da data de início da corrida para a frente, mais lenta ela vai. No início é rápido, e depois cada vez mais lento. E depois catastroficamente mais lento. Seria bom consertá-lo)

Sem código para jogar - sem resposta