История котировок для MetaTrader 4
Детальная проверка работоспособности исследуемой торговой тактики в тестере стратегий MetaTrader 4 (MT4) требует наличия истории котировок того или иного торгового инструмента. Чем глубже и полнее история котировок, тем большее количество рыночных ситуаций можно смоделировать.
Доступная глубина истории в MT4 измеряется в свечах (барах). По умолчанию количество доступных исторических баров в терминале установлено равным 512 000 (пункт главного меню «Сервис» -> «Настройки», закладка «Графики»), а максимально видимое в окне — 65 000 (см. рис. 1).
Рис. 1. Настройки терминала MetaTrader 4.
Такого количества истории вполне достаточно, если речь идет о крупных таймфреймах: месячном, недельном, дневном. Нехватка данных будет ощущаться особенно остро на мелких таймфреймах, например, на минутном (М1), для которого 65 000 баров — это полтора месяца.
Следует отметить, что таймфрейм М1 является базовым для всех таймфреймов, т.к., имея данные по таймфрейму М1, можно синтезировать историю котировок для любого другого таймфрейма, даже нестандартного. Кроме этого, таймфрейм М1 позволяет детально рассматривать процесс формирования свечи более крупного таймфрейма. Если для какой-то, к примеру, часовой, свечи не существует детализированной минутной истории, то о развитии ситуации внутри нее можно только догадываться. Во время тестирования стратегии для подобных свечей производится моделирование минутных свечей, что может быть близко к истине, но не дает абсолютной точности воспроизведения реальных событий. По этой причине важно иметь как можно более глубокую историю котировок, детализированную до уровня таймфрейма М1.
Получение истории котировок в MetaTrader 4
В терминале MT4 предусмотрены штатные средства для получения глубокой детализированной истории котировок. Рассмотрим этот процесс пошагово.
Шаг 1. Установить достаточное количество доступных баров в истории и количество видимых баров в окне (см. рис. 1). Вычислим это значение. Максимально доступная история по большинству инструментов насчитывает 11.5 лет (с 01.01.1999 до нынешнего времени). На один год приходится около 260 рабочих дней (52 недели, состоящих из 5 рабочих дней). Каждый день состоит из 1440 минут (24 часа * 60 минут в часе). Итого получаем: 11.5 лет х 260 дней в году х 1440 минут в одном дне = 4 305 600 минут. Учитывая тот факт, что со временем история будет накапливаться, установим доступную глубину истории с запасом, т.е. 5 000 000 баров.
Шаг 2. Загрузить полную историю с сервера компании MetaQuotes Software Corp. Для этого необходимо открыть окно «Архив котировок» (главное меню «Сервис» — «Архив котировок» или нажать F2), выбрать нужный инструмент и таймфрейм (см. рис. 2). Обратите внимание, что пиктограмма выбранного таймфрейма должна быть подсвечена. Далее нажимаем кнопку «Загрузить» и получаем окно предупреждения о том, что загрузка котировок будет произведена не с сервера компании брокера, а с сервера компании MetaQuotes. Убираем предупреждение с экрана путем нажатия кнопки «ОК» и ожидаем окончания процесса загрузки, который, в зависимости от скорости соединения, может занять различное время. Объем загружаемой информации, если обращение к архиву котировок производится впервые, составит около 40 Мб.
Рис. 2. Использование «Архива котировок».
Шаг 3. После окончания загрузки данных желательно перезагрузить терминал, т.к. изменение значения максимального количества баров происходит только при запуске терминала.
Вновь запустив МТ4, проведем проверку наличия закачанных данных. С этой целью откроем график инструмента, по которому производились вышеуказанные действия, установим таймфрейм М1 и нажмем клавишу Home, что приведет к переходу по шкале времени к началу имеющихся данных. Если вы наблюдаете свечи, соответствующие 4-ому января 1999-го года, то процесс получения истории котировок прошел успешно.
Казалось бы, дело сделано, и можно приступать к тестированию разработанной стратегии. Но не тут то было. При детальной проверке целостности полученных котировок сталкиваемся с неприятным сюрпризом: история котировок изобилует провалами в данных — «дырами» (см. рис. 3). К сожалению, подобные «дыры» далеко не редкость в закачанной истории котировок. Только за 2010 год можно легко найти еще два серьезных пробела: 07.05.2010 — 08.07.2010 и 23.07.2010 — 05.08.2010.
Рис. 3. Одна из «дыр» истории котировок.
Использовать подобную историю котировок при тестировании стратегий, значит, обманывать самого себя. Поэтому для серьезных исследований стоит подготовить историю котировок, которая не содержит «дыр», или, по крайней мере, тех «дыр», которые образовались неестественным образом (отсутствие реально существовавших данных по необъяснимым причинам). В свою очередь, под естественными «дырами» подразумеваются провалы в данных, которым соответствует реальное отсутствие котировок, вызванное низкой волатильностью рынка, например, в ночное время.
Импорт котировок в MetaTrader 4
Найти глубокую детализированную историю котировок для MT4 в свободном доступе оказывается проблематичным делом. Намного проще найти ее для другой торговой платформы — MetaStock. Данные для MetaStock и были взяты за основу для получения истории котировок для МТ4. Форматы представления истории котировок в MT4 и MetaStock достаточно похожи, хотя и нуждаются в некоторой коррекции, которая была проведена автором статьи для 14 наиболее распространенных финансовых инструментов. В итоге прилагаемые к статье файлы истории котировок можно использовать для импорта в среде терминала МТ4.
Процесс импорта котировок производится в несколько шагов:
Шаг 1. Закрыть терминал МТ4.
Шаг 2. В папке терминала history\\ удалить все файлы типа hst, которые относятся к тому инструменту, по которому предполагается импортировать историю котировок. Например, для инструмента EURUSD это будут файлы: EURUSD1.hst, EURUSD5.hst, EURUSD15.hst, EURUSD30.hst, EURUSD60.hst, EURUSD240.hst, EURUSD1440.hst, EURUSD10080.hst и EURUSD43200.hst.
Шаг 3. Загрузить терминал.
Шаг 4. Открыть окно «Архив котировок», выбрать в списке нужный инструмент и таймфрейм так, как это показано на рис. 2.
Шаг 5. Нажать кнопку «Импорт», что приведет к появлению окна, указанного на рис. 4. Далее, путем нажатия кнопки «Обзор…», необходимо выбрать один из распакованных файлов, которые были получены по представленным в статье ссылкам.
Рис. 4. Импорт истории котировок.
Шаг 6. В зависимости от брокера, с которым работает пользователь, необходимо установить временной сдвиг истории котировок. Представленная история основана на времени сервера брокера GMT+1. Поэтому, если сервер вашего брокера настроен именно на такое время, то в поле «Сдвиг» следует оставить значение 0. Для времени сервера GMT необходимо указать сдвиг -1 час, а для времени GMT+2 сдвиг будет равен +1 час. Обратите внимание, что речь идет не о локальном времени компьютера пользователя, а именно о времени, принятом на сервере брокера.
Смещение времени сервера MetaTrader 4
Вычислить смещение времени сервера можно в один из рабочих дней следующим образом: открыть окно терминала «Обзор рынка» (главное меню «Вид» — «Обзор рынка» или нажать Ctrl+M) и сравнить время, указанное в заголовке окна с локальным временем компьютера. Если локальное время компьютера опережает значение, указанное в «Обзоре рынка», то из локального часового пояса (можно посмотреть в настройках Windows при установке времени) необходимо вычесть полученную разность. Если же локальное время компьютера отстает от времени сервера брокера, то разность в часах прибавляется к локальному часовому поясу (см. рис. 5).
Рис. 5. Вычисление часового пояса сервера брокера.
Шаг 7. Нажать кнопку «ОК» и дождаться окончания загрузки истории котировок.
Выполнение перечисленных шагов приведет к получению качественной минутной истории котировок с 03.01.2001 по 22.06.2011.
Синтез различных таймфреймов из М1
Как упоминалось выше, располагая минутной историей, можно синтезировать любой другой таймфрейм. Для этого достаточно использовать штатный скрипт period_converter:
1. Активизировать окно графика нужного инструмента и установить таймфрейм М1.
2. Открыть окно «Навигатор» (главное меню «Вид» — «Навигатор» или Ctr+N).
3. Раскрыть список «Скрипты» и найти скрипт period_converter.
4. Произвести двойной клик мышью в строке с названием скрипта, что приведет к появлению окна настроек программы.
5. Выбрать закладку «Входные параметры».
6. Параметру ExtPeriodMultiplier присвоить значение, соответствующее количеству минут, содержащееся в желаемом таймфрейме. Например, для часового таймфрейма это значение 60, для Н4 — 240, для D1 — 1440, для W1 — 10080, для MN1 — 43200.
7. Нажать «ОК» и выждать несколько секунд для завершения конвертации, после чего можно нажать правой клавишей мыши на графике и выбрать пункт «Удалить скрипт». Для того чтобы убедиться в окончании синтеза данных до принудительного удаления скрипта с графика, необходимо открыть окно «Терминал» (главное меню «Вид» — «Терминал» или нажать Ctrl+T) и выбрать закладку «Эксперты». Вслед за строкой вида: «2011.07.22 22:56:52 period_converter EURUSD,M1 inputs: ExtPeriodMultiplier=60» должна следовать строка вида: «2011.07.22 22:56:55 period_converter EURUSD,M1: 75673 record(s) written». После этого можно смело удалять скрипт и приступать к синтезу других необходимых таймфреймов.
Внимание! Для наиболее правильного синтеза таймфреймов из таймфрейма М1 не рекомендуется переключать период графика до окончания синтеза всех генерируемых таймфреймов.
Скачать котировки для MetaTrader 4
История котировок М1 по инструменту AUDJPY
История котировок М1 по инструменту AUDUSD
История котировок М1 по инструменту CHFJPY
История котировок М1 по инструменту EURCAD
История котировок М1 по инструменту EURCHF
История котировок М1 по инструменту EURGBP
История котировок М1 по инструменту EURJPY
История котировок М1 по инструменту EURUSD
История котировок М1 по инструменту GBPCHF
История котировок М1 по инструменту GBPJPY
История котировок М1 по инструменту GBPUSD
История котировок М1 по инструменту GOLD
История котировок М1 по инструменту SILVER
История котировок М1 по инструменту USDCAD
Почему никак не могу добавить Ваш архив котировак? Что за проблема. Вроде все как описано делаю, из предоставленного тут архива
все четко. спасибо
Добрый день.
Котировки закачал, все ок.
Не получается отконвертировать из М1 в более крупные периоды. В чем м.б. проблема? Точнее скрипт запускается, сообщение в терминале вижу, а на графике история не появляется.