Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Полагаю, все проблемы из-за (цитата из описания языка со страницы по доступу к таймсериям): "...Это связано с тем, что в целях экономии ресурсов в MetaTrader 5 не хранится полная копия требуемых данных для mql5-программы, а дается прямой доступ к базе данных терминала...".
Добились экономии ресурсов, но потеряли в эффективности. Фактически потеря ресурса времени.
Почему нужны котировки по всем таймфреймам?
Если мы вручную привязываем к барам, допустим, вилы Эндрюса. В МТ5 грамотно решено с ручной привязкой. Вилы по времени привязываются точно к тому моменту, когда был макимум или минимум бара. И при переключении на младший тф вилы всегда оказываются привязанными к максимуму или минимуму баров.
А вот при программном выведении на график вил Эндрюса такого не происходит. Необходимо в программе находить точное время максимумов и минимумов. Иначе при переходе на младшие тф вилы будут привязаны к точкам, находящимся в воздухе.
Пример для вывода вил на месячном тф по паре EURUSD:
В ZUP программно находится время нахождения экстремума на минимальном тф. Но, допустим, мы сделали графические построения на часовом тф. При переходе на месячный тф все графическое построение может уместиться в один месячный бар. Для этого программно находится тот тф, на котором еще точки привязки графических инструментов совпадают с экстремумами баров.
Для всех этих целей и необходим быстрый доступ ко всем таймсериям всех таймфреймов.
Это первое.
Второе. То, что говорят будто котировки с сервера приходят в виде упакованных минутных таймсерий, является неправдой. Если посмотреть размер HCC файлов по всей доступной истории по паре EURUSD с сервера Метаквотес, то до 1998 года включительно размер файлов не превышает 79 кб. И при выводе этой пары на график на месячном, недельном и дневном тф размер графика меняется. А вот при дальнейшем уменьшении тф вплоть до двухчасового тф график не изменяется.
Начиная с 1999 года размер HCC файлов превышает 17 000 кб. И здесь уже необходимо программно проверять, с какого тф приходят упакованные котировки. Есть сомнения, что на каком-то участке также упакованные котировки взяты не с минутного тф.
Следовательно до 1998 года с сервера приходят упакованные не минутки, а дневки. И все графические построения до 1999 года будут корректными только на тф не ниже дневок. На более мелких тф в этом промежутке все графические построения некорректные.
Пройдемся далее по вилам Эндрюса в МТ5.
С какой целью созданы в вилах уровни так, как они выводятся, для меня уже много лет загадка.
Вот пример вывода уровня 0.618:
Развитие ценового движения происходит от третьей точки привязки вил внутрь канала вил. С какой целью рисуется уровень выше третьей точки привязки для меня загадка. Сделано как-то бестолково. Да и нижний уровень также получается бесполезным.
Но вот если строить уровни от третьей точки внутрь вил таким образом, что расстояние от третьей точки привязки до второй точки привязки брать за 100%, то все кардинально меняется. Линии начинают работать. Они приобретают смысл:
Долго пытался понять, чем руководствовались разработчики при создании уровней в вилах.
Единственное объяснение может быть следующим. При построении какой-то медианы на рынке, к которой цены подходят с двух сторон и отскакивают от медианы. В этом случае необходимо брать какую-то базу, относительно которой строить уровни в разные стороны. Но это уже не на 100% вилы Эндрюса будут. Это будет какой-то другой графический инструмент.
Как я это вижу: Для начала можно сделать вывод в лог информацию о том, что таймфрейм синхронизирован - при переключении. То что описано в Организация доступа к данным, но под свои задачи.
Когда будет сделано решение "я на 100% знаю, что таймфрейм синхронизирован и готов к использованию", то будет ясно в какой момент можно что-то требовать от объектов на этом таймфрейме.
Попробовал загрузить всю историю по всем таймфреймам. С помощью немного модифицированной функции из описания Организация доступа к данным, но под свои задачи.
Поставил программу test на тф D1 по EURUSD. Выгрузил из памяти терминал. Удалил историю по всем символам. Вновь запустил терминал.
Результат:
2019.06.27 18:44:08.639 test (EURUSD,D1) 29 open time=2019.06.27 18:44:08
Примерно 27 минут загружалось и формировались таймсерии.
Текст программы:
Грустно как-то. Чтобы все корректно работало, необходимо вначале подождать 27 минут загрузки данных.
Из описания языка MQL5 цитата: "...При доступе к ценовым данным или к значениям индикаторов из mql5-программ следует помнить, что не гарантируется их доступность в определенный момент времени, либо с определенного момента времени. Это связано с тем, что в целях экономии ресурсов в MetaTrader 5 не хранится полная копия требуемых данных для mql5-программы, а дается прямой доступ к базе данных терминала..."
Где-то еще про экономию ресурсов в описании встречал текст.
Классная экономия получилась. В МТ4 без такой экономии все работает быстро, всегда есть доступ к данным.
Буду думать, как оптимизировать процесс.
Справедливости ради добавлю, в МТ4 такой тест не проводил. То есть не удалял истории по все символам.
Но там нет такого, что приходится смотреть на экран с надписью ОЖИДАНИЕ ОБНОВЛЕНИЯ. Там все сразу строится на доступной истории. А в МТ5 попробовал строить на доступной истории. Результат - чуть ранее выкладывал картинку с артефактами... и некоторые другие ляпы выскакивают.
Наверное, надо загружать историю текущего тф. Определять время самого первого бара загруженной истории. И загружать по всем тф историю в глубину не далее времени самого первого бара текущего тф. Но при каждом новом вызове функции загрузки истории добавлять сколько возможно истории на месячном тф. Когда есть полная история на месячном тф, все остальные тф загружаются относительно быстро. Если имеется только история по месячному тф, полная загрузка по всем тф происходит где-то за 3-4 минуты.
Пока видится такой оптимизационный цикл.