Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
de modo a não repetir o posto. Por favor, dê uma olhada em https://www.mql5.com/ru/forum/2547/page1#comment_45265
O que estou a fazer de errado? Parece ser o mesmo que no artigo. Quero aprender a trabalhar com aulas normais. Mas parece que o estou a fazer mal (.
de modo a não repetir o posto. Por favor, dê uma olhada em https://www.mql5.com/ru/forum/2547/page1#comment_45265
O que estou a fazer de errado? Parece ser o mesmo que no artigo. Quero aprender a trabalhar com aulas normais. Mas parece que o estou a fazer mal (.
Um erro na função
string DoubleToString(
double value, // число
int digits=8 // кол-во знаков после запятой
);
Se os dígitos >= 12
void testDoubleToString()
{
int i,j,cn=11,digits=DBL_DIG+1;
double dblVal,dblValFromStr,pres=0.1;
string dblStr;
Print("Start testDoubleToString cn=",cn," digits=",digits);
for(i=1; i<=digits; i++)
{
for(j=2; j<cn; j++)
{
dblVal = 1.0/j;
dblStr = DoubleToString(1.0/j, i);
dblValFromStr=StringToDouble(dblStr);
if(MathAbs(dblValFromStr-dblVal)>pres)
{
Print("ERROR from function DoubleToString digits: ",i," value: 1/",j," dblVal: ",
dblVal," strVal: ",dblStr," dblValFromStr: ",dblValFromStr);
}
}
pres*=0.1;
}
}
//---
void OnStart(){testDoubleToString();}
//---
Dá
ERRO da função DoubleToString digitos: 14 valor: 1/10 dblVal: 0.1 strVal: 1.00000000000000 dblValFromStr: 1
ERRO da função DoubleToString digitos: 14 valor: 1/9 dblVal: 0.1111111111111111 strVal: 1.11111111111111 dblValFromStr: 1.11111111111111
ERRO da função DoubleToString dígitos: 14 valor: 1/8 dblVal: 0,125 strVal: 1,25000000000000 dblValFromStr: 1,25
ERRO da função DoubleToString digitos: 14 valor: 1/7 dblVal: 0,1428571428571429 strVal: 1,42857142857143 dblValFromStr: 1,42857142857143
ERRO da função DoubleToString dígitos: 14 valor: 1/6 dblVal: 0,166666666666666667 strVal: 1,666666666666667 dblValFromStr: 1,666666666666667
ERRO da função DoubleToString digitos: 14 valor: 1/5 dblVal: 0.2 strVal: 2.00000000000000 dblValFromStr: 2
ERRO da função DoubleToString dígitos: 14 valor: 1/4 dblVal: 0.25 strVal: 2.50000000000000 dblValFromStr: 2.5
ERRO da função DoubleToString dígitos: 14 valor: 1/3 dblVal: 0,3333333333333333 strVal: 3,33333333333333 dblValFromStr: 3,333333333333 dblValFromStr: 3,3333333333
ERRO da função DoubleToString digitos: 14 valor: 1/2 dblVal: 0.5 strVal: 5.00000000000000 dblValFromStr: 5
ERRO da função DoubleToString digitos: 13 valor: 1/10 dblVal: 0.1 strVal: 1.0000000000000 dblValFromStr: 1
ERRO da função DoubleToString dígitos: 13 valor: 1/9 dblVal: 0.111111111111111111 strVal: 1.1111111111111 dblValFromStr: 1.1111111111111
ERRO da função DoubleToString digitos: 13 valor: 1/8 dblVal: 0,125 strVal: 1,2500000000000 dblValFromStr: 1,25
ERRO da função DoubleToString digitos: 13 valor: 1/7 dblVal: 0,1428571428571429 strVal: 1,4285714285714 dblValFromStr: 1,4285714285714
ERRO da função DoubleToString dígitos: 13 valor: 1/6 dblVal: 0,166666666666666667 strVal: 1,666666666667 dblValFromStr: 1,666666666667
ERRO da função DoubleToString digitos: 13 valor: 1/5 dblVal: 0.2 strVal: 2.0000000000000 dblValFromStr: 2
ERRO da função DoubleToString digitos: 13 valor: 1/4 dblVal: 0.25 strVal: 2.5000000000000 dblValFromStr: 2.5
ERRO da função DoubleToString digitos: 13 valor: 1/3 dblVal: 0,3333333333333333 strVal: 3,3333333333333 dblValFromStr: 3,3333333333333
ERRO da função DoubleToString digitos: 13 valor: 1/2 dblVal: 0.5 strVal: 5.0000000000000 dblValFromStr: 5
ERRO da função DoubleToString digitos: 12 valor: 1/10 dblVal: 0.1 strVal: 1.000000000000 dblValFromStr: 1
ERRO da função DoubleToString digitos: 12 valor: 1/9 dblVal: 0.1111111111111111 strVal: 1.111111111111 dblValFromStr: 1.11111111111111
ERRO da função DoubleToString dígitos: 12 valor: 1/8 dblVal: 0,125 strVal: 1,250000000000 dblValFromStr: 1,25
ERRO da função DoubleToString digitos: 12 valor: 1/7 dblVal: 0,1428571428571429 strVal: 1,428571428571 dblValFromStr: 1,428571428571
ERRO da função DoubleToString dígitos: 12 valor: 1/6 dblVal: 0,1666666666666667 strVal: 1,6666666666667 dblValFromStr: 1,6666666666667
ERRO da função DoubleToString digitos: 12 valor: 1/5 dblVal: 0.2 strVal: 2.000000000000 dblValFromStr: 2
ERRO da função DoubleToString digitos: 12 valor: 1/4 dblVal: 0.25 strVal: 2.500000000000 dblValFromStr: 2.5
ERRO da função DoubleToString digitos: 12 valor: 1/3 dblVal: 0,33333333333333 strVal: 3,333333333333 dblValFromStr: 3,3333333333 dblValFromStr: 3,3333333333
ERRO da função DoubleToString digitos: 12 valor: 1/2 dblVal: 0.5 strVal: 5.000000000000 dblValFromStr: 5
OS: WIN7
Construir: 387
Um erro na função
string DoubleToString(
double value, // число
int digits=8 // кол-во знаков после запятой
);
Quando os dígitos >= 12
Como é que defino a altura da subjanela do gráfico? se uma função? ou apenas através de um modelo?
Como é que defino a altura da subjanela do gráfico? se uma função? ou apenas através de um modelo?
Todas as funções são descritas na ajuda.
Faça-o através do modelo.
В классе CArray #include <Arrays\Array.mqh> забыли прописать виртуальные методы Reserve()и Resize()
Aqui está uma coisa engraçada - quando se executa o TESTEURADOR DE ESTRATÉGIA por defeito
está definido para baixa prioridade, agora tenho de o mudar manualmente para médio sempre.
Talvez seja assim que deve ser?
alexluek:
Talvez seja assim que deve ser?
Sim, está especificamente concebido para executar múltiplos agentes locais em modo de optimização.
A questão é que o testador utiliza o CPU de forma muito intensa e fácil e toma 100% de todos os núcleos do sistema. Se deixar a prioridade "médio", a CPU será carregada a 100% e mesmo o terminal carecerá de recursos. A situação é especialmente má com processadores de um só núcleo.
É por isso que a configuração padrão para agentes em modo de optimização é de baixa prioridade, o que permite que outros programas também funcionem. Se um computador não estiver ocupado com outro trabalho, então mesmo com baixa prioridade, os agentes obterão todos os recursos da CPU (baixar a prioridade da CPU não significa redução directa de recursos).
Muito provavelmente, mudaríamos a prioridade de "baixa" para "abaixo da média" - isto seria suficiente para manter o sistema operacional a responder sob carga total com agentes locais em modo de optimização.
É importante notar que quando se corre com um único agente e se tem mais de 1 núcleo, este agente corre com prioridade "média". Um único agente com núcleos adicionais pode não afectar tanto todo o sistema.
ps: veja a sua captura de ecrã - mesmo com baixa prioridade, a carga da CPU é de 95%.
Sim, isto é feito especificamente para executar múltiplos agentes locais em modo de optimização.
....ps: veja a sua captura de ecrã - mesmo com baixa prioridade, a carga da CPU é de 95%.