Модуль MetaTrader для интеграции с Python - как получить iClose из Мт5?

 
Привет пытаюсь получить последнюю цену на 0 баре в мт5 используя данный модуль но не получается получить как мт5 
На всех других закрытых барах от 1 и выше по истории все ок при использовании 
rates = mt5.copy_rates_from_pos(PAIR, TIMEFRAME, 0, MAX_BARS)


А вот на 0 баре котрый не закрыт данная функция не получает цену, которая должна обновляться - я обновляю ее каждую сек

Bar#     Open    Close    High      Low    
 0      1.04817 1.04810 1.04817 1.04808 
 1      1.04821 1.04817 1.04839 1.04797 
 2      1.04825 1.04821 1.04825 1.04793 
 3      1.04787 1.04825 1.04846 1.04779 
 4      1.04796 1.04787 1.04832 1.04768 
Bar#     Open    Close    High      Low    
 0      1.04817 1.04810 1.04817 1.04808 
 1      1.04821 1.04817 1.04839 1.04797 
 2      1.04825 1.04821 1.04825 1.04793 
 3      1.04787 1.04825 1.04846 1.04779 
 4      1.04796 1.04787 1.04832 1.04768 
Bar#     Open    Close    High      Low    
 0      1.04817 1.04810 1.04817 1.04808 
 1      1.04821 1.04817 1.04839 1.04797 
 2      1.04825 1.04821 1.04825 1.04793 
 3      1.04787 1.04825 1.04846 1.04779 
 4      1.04796 1.04787 1.04832 1.04768 
Bar#     Open    Close    High      Low    
 0      1.04817 1.04810 1.04817 1.04808 
 1      1.04821 1.04817 1.04839 1.04797 
 2      1.04825 1.04821 1.04825 1.04793 
 3      1.04787 1.04825 1.04846 1.04779 
 4      1.04796 1.04787 1.04832 1.04768 
Bar#     Open    Close    High      Low    
 0      1.04817 1.04810 1.04817 1.04808 
 1      1.04821 1.04817 1.04839 1.04797 
 2      1.04825 1.04821 1.04825 1.04793
 3      1.04787 1.04825 1.04846 1.04779 
 4      1.04796 1.04787 1.04832 1.04768 

Как видно из принтов Пайтона - закрытия не обновляется для 0 бара но в реальности она обновляется если использовать copy_rates_from_pos

Мне так же не понятно что тогда в мт5 iClose ? это БИД при закрытии бара? Последний БИД на баре на тиковой истории бара?? 

Ок пробую в пайтоне прочитать так же последний бид на баре если номер бара =0 используя:

mt5.symbol_info_tick(PAIR).bid

:

# Для текущего бара (0-го) мы используем BID цену
        close_price = data[i]['close'] if i != 0 else mt5.symbol_info_tick(PAIR).bid

и тут подвох - в мт5 iClose отличается от бида получаемого в пайтоне - что самое интересное он обновляется кадую сек как мне нужно но он совершенно не такой как в мт5 iClose на нулевом баре. 

Документация по MQL5: Доступ к таймсериям и индикаторам / iClose
Документация по MQL5: Доступ к таймсериям и индикаторам / iClose
  • www.mql5.com
Возвращает значение цены закрытия бара (указанного параметром shift) соответствующего графика. Параметры symbol [in]  Символьное имя...
 
Сделал так 
#======================================================================================================
def get_price_data(symbol, max_bars=1000):
    """Получаем данные о ценах для последних MAX_BARS баров с использованием get_last_close для закрытия на 0-ом баре"""
    rates = mt5.copy_rates_from_pos(symbol, TIMEFRAME, 0, max_bars)  # Получаем последние MAX_BARS баров

    if rates is None or len(rates) == 0:
        print("Ошибка загрузки данных")
        return None

    # Получаем последнее значение Close через get_last_close
    last_close = get_last_close(symbol)

    if last_close is None:
        return None

    # Переворачиваем массив, чтобы 0-й бар был первым
    rates = rates[::-1]

    # Создаем копию данных, чтобы обновить Close на 0-ом баре
    updated_rates = rates.copy()

    # Обновляем Close на 0-ом баре с помощью get_last_close
    updated_rates[0] = updated_rates[0].copy()  # Создаем новый словарь для первого элемента
    updated_rates[0]['close'] = last_close

    return updated_rates

#======================================================================================================
def get_last_close(symbol):
    """Получает последнее значение Close (аналог iClose(0) в MT5)"""
    now = time.time()
    ticks = mt5.copy_ticks_from(symbol, now, 10, mt5.COPY_TICKS_ALL)  # Берем последние 10 тиков

    if ticks is None or len(ticks) == 0:
        print("Ошибка получения тиков")
        return None

    last_close = ticks[-1]['last']  # Цена последней сделки (именно она влияет на Close!)
    return last_close
#======================================================================================================
И в пайтоне на 0.5 пип ниже Закрытие 0 бара чем в мт5 ... жесть какая то . Неужели нельзя было iClose хотя бы норм сделать в модуле ??? Ушел с мт5 в пайтон что бы исключит баги и тут косяки и костыли везде

Ну кстати на некоторых парах более ли менее работает последний код...