На самом деле считается все правильно, просто бар закрывается ПОСЛЕ цены того, как будет известна цена закрытия. Т.е. весь часовой бар известен только в последний момент его действия, то этого работает другой часовой бар. Поэтому цена открытия сдвигается вперед на один час. Так работает декомпрессия, при использовании метода2 сдвига нет, но этот метод работает верно только с ценой открытия, т.к. пока час не закрыт остальные параметры сжатого бара будут меняться, по мере поступления новых 5мин баров.
Если компрессия у вас больше нигде не используется, то в вашем скрипте можно использовать метод2.