Скачать MetaTrader 5

MQL4 - как брать исторические данные?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
yaapelsinko
124
yaapelsinko  

Читал справку, читал форум, читал гугл, но так и не нашёл примеров.

Я для обучения нейросетевых индикаторов хочу делать пробежки по истории котировок. И вот никак не могу найти - а как, собственно, это делать? Функции для таймсерий дают только "текущий" момент и сдвиг относительно него.

Vitalie Postolache
12445
Vitalie Postolache  
Ну а сдвиг откуда берётся по-вашему? Это и есть история.
yaapelsinko
124
yaapelsinko  

Мнэээээ.

Всмысле, если я хочу минутные котировки 10-летней давности, то это надо сдвиг в несколько миллионов просто делать?

Но он тогда и сдвигаться ведь будет вместе с поступлением новых баров?

Как тогда указать в явном виде, что я хочу диапазон с первого января 01 года по последнее декабря 05, например?

Vitalie Postolache
12445
Vitalie Postolache  

А где этот брокер который предоставит М1 за 10 лет? Не видел такого...

А по истории всё через сдвиг делается, задаётся глубина в барах и обрабатываются бары по вашему алгоритму.

yaapelsinko
124
yaapelsinko  

А, кажется понял. Скажем, если я хочу в часах вычислить и использовать в циклах даты, то я делаю так:

int timestart = (D'2008.01.01' / 3600) + 2;
int timeend = (D'2013.01.01' / 3600) + 2;

То есть, количество секунд с 1970 года, делённое на 3600 (получил количество часов), и плюс 2 - это сдвиг вперёд на нужное количество часов, правильно?

Vitalie Postolache
12445
Vitalie Postolache  

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

Так и тут, какой смысл рассматривать советником такую древнюю историю? Я понимаю, за вчера/прошлую неделю, но котировки старше года - уже плесень.

Но если уж очень хочется, то можно вычислить, сколько минут прошло с нужного момента до текущего М1 бара, задать сдвиг на столько баров назад и скопировать в массив нужное количество баров, вернее, данные о них (Time, Open, Close, High, Low, Volume).

ArrayCopyRates() делает что-то подобное, но там нет возможности задать сдвиг, она забивает в массив данные от нулевого и до заданного бара.

yaapelsinko
124
yaapelsinko  

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

С другой стороны, просто больше массив обучающих примеров. Не суть.

У меня тут новый вопрос из серии "mql4 для полных идиотов", не по теме, но не плодить же темы по каждой мелочи.

Когда я в программе индикатора в буфер записываю значение, например, Close[i], или даже Close[i] +1.0 - всё в порядке, я вижу график индикатора в терминале.

Если же я просто делаю Buffer[i] = 1.0, то никакого графика нет. WTF? Я не знаю какого-то секрета?

Victor Nikolaev
Модератор
15564
Victor Nikolaev  
yaapelsinko:

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

С другой стороны, просто больше массив обучающих примеров. Не суть.

У меня тут новый вопрос из серии "mql4 для полных идиотов", не по теме, но не плодить же темы по каждой мелочи.

Когда я в программе индикатора в буфер записываю значение, например, Close[i], или даже Close[i] +1.0 - всё в порядке, я вижу график индикатора в терминале.

Если же я просто делаю Buffer[i] = 1.0, то никакого графика нет. WTF? Я не знаю какого-то секрета?


Стройте индикатор не в основном окне. Ну и иногда разбавляйте значениями -1
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий