Обсуждение статьи "Жидкий график" - страница 3

 
Удалось найти причину?
 
handel:
Удалось найти причину?
Быстро разобраться не получилось. Требуется тщательная трассировка. Сейчас закончу одну работу, и займусь данным вопросом.
 
Мне кажется, причина кроеться в том что в начале каждой недели появляется лишняя свеча, которые с каждой неделей накапливаются и сдвигают  график, это что касается дневного графика с базовым H1. Можно сделать скрин на выходных, и в начале недели, будет наглядней. 
 

Я попытался внести свою посильную лепту, может это поможет в поиске ошибки. На снимках сделанных в разное время, видно как график индикатора смещается относительно основного графика.

Файлы:
H_1-_19.07.png  27 kb
H_1-_01.08.png  19 kb
H_1-_03.08.png  21 kb
 
На  двух последних снимках можно увидеть отличие в графике, как в понедельник 03.08 появилось сразу две свечи.
 
handel:
Мне кажется, причина кроеться в том что в начале каждой недели появляется лишняя свеча, которые с каждой неделей накапливаются и сдвигают  график, это что касается дневного графика с базовым H1. Можно сделать скрин на выходных, и в начале недели, будет наглядней. 

Да, так и есть. При определённых значениях сдвига возникают "фантомные бары" - более детально смотрите рис. 4 статьи, там же описана причина их возникновения. Так как они появляются на стыке недель, то наиболее заметны на старших таймфреймах. Особенно на дневном графике (как в Вашем примере), поскольку, на экране помещается временной диапазон в несколько недель, и с каждой неделей сдвиг всё более ощутимый.

Это не ошибка, это особенность. Можно было бы отбрасывать "фантомные бары", но это потеря данных, что не совсем хорошо. В идеале, нужно было бы в таких местах сдвигать исходный график, но такой возможности нет. Если для Вас критична синхронизация исходного и результирующего графиков, можно отфильтровать "лишние" бары, возвращённые функцией GetRatesLC(), непосредственно перед копированием их в индикаторный буфер.

 
Если правильно понимаю, фантомный бар возникает когда в пятницу торговая сессия заканчивается 23:00. А если торговля заканчивается 23:59, откуда может появится тот самый бар. Опишите пожалуйста на конретном примере, какой временной интервал в себя включают две свечи которые появились в понедельник. Еще не понял  такой момент, цена открытия дневных свечей на индикаторе при сдвиге на любое количество часов остается неизменной, хотя она должна принимать цену открытия часовой свечи которая при данном сдвиге являеться первой? 
 
Про цену открытия -- вопрос снимаю. 
 

Делал похожую фигню. У меня вроде работает без всяких фантомных баров.

Поскольку целиком проанализировать исходник не имею возможности, наткнулся лишь на то, что на поверхности - некие странности (на мой взгляд).

Во-первых в нескольких местах видел конструкцию tO-=PeriodSeconds(). Не уверен, что так можно делать, поскольку вычитая из t0 PeriodSeconds можно залезть на предыдущий бар. Суть ситуации, когда t0 выходит за рамки, в том, что этот жидкий бар еще не начал формироваться и не нужно пытаться искусственно подвинуть его начало на один период.

Во-вторых, время закрытия нужно определять не по количеству - сколько базовых теоретически влезает в теущий период относительно открытия, а индивидуально для каждого бара текущего периода брать его время открытия, брать время открытия следующего бара, для второго искать бар базового периода и читать в базовом периоде предыдущий бар - это и будет конец жидкого бара.

 

Зачем мне это нужно? Я питаюсь увидеть, что на дневных графиках  видят американцы, австралийцы, японцы и тд. Поскольку терминальное время у всех разное, то и время образования дневной свечи у всех разное, а следовательно и картинка на дневных графиках у всех разная. Имея возможность смотреть ситуацию в разных часовых поясах, появляеться больше возможностей не пропустить нужный момент входа. Что если не пытаться вычесть время нужного тика вычитая время сдвига от времени оптределенного бара. А взять за точку отсчета время GTM, от этого времени вычесть время сдвига и первый тик который прийдет после этого времени пойдет  в образование новой свечи и соответственно тик который прийдет до этого времени, будет последним тиком свечи предыдущей. Это такой же принцип как образовываеться обычный график, если терминальное время 00:00 то на нам не важно когда прийдет первый тик, это все равно будет первый тик новой свечи.