Erros, bugs, perguntas - página 348

 
Rosh:

Se houver uma posição, terá um loop infinito porque

é equivalente a

Não há maneira de sair do laço no código porque não há nenhuma ruptura no corpo do operador;
Muito obrigado, não deveria estar lá; corrigi-o, tudo funciona
 

Erros (construir 421, talvez algo fixo em 425, ainda sem actualização para 425 de alpari):

1. Já escrito no tópico sobre visualização 3D: as legendas dos gráficos 3D (nome da escala e valor da escala) não mudam quando se alteram os parâmetros para exibição no gráfico.

2. Durante a optimização rápida, o gráfico é correspondido a cerca de 10600 passagens, ou seja, a optimização continua durante 50,51...60 gerações e o gráfico não muda e novas passagens não são mostradas. Ao mesmo tempo, o separador Definições exibe "Progresso de optimização:" em vez do número de passagens, e sob algumas circunstâncias inexplicáveis ainda muda para, por exemplo, 12420/14400 (os números são aproximados).

3. Os agentes eliminados podem ir para o estado ocupado e permanecer neste estado, tenho de os desligar e ligar, depois disso a optimização continua.

E pergunta: será possível alterar a visualização gráfica (1D/2D/3D) durante a optimização e não após a sua conclusão?

 
PiramidaR:

Erros (construir 421, talvez algo fixo em 425, ainda sem actualização para 425 de alpari):

No mesmo terminal, abra uma conta a partir de MetaQuotes e ela será actualizada. Depois mude novamente para outra conta
 
PiramidaR:

Erros (construir 421, talvez algo fixo em 425, ainda sem actualização para 425 de alpari):

1. Já escrito no tópico sobre visualização 3D: as legendas dos gráficos 3D (nome da escala e valor da escala) não mudam quando se alteram os parâmetros para exibição no gráfico.

2. Durante a optimização rápida, o gráfico é correspondido a cerca de 10600 passagens, ou seja, a optimização continua durante 50,51...60 gerações e o gráfico não muda e novas passagens não são mostradas. Ao mesmo tempo, o separador Definições exibe "Progresso de optimização:" em vez do número de passagens, e sob algumas circunstâncias inexplicáveis ainda muda para, por exemplo, 12420/14400 (os números são aproximados).

3. Os agentes eliminados podem ir para o estado ocupado e permanecer neste estado, tenho de os desligar e ligar, depois disso a optimização continua.

E uma pergunta: será possível alterar a visualização gráfica (1D/2D/3D) durante a optimização e não após a sua conclusão?

1,2 Fixo, mas não incluído na última construção

3 Estamos a trabalhar nesse sentido.

Tal característica não existirá

 
Gostaria de ter a possibilidade não só de especificar o valor que não será sacado
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);

mas também ser capaz de auto-inicializara matriz com este valor. Se nada tiver sido atribuído pelo indicador à última barra, então, por defeito, atribui o que foi especificado no

PLOT_EMPTY_VALUE

ou melhor, primeiro inicializa-se com um valor vazio e depois deixa-se o indicador escrever o que quiser.

Porque agora o valor por defeito será zero, mas zero em muitos indicadores é um número significativo que deve ser extraído.

HZ escreveu neste fio pois não tenho a certeza de que isto não tenha sido resolvido, pelo que o desejo pode ser considerado como uma questão. Se assim for, por favor digam-me como é resolvido.

 

Urain:

Porque neste momento o número por defeito será zero, mas zero em muitos indicadores é um número significativo a ser desenhado.

De facto, tudo pode estar lá, só que normalmente é uma sorte que seja zero. O artigoindicador do indicador na MQL5 diz directamente:

É necessário inicializar os amortecedores indicadores?

As matrizes em MQL5 não são inicializadas por defeito com qualquer valor, e isto aplica-se certamente às matrizes que são atribuídas a buffers indicadores usando SetIndexBuffer(). Se um array for um tampão indicador, o seu tamanho dependerá do parâmetro rate_total no manipulador OnCalculate().

Pode haver uma tentação de inicializar todos os amortecedores indicadores com um valor vazio de VAZIO_VALOR utilizando a função ArrayInitialize(), por exemplo, uma vez no início de OnCalculate()
//--- если это первый вызов OnCalculate() 
   if(prev_calculated==0)
     {
      ArrayInitialize(TSIBuffer,EMPTY_VALUE);
     }

Mas não é recomendado fazê-lo pela seguinte razão: durante o funcionamento do terminal, são recebidas as citações do símbolo, em cujos dados o indicador é calculado. Assim, o número de barras irá aumentar ao longo do tempo, e o terminal irá atribuir memória adicional para os amortecedores indicadores.

Mas os valores nos elementos da matriz recentemente anexados terão qualquer valor, porque quando a memória é realocada para qualquer matriz, não há inicialização. E a inicialização inicial pode dar uma confiança enganadora de que todos os elementos da matriz, aos quais não atribuímos explicitamente qualquer valor, serão preenchidos com o mesmo valor com que inicializámos a matriz pela primeira vez. Isto não é certamente verdade, e nunca devemos confiar que o valor de alguma variável ou elemento de matriz seja rubricado com o valor que queremos.

É necessário definir um valor para cada elemento do buffer do indicador, e se o valor do indicador para esta barra não for definido (não calculado, de acordo com o algoritmo implementado no indicador), então para tais casos deve ser explicitamente definido um valor vazio. Por exemplo, o valor do buffer do indicador é calculado utilizando a operação de divisão, e em algum momento pode acontecer que o divisor seja igual a zero.
 
Rosh:

Na verdade, qualquer coisa pode lá estar, só que normalmente é uma sorte que não haja zero. O artigoIndicador do Indicador na MQL5 afirma-o explicitamente:


Este é exactamente o problema que gostaria de resolver a nível linguístico, porque a inicialização do último valor exigirá linhas de código adicionais onde pode haver erros.

Desta forma, pode ter a certeza de que existe o valor exacto e com base nisso pode construir mais algoritmos.

 
Urain:

Este é exactamente o problema que gostaria de resolver a nível linguístico, porque a inicialização do último valor exigirá linhas de código adicionais que podem conter erros.

Desta forma, pode ter a certeza de que existe um valor exacto e com base nisso pode construir mais algoritmos.

Eu também enfrentei este problema. Eu apoio: fazer uma solução a nível linguístico.
 
Lizar:
Também já encontrei isto. Eu apoio: fazer a solução ao nível da língua.
+1
 

Construir 425

Esta situação confunde-me com o testador: a EA é executada várias vezes sob as mesmas condições, mas os resultados das execuções são diferentes. A diferença é pequena, mas...

Verificado em duas máquinas, obtenho 2 resultados diferentes, com probabilidade aproximadamente igual. O que é que isso significaria?