Discussão do artigo "Gráfico Líquido" - página 3

 
Conseguiu encontrar a causa?
 
handel:
Conseguiu encontrar a causa?
Não foi uma solução rápida. É necessário um rastreamento completo. Estou prestes a terminar um trabalho e darei uma olhada no assunto.
 
Parece-me que o motivo é que, no início de cada semana, há uma vela extra, que se acumula e desloca o gráfico a cada semana; isso se aplica ao gráfico diário com a base H1. Você pode fazer uma captura de tela no fim de semana e no início da semana, assim ficará mais claro.
 

Tentei fazer o melhor que pude para contribuir, talvez isso ajude a encontrar o erro. Nas fotos tiradas em momentos diferentes, você pode ver como o gráfico do indicador está se deslocando em relação ao gráfico principal.

Arquivos anexados:
H_1-_19.07.png  27 kb
H_1-_01.08.png  19 kb
H_1-_03.08.png  21 kb
 
Nas duas últimas imagens, você pode ver a diferença no gráfico, pois duas velas apareceram ao mesmo tempo na segunda-feira, dia 03.08.
 
handel:
Parece-me que a razão é que no início de cada semana há um candle extra, que se acumula e desloca o gráfico toda semana, isso se aplica ao gráfico diário com a base H1. Você pode fazer uma tela no fim de semana e, no início da semana, ela ficará mais clara.

Sim, é verdade. Em determinados valores de deslocamento, aparecem "barras fantasmas" - para obter mais detalhes, consulte a fig. 4 do artigo. 4 do artigo, o motivo de sua ocorrência também está descrito lá. Como elas aparecem na junção das semanas, são mais perceptíveis nos períodos de tempo mais altos. Especialmente no gráfico diário (como no seu exemplo), porque a tela mostra um intervalo de tempo de várias semanas e, a cada semana, a mudança é cada vez mais perceptível.

Isso não é um bug, é um recurso. Você poderia descartar as "barras fantasmas", mas isso seria perda de dados, o que não é bom. O ideal seria deslocar o gráfico original nesses locais, mas você não tem essa opção. Se a sincronização dos gráficos inicial e resultante for fundamental para você, é possível filtrar as barras "extras" retornadas pela função GetRatesLC() imediatamente antes de copiá-las para o buffer do indicador.

 
Se entendi corretamente, a barra fantasma aparece quando a sessão de negociação termina às 23:00 de sexta-feira. E se a sessão de negociação terminar às 23:59, de onde a barra pode aparecer? Por favor, descreva em um exemplo concreto qual intervalo de tempo inclui duas velas que apareceram na segunda-feira. Eu não entendo esse ponto, o preço de abertura das velas diárias no indicador na mudança para qualquer número de horas permanece inalterado, embora deva tomar o preço de abertura da vela da hora, que é a primeira nessa mudança?
 
Sobre o preço de abertura, isso está fora de questão.
 

Fiz algo semelhante. Parece funcionar para mim sem nenhuma barra fantasma.

Como não posso analisar o código-fonte em sua totalidade, só me deparei com algumas coisas estranhas (em minha opinião) na superfície.

Em primeiro lugar, em vários lugares, vi a construção tO-=PeriodSeconds(). Não tenho certeza se isso pode ser feito dessa forma, porque subtraindo PeriodSeconds de t0 você pode chegar à barra anterior. A essência da situação quando t0 está fora dos limites é que essa barra líquida ainda não começou a se formar e não há necessidade de tentar mover artificialmente seu início em um período.

Em segundo lugar, o horário de fechamento deve ser determinado não pelo número - quantas barras-base teoricamente cabem no período atual em relação à abertura -, mas individualmente, para cada barra do período atual, pegue seu horário de abertura, pegue o horário de abertura da próxima barra, para a segunda, procure uma barra do período-base e leia a barra anterior no período-base - esse será o fim da barra líquida.

 

Por que eu preciso disso? Quero ver o que os americanos, australianos, japoneses etc. veem nos gráficos diários. Como o horário do terminal é diferente para todos, o tempo de formação de um candle diário é diferente para todos e, portanto, a imagem nos gráficos diários é diferente para todos. Tendo a oportunidade de observar a situação em diferentes fusos horários, há mais oportunidades de não perder o momento certo de entrada. E se não tentarmos subtrair o tempo do tick necessário subtraindo o tempo do turno do tempo de uma barra determinada. E tomarmos o tempo GTM como ponto de referência, subtrairmos o tempo de deslocamento desse tempo e o primeiro tique que vier depois desse tempo formará um novo candle e, consequentemente, o tique que vier antes desse tempo será o último tique do candle anterior. Esse é o mesmo princípio da formação de um gráfico regular: se o horário do terminal for 00:00, não importa quando o primeiro tique for lançado, ele ainda será o primeiro tique de um novo candle.