Проблема с MT5CopyTicksRange

 

В общем случается чудо ... Делал запрос вот прямо до 17:00 18.10.2019 как пример, но делал я его часов шесть назад. При этом у меня по моему GMT уже было 18:00 ... А он мне взял и отдал все Тики, как будто бы на сервере уже все есть, это при том что открывая MT я прекрасно вижу что у них там всего навсего 12:00 18.10.2019 ...

Как так выходит? Почему он отдает такое время то мне? После обрезал мой запрос и не с 3:00 а с 11:00 отдал ... В общем работает сверх непонятно и странно =(

 

Вот например, в MT сейчас 16й час идет, а уменя уже есть Тики до самого конца... как так?

2019-10-18      16:59:52.322000 1.28457 1.28467
2019-10-18      16:59:53.018000 1.28458 1.28467
2019-10-18      16:59:53.826000 1.28453 1.28461
2019-10-18      16:59:53.919000 1.2845  1.28461
2019-10-18      16:59:54.521000 1.28451 1.28461
2019-10-18      16:59:54.726000 1.28452 1.28461
2019-10-18      16:59:55.122000 1.28453 1.28461
2019-10-18      16:59:55.331000 1.2845  1.28461
2019-10-18      16:59:56.122000 1.28451 1.28461
2019-10-18      16:59:56.425000 1.28452 1.28461
2019-10-18      16:59:57.425000 1.28451 1.28461
2019-10-18      16:59:57.629000 1.28452 1.28461
2019-10-18      16:59:57.925000 1.28453 1.28461
2019-10-18      16:59:58.328000 1.2845  1.2846
 

Добавил как в примере timezone ... Теперь у меня тики есть даже за мое будущее время. То есть у меня сейчас почти час ночи, а тики уже за полчетвертого есть =( Хочется понять что это же за хренатень то такая ... timezone = pytz.timezone("Etc/UTC") соответственно его на обе даты параметром как в примерах ...


2019-10-19      03:40:18.464000 1.28721 1.28732
2019-10-19      03:40:18.555000 1.28719 1.28729
2019-10-19      03:40:19.177000 1.2872  1.2873
2019-10-19      03:40:19.357000 1.28721 1.2873
2019-10-19      03:40:19.755000 1.28722 1.28731
2019-10-19      03:40:21.262000 1.28722 1.28732
2019-10-19      03:40:31.892000 1.28721 1.28731
2019-10-19      03:40:32.284000 1.28722 1.28732
2019-10-19      03:40:37.593000 1.28722 1.2873
2019-10-19      03:40:39.114000 1.28721 1.28729
2019-10-19      03:40:39.298000 1.28718 1.28726
2019-10-19      03:40:39.796000 1.28717 1.28726
 
То есть у меня в GMT брокера уже есть время, как мне его теперь тики получить то? Что сделать с этим самым GMT, если по умолчанию я не использовал timezone = pytz.timezone("Etc/UTC") но что то делать явно нужно .. ?
 

Оказалось кодировка всему виной ... Надо было использовать примерно так для всех файлов ...

CSVFileForWrite = open(CSVFileForWrite, 'a', encoding='utf-8')

Без этого utf-8 в какой то момент даты превращались в полную чушь ...

 

Кодировка здесь ни при чем. Вы не привели вашего кода, который делает запросы истории.

Для получения таймсерии в заданном интервале необходимо выставлять время в таймзоне UTC+0 , смотрите пример https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5copyratesrange_py

from datetime import datetime
from MetaTrader5 import *
# импортируем модуль pandas для вывода полученных данных в табличной форме
import pandas as pd
pd.set_option('display.max_columns', 500) # сколько столбцов показываем
pd.set_option('display.width', 1500)      # макс. ширина таблицы для показа
 
# установим подключение к терминалу MetaTrader 5
MT5Initialize()
# подождем пока MetaTrader 5 подключится к торговому серверу
MT5WaitForTerminal()
 
# установим таймзону в UTC
timezone = pytz.timezone("Etc/UTC")
# создадим объекты datetime в таймзоне UTC, чтобы не применялось смещение локальной таймзоны
utc_from = datetime(2019, 4, 1, tzinfo=timezone)
utc_to = datetime(2019, 4, 5, hour = 13, tzinfo=timezone)
# получим бары с USDJPY M5 начиная с 01.04.2019 в таймзоне UTC
rates = MT5CopyRatesFrom("USDJPY", MT5_TIMEFRAME_M5, utc_from, utc_to)

Рекомендуем обновить пакет MetaTrader для Python  - уже вышла версия 5.0.8

Документация по MQL5: Интеграция / MetaTrader для Python / MT5CopyRatesRange
Документация по MQL5: Интеграция / MetaTrader для Python / MT5CopyRatesRange
  • www.mql5.com
# создадим объекты datetime в таймзоне UTC, чтобы не применялось смещение локальной таймзоны                             MT5Rate(time=datetime.datetime(2019, 4, 1, 0, 0),  open=110.994, low=110.994, high=110.966, close=110.966, tick_volume=12, spread=22, real_volume=0...