CopyRates

 

а заполнит массив CopyRates данными 2004-го года если в терминале только с 2008-го. ?

Можно ли программно получить всю историю  если она еще не закачана ?

 

Перенес сообщение с форума mql4:

 

https://www.mql5.com/ru/forum/121010/page132

 

nen писал(а) >>

В Опциях установлено значение, допустим, Max bars in chart: 50 000.

Такое количество баров может быть выведено на чарт. Независимо от таймфрейма.

Выбираем на месячном таймфрейме какой-то бар за 2000 год. Допустим, за февраль 2000 года.

На минутках мы не можем вывести историю за тот период на график.

Но в терминале минутная история за тот период имеется. Все периоды формируются из минуток.

Задача такая. Найти на минутках время бара, у которого максимум будет равен максимуму бара за февраль 2000 года.

Функция CopyHigh не позволяет скопировать в массив минутки за февраль 2000 года. А почему?

Почему не позволяет это сделать? Минутки за тот период в терминале имеются.

=====

Каким образом можно скопировать в массив минутки за февраль 2000 года? без изменения Max bars in chart.

Похоже ответа не будет.

Тогда продолжим.

Ставлю Max bars in chart: Unlimited.

И что бы ни делал, перезагружал терминал, пытался подкачивать данные все равно получается такое:

-------

2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_SYNCRONIZED = 1
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_TERMINAL_FIRSTDATE = 1993.05.12 00:00
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_SERVER_FIRSTDATE = 1993.05.12 00:00
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_FIRSTDATE = 2006.06.28 08:17
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_BARS_COUNT = 1000019
--------

Какая-то недоработка. Если есть минутная история, то к этой миниутной истории должен быть программный доступ. Ко всей истории.

Сейчас мы не имеем доступ к этой истории.

Бета-тестирование MetaTrader 5 началось! - MQL4 форум
  • www.mql5.com
Бета-тестирование MetaTrader 5 началось! - MQL4 форум
 
nen :

Ставлю Max bars in chart: Unlimited.

И что бы ни делал, перезагружал терминал, пытался подкачивать данные все равно получается такое:


Уточните каким способом пытались подкачивать данные.

 
antt :

Уточните каким способом пытались подкачивать данные.

Минутки были закачаны еще в сентябре до 1993 года включительно. Закачивал, поставив месячный таймфрейм.

 

Из переписки на форуме mql4:

 

Alexander писал(а) >>

1. Параметр "Max bars in charts" фактически указывает какое количество баров по каждому из периодов будет доступно для чартов и экспертов. Эти данные будут кэшироваться в памяти и находиться в "боеготовом" состоянии для последующих обращений. Держать постоянно все доступные минутные данные по всем символам в готовом для обращения виде нельзя - у терминала просто кончится память.
Для регулирования потребляемой памяти и используется параметр "Max bars in charts"
Если необходимо обращаться к миллиону минуток из эксперта нужно выставить значение "Max bars in charts" в 1000000.

2. Изменение параметра "Max bars in charts" с 1M до Unlimited не означает, что терминал автоматически подкачает все доступные данные с сервера. На терминале уже был закачан 1М минуток
то так и останется 1М минуток. Для того чтобы получить остальные данные их нужно подкачать прокручивая чарт (если нужны большие объёмы минуток то проще это сделать на месяцовках).

Обратите внимание на строчку:

2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_TERMINAL_FIRSTDATE = 1993.05.12 00:00
==========

Данные по минуткам с 1993 года имеются на компьютере. Их что, еще раз необходимо закачивать?

Минутки, если они закачаны, вторично будут закачиваться?

Нестыковка какая-то получается.

 

nen писал(а) >>

Каким образом получать доступ к минуткам в 1993 году?

Для эксперта это необходимо.

 

Может быть, необходимо удалить историю и закачать ее заново?

 

Что возвращает TerminalInfoInteger(TERMINAL_MAXBARS)?

 

В ближайшее время в справке появится соответствующая статья. А пока несколько замечаний.

1. Открытие месяцовок не означает одновременной подкачки минуток. Подкачиваются полуфабрикаты минуток, из которых потом выстраиваются запрашиваемые таймсерии

2. Открытие минутного графика не означает, что все ранее закачанные полуфабрикаты минуток преобразуются в минутные бары сразу и полностью.

3. Преобразование в бары производится по запросу - либо ручным скроллингом, либо программным запросом CopyRates. Наличие большого количества минутных полуфабрикатов просто предотвращает лишние запросы к серверу.

4. Прикладываю скрипт, обеспечивающий формирование нужного таймфрейма на любую возможную глубину 

Файлы:
 
stringo :

В ближайшее время в справке появится соответствующая статья. А пока несколько замечаний.

Спасибо.

Max bars in charts: Unlimited

2009.12.01 22:24:14 ATL (GBPUSD,M1) TerminalInfoInteger(TERMINAL_MAXBARS) =  100000000
.

Похоже действительно в терминале полуфабрикаты минуток.

А какой смысл закачивать полуфабрикаты? 

 
nen :

Похоже действительно в терминале полуфабрикаты минуток.

А какой смысл закачивать полуфабрикаты? 

Огромный смысл. Полуфабрикаты приготовлены таким образом, что занимают гораздо меньше места, чем уже готовые минутки. Для 100 мегабайт нормальных минуток, вам необходимо прокачать всего 10 мегабайт полуфабриката.

 
stringo :

Огромный смысл. Полуфабрикаты приготовлены таким образом, что занимают гораздо меньше места, чем уже готовые минутки. Для 100 мегабайт нормальных минуток, вам необходимо прокачать всего 10 мегабайт полуфабриката.


Если все строится из минуток, то имеет смысл просто закачать минутки в терминал. Потом из минуток, закачанных в терминал, все и строить. 

Так представлялся процесс.

Сейчас же получается, что и для месячного тф приходится закачивать полуфабрикаты минуток и для минутного тф закачиваем минутные полуфабрикаты.

------------

Смысл действий в общем понятен. Но оптимален ли такой подход?

------------

В связи с поднятой темой возникло такое предложение.

Зачем закачивать в терминал необходимый тф с помощью скрипта или же "традиционным" методом - нажатием на клавишу HOME?

Не проще ли сделать в терминале встроенный сервис по закачке необходимых котировок. Интерфейс сделать примерно как в представленном скрипте . Все, кому это необходимо, смогут нормально закачать котировки в необходимом объеме.

Это будет штатная функция, а не как сейчас - с помощью различных костылей. 

 

==========

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

Зачем городить всем в своих программах код, как в скрипте? Проще все это спрятать в функцию. В штатную функцию.

 

Продолжу в этой теме.

 

График на минутках. По положению трендовой будет видно пропуск баров.

 

 

И этот же участок на m3.

Такие пропуски баров явление нередкое.

К сожалению, пока не нашел другого способа борьбы с этим, кроме удаления всей истории и загрузки истории с сервера поновой.

 

 

 

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

Как вариант, возможно также должен быть какой-то штатный инструмент для "борьбы" с этим явлением.

В данном инструменте также задействуется функция CopyRates.

--------

Можно, конечно, и сторонним программистам - не сотрудникам компании метаквотес - сделать скрипт для устранения пропуска баров.

Но грамотнее будет именно разработчикам терминала создать штатные инструменты для борьбы с этим явлением.

 

Тем более что, если посмотреть на код приведенного stringo скрипта, мало кому участся сделать сторонний инструмент грамотно.

Например, применение 5 милисекундных задержек лучше доверить разработчикам терминала. Это весьма туманная область... 

Разработчикам известны многие "подводные камни", о которых мы - участники форума - с большим трудом узнаем при общении с разработчиками.

Причина обращения: