Erros, bugs, perguntas - página 2996

 
Artyom Trishkin:

Isso já foi há muito tempo. O problema já foi resolvido há muito tempo. É necessário ter acesso a dados não nativos de tempo/símbolo pelo menos uma vez a cada dois minutos. No laço principal, se ainda não houver dados do prazo solicitado, é necessário sair do laço - basta devolver zero para esperar pelo próximo tick, e o indicador sabia que os dados históricos ainda não tinham sido calculados.

Assim são calculados, apenas os valores são enviados de forma incorrecta. Só funciona correctamente em minutos.

 
Francuz:

É assim que são calculados, é apenas que os valores são enviados de volta incorrectamente. Só funciona correctamente em minutos.

As direcções de indexação da matriz são as mesmas?

 
Artyom Trishkin:

As direcções de indexação das matrizes são as mesmas?

Cópia de um valor. Acha que inverter a matriz vai mudar alguma coisa? Mas só por precaução, verifiquei e assegurei-me de que ao inverter a numeração da matriz não se altera o valor único. :)

 
Francuz:

Cópia de um valor. Acha que inverter a matriz vai mudar alguma coisa? Mas só por precaução, verifiquei e assegurei-me de que ao inverter a numeração da matriz não se altera o único valor. :)

Bem, não sei o quê, como e onde se copia.

 
Artyom Trishkin:

Não sei o quê, como ou onde se está a copiar.

0_о

O código indicador dado mostrava tudo:

::CopyBuffer(handle, 0, a, 1, Buffer);
 
Francuz:

Não estás a perceber. O código só deve funcionar uma vez. O seu objectivo é mostrar claramente que o chamado indicador não funciona. O problema é que o indicador chamado não funcionará se ele (e o autor da chamada) tiver um TimeFrame diferente do minuto. Descobri que é um bugdo MetaTrader que só pode ser resolvido com muletas. E este problema é bastante antigo. Pode ler os detalhes em "I can't get indicator data from the higher TF 123".

O que quer dizer com destacado? O período actual é definido no código.

   handle = iCustom(_Symbol, PERIOD_CURRENT, "Examples\\ATR.ex5", 14);

Mostra pelo menos alguma coisa, com que parâmetros correu, o que tem e o que espera obter. E seria bom ver o que esta linha imprime

   ::Print(__FUNCTION__ + "| PERIOD_CURRENT = ", EnumToString(_Period));
 
Alexey Viktorov:

Em destaque, de que se trata? O código especifica o período actual.

Deveria pelo menos mostrar-me algo, com que parâmetros correu, o que conseguiu e o que esperava obter. E seria bom ver o que esta linha imprime

1. Por exemplo, pode executar este código com um TimeFrame diferente de um minuto.

2. Executar ATR com o mesmo Símbolo e o mesmo TimeFrame.

3. Comparar os valoresATR através do código e directamente do indicador.

4. Verificar se os valores não coincidem.

Exemplo

BS é o valor ATR recebido.

 
Francuz:

1. Executar o código acima num TimeFrame diferente de um minuto.

2. Executar ATR com o mesmo Símbolo e o mesmo TimeFrame.

3. Comparar os valoresATR através do código e directamente do indicador.

4. Verificar se os valores não coincidem.

Já tentou colar o código que sublinhei em amarelo e executar o indicador?

 
Francuz:

1. Executar o código acima num TimeFrame diferente de um minuto.

2. Executar ATR com o mesmo Símbolo e o mesmo TimeFrame.

3. Comparar os valoresATR através do código e directamente do indicador.

4. Verificar se os valores não coincidem.

BS é o valor ATR recebido.

Talvez os esquis sejam maus?


e também RTS-6.21


 
Nikolai Semko:
Já tentou colar o código que sublinhei em amarelo e executar o indicador?

Sim, eu fiz. O resultado não se alterou.

Razão: