Erros, bugs, perguntas - página 2570

 
Nikolai Semko:

a corda está vazia, como se não existisse, ou seja, nem sequer a memória está atribuída.

Isto é observado para outros tipos. Se declarar uma variável, isso significa que a memória já está atribuída.
Mas, de facto, uma corda não é um tipo primitivo, mas sim um tipo de referência.

Como poderia não ser? A memória para o objecto string é atribuída na pilha e o endereço de memória onde o texto começa é 0x00
 
Igor Makanu:

não consegue descobrir como verificar oPrintFormat

Nota

PrintFormat() não é executado no modo de optimização do testador de estratégia.

Alguma ideia?

Que talStringFormat e a corda resultante para um ficheiro? (para cada passe criar o seu próprio ficheiro na pasta partilhada - para que o testador não os sobreescreva).

 
Vladimir Simakov:
Como poderia não ser? A memória para o objecto da corda é atribuída na pilha, mas o endereço de memória em que o texto começa é 0x00.

A memória é atribuída apenas para o nome e a referência, mas não para o objecto em si, uma vez que ainda não existe. Este não é o caso dos tipos primitivos, a memória é aí alocada no momento em que a variável é criada, mesmo sem inicialização.
Não quero incomodar-me com a terminologia. Toda a gente se entende de qualquer forma.
Tudo isto é óbvio.

 
Vladimir Karputov:

Que talStringFormat e a corda resultante para um ficheiro? (criar um ficheiro diferente para cada passe na pasta partilhada - para que o testador não os sobreescreva).

boa opção, irá testar

ZS: código novamente reescrito para trabalhar mais rapidamente no optimizador (os resultados foram 5h, agora 1,5h!!!)

agora cruzei a printf() em ajuda, e decidi verificar todas as minhas impressões, onde preciso de substituir.... e a optimização tornou-se 22h .... encontrei onde fiz asneira, mas claro que imediatamente pensei que estava tudo na printf() !!!

)))


Tentei verificar o printf() no optimizador:

int xx=10;
void OnTick()
{  printf("1/x = %f",1/(xx--));
....

até agora consegui logo o que esperava:

2019.09.20 11:29:16.611 Core 1 genetic pass (0, 607) testado com erro "critical runtime error 503 in OnTick function (zero divide, module experts\)" às 0:00:00.048


Estava à espera que se dissesse"PrintFormat() não é executado. "então deve conseguir isso.

 
Estou farto que a optimização do código acelere a execução por um factor de 450 :).
 
Igor Makanu:

boa opção, irá testar

SZY: código novamente reescrito para trabalhar mais rapidamente no optimizador (os resultados foram 5h, agora 1,5 h!!!)

Agora cruzei a printf() em ajuda, e decidi verificar todas as minhas impressões, onde preciso de substituir.... e a optimização tornou-se 22 horas .... Encontrei onde fiz asneira, mas claro, pensei imediatamente que a causa de tudo na printf() !!!

)))


Tentei verificar o printf() no optimizador:

até agora consegui logo o que esperava:

2019.09.20 11:29:16.611 Core 1 genetic pass (0, 607) testado com erro "critical runtime error 503 in OnTick function (zero divide, module experts\)" às 0:00:00.048


Estava à espera que se dissesse"PrintFormat() não é executado. "então deve obtê-lo.

Aha. E obter valores diferentes de variável xx em teste único e em optimização.

Apenas a chamada da função printf não é executada.

 
Slava:

Aha. E obter valores diferentes de variável xx em teste único e em optimização.

Apenas a chamada da função printf não é executada.

Sim, é claro que o utilizador também o pode fazer dessa forma

mas como verificar printf() ?

HH: embora, se o revelador disse que não está impresso, então não temos de o verificar.

 
Igor Makanu:


mas como se verifica printf() ?

Comparar o tempo de uma única passagem da optimização e o tempo de uma única passagem

 
Slava:

Vou duplicá-lo:

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

Alexey Kozitsyn, 2019.09.18 09:34

Algumas perguntas sobre a plataforma:

1. Haverá uma gama de negociação permitida para VP via MOEX (por exemplo, EURRUB_TOM)? Neste momento não é possível saber ao certo se será estabelecido um limite, uma vez que não há acesso à gama (preços máximos e mínimos possíveis). Acrescente, por favor.

2. É possível adicionar ao terminal e meta-editor um estado de auto-salvamento a cada N minutos? Muito ausente, pois com uma súbita desconexão volta-se ao estado no início do programa com perda de todas as mudanças! Muito stressante!

Sobre o primeiro ponto: compreenda que é impossível negociar normalmente se não conhecer as limitações! Porque é possível obter estas limitações para alguns instrumentos e não para outros?

 

a ajuda está novamente incorrecta, li:https://www.mql5.com/ru/docs/math/mathmax

Функция возвращает максимальное из двух числовых значений.

double  MathMax(
   double  value1,     // первое число
   double  value2      // второе число
   );

Vejo que não há opções, função tipo fmax() duplo , procurando onde posso ter perdido um valor fracionário, depois de procurar tudo e mais alguma coisa, faço o teste:

void OnStart()
{
   long slvl = SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL);
   int sl = 300;
   Print(typename(fmax(slvl,sl)));
}

2019.09.20 18:06:34.194 tst (EURUSD,H1) long

ZS: Respondo de imediato, leio a ajuda até ao fim e vejo a frase: "O tipo de valor de retorno corresponde ao tipo sénior". ...imho, não é grave, que em 99% dos casos é suficiente procurar ajuda para a descrição da função, do que procurar um significado oculto entre linhas - é resultado escrito tipo fmin() --> duplo - por isso não há opções
Razão: