Indicador que está se corrompendo - página 2

 
jjc:

Por exemplo, se atualmente são 8 da manhã, qualquer coisa no código que pressupõe que (a) a barra para 7 da manhã é 60 barras atrás, ou mesmo (b) que uma barra para 7 da manhã existe de todo.

Bem visto, eu não tinha percebido que os gráficos eram M1 quando os olhei pela primeira vez ... é bastante comum que as barras M1 estejam ausentes em momentos de silêncio, durante a noite, por exemplo.
 
RaptorUK:
Bem visto, eu não tinha percebido que os gráficos eram M1 quando os olhei pela primeira vez ... é bastante comum que as barras M1 estejam ausentes em momentos de silêncio, durante a noite, por exemplo.
Neste caso, acho mais provável que seja uma perda temporária da conexão com o corretor, mas o princípio e as implicações são os mesmos.
 
jjc:
Neste caso, acho mais provável que seja uma perda temporária da conexão com o corretor, mas o princípio e as implicações são os mesmos.
...Também é notável na captura de tela "Move Error" que as linhas roxas deixam de ser desenhadas no ponto em que parece que falta uma barra M1.
 
AnkaSoftware:

Hmm, "novos dados históricos são adicionados ao gráfico", como? O indicador é iniciado e não é perturbado. Temos um lookback fixo de 1000 barras. O indicador não está carregando nenhum dado histórico.

Alguém da equipe de desenvolvimento pode dar uma olhada nisso?

Você disse... "Eu desenvolvi um indicador que funciona bem durante as primeiras 16 hrs ou mais"... 16 hrs x 60 mins = 960 barras . . o que acontece se você reduzir seu lookback para 500 barras, você terá problemas após 8 hrs ?
 

Jic, obrigado pelas observações.

Os testes estão sendo feitos em um servidor VPS CNS com conexão confiável e a conta Demo utilizada para os testes são com corretores IBFX e VantageFX

Eu faço um RefreshRates() a cada tick e uso funções de timeseries normais para acessar os dados da barra. O código usado para atualizar os indicadores é dado em meu post anterior ver função DrawMoveEx. Acredito que a série TimeSeries não tem barras ausentes de 0 a 'Bars -1'. Informe-me se esta suposição estiver incorreta.

Uma outra fotografia, com escala de tempo correta, e sem rolagem para a direita (com os dados atuais do IBFX).

Você teve a oportunidade de ver o arquivo excel incluído no post 2011.10.07 15:30

 

AnkaSoftware:
I believe the TimeSeries does not have missing bars from 0 to 'Bars -1'. Let me know if this assumption is incorrect.

Essa suposição certamente parece estar incorreta porque sua captura de tela original "Move Error" tem 16 barras entre cada marcador do eixo X - você pode contá-las para si mesmo - mas um dos períodos abrange 21 em vez de 16 minutos. E, como diz o RaptorUK, não é uma suposição que você pode fazer com segurança em seu código. Não haverá necessariamente uma troca a cada minuto do dia - embora eu ficaria surpreso se não houvesse em GBPUSD fora dos feriados principais - e, portanto, não haverá necessariamente uma barra M1 para cada minuto.

Se você acredita que não faltam barras - quando é comprovado que faltam barras em uma de suas telas - então você provavelmente está codificando com base nessa suposição/crença. Eu não consideraria sua última captura de tela como uma contraprova, porque poderia haver (a) dados faltando antes do período mostrado na captura de tela que (b) de alguma forma está afetando os cálculos para as barras que são mostradas na captura de tela.

A coisa mais suspeita é que as linhas roxas param na captura de tela original durante o período em que há claramente uma barra em falta. Eu não poderia comentar mais, ou fazer análise de suas planilhas, sem ver o código completo.

 
AnkaSoftware:

Jic, obrigado pelas observações.

Os testes estão sendo feitos em um servidor VPS CNS com conexão confiável e a conta Demo utilizada para os testes são com corretores IBFX e VantageFX

Eu faço um RefreshRates() a cada tick e uso funções de timeseries normais para acessar os dados da barra.

Provavelmente não é uma causa de seu problema, mas... RefreshRates() não faz diferença se você estiver usando estas funções: https: //docs.mql4.com/series RefreshRates apenas atualiza estas variáveis: https://docs.mql4.com/predefined/variables
 
jjc:

Essa suposição certamente parece estar incorreta porque sua captura de tela original "Move Error" tem 16 barras entre cada marcador do eixo X - você pode contá-las para si mesmo - mas um dos períodos abrange 21 em vez de 16 minutos. E, como diz o RaptorUK, não é uma suposição que você pode fazer com segurança em seu código. Não haverá necessariamente uma troca a cada minuto do dia - embora eu ficaria surpreso se não houvesse em GBPUSD fora dos feriados principais - e, portanto, não haverá necessariamente uma barra M1 para cada minuto.

Se você acredita que não faltam barras - quando é comprovado que faltam barras em uma de suas telas - então você provavelmente está codificando com base nessa suposição/crença. Eu não consideraria sua última captura de tela como uma contraprova, porque poderia haver (a) dados ausentes antes do período mostrado na captura de tela que (b) de alguma forma está afetando os cálculos para as barras que são mostradas na captura de tela.

A coisa mais suspeita é que as linhas roxas param na captura de tela original durante o período em que há claramente uma barra em falta. Eu não poderia comentar mais, ou fazer análise de suas planilhas, sem ver o código completo.

Raptor, vai verificar "o que acontece se você reduzir seu lookback para 500 barras, você terá problemas após 8 hrs?" e reverter.

JIC, Por favor, note que o problema não ocorre em plataformas de 32 bits. Eu forneci algum código em um dos posts anteriores.

 
AnkaSoftware:
Acredito que a série TimeSeries não tem barras ausentes de 0 a 'Bars -1'. Informe-me se esta suposição estiver incorreta.

Claro que não, há velas de Barras numeradas de 0 a Barras-1. ArraySize(Close) == Barras sempre.

Entretanto, há sempre barras ignoradas. a partir de sex 21:59z, a próxima barra é Sun 22:00z. Fins de semana e feriados e minutos sem atividade.

Você não pode assumir que o Tempo[x] == Tempo[x+1] + 60*Período() não estará em uma barra pulada.

Se você quiser ajuda com o SEU indicador, poste o SEU código - não se preocupe com os leitores aqui.

 
AnkaSoftware:

Algumas informações adicionais -

a) A corrupção de indicadores ocorre apenas na plataforma Windows 64 bit

b) Fiz uma descarga da matriz de indicadores antes e depois da corrupção - os mesmos estão disponíveis no arquivo xls anexo com comentários.

Dê uma olhada nos valores de tempo Unix em sua planilha, os intervalos entre cada valor adjacente devem ser de 60, 60 segundos, há alguns intervalos de 240 segundos e pelo menos um intervalo de 120 segundos. Seu código foi projetado para lidar com barras M1 ausentes?