Unmatched data error mql4

When back-testing an expert advisor in MT4 Strategy Tester it is sometimes possible to encounter an error that significantly spoils the quality of testing. You can see this error in the Journal tab of your MetaTrader 4 Strategy Tester:

When back-testing an expert advisor in MT4 Strategy Tester it is sometimes possible to encounter an error that significantly spoils the quality of testing. You can see this error in the Journal tab of your MetaTrader 4 Strategy Tester:

TestGenerator: unmatched data error (AAA value XXX.XXX at some.date and price YYY.YYY mismatched)

where AAA is either «high» or «low», XXX.XXX — some price rate and YYY.YYY is some other price rate.

In general, this error can be called unmatched data error and informs the trader that some data in the MT4 chart history doesn’t match between different timeframes. For example, if some M1 bar high is 123.45 and H1 bar that contains this M1 bar has high at 123.44, the unmatched data error will be displayed.

Alternatively, it may look like this:

TestGenerator: unmatched data error (volume limit VVV at some.date exceeded)

where VVV is some tick volume number.

This version of the unmatched data error appears when the total tick volume of lower timeframe bars exceeds the volume of a higher timeframe bar.

Unmatched Data Error Examples from Strategy Tester Journal Tab in MT4

How important is unmatched data error?

A reasonable question is what effect these unmatched data error could have on the modeling quality and how significant will be effect of this reduced modeling quality on the entire backtest results.

The difference in quality can be quite significant if an EA analyzes currency rates by ticks and/or uses stop-loss and take-profit levels. Of course, this effect depends largely on the size and the number of mismatches. If your historical data has only few mismatched bars with one or two pips of difference, then you could probably ignore these errors completely.

How to fix unmatched data error?

So to do with this error? There are three simple ways to work around it:

  1. Delete previous chart history and download it again. All chart history in MT4 is stored inside /history/ and /tester/history/ subfolders of the platform’s data folder. New history files can be downloaded via Tools->History Center menu in MetaTrader 4.
  2. If for some reason, previous method didn’t help, you can try reinstalling your MT4 platform. Just uninstall it and then install it anew (preferably downloading it again from your broker).
  3. Lastly, you can always switch brokers because it may happen so that the broker’s history data is flawed at their MetaTrader server. In this case, the only solution to the unmatched data error is to install MT4 from some other Forex broker as MetaTrader 4 is no longer available for download from MetaQuotes’ website.

You can also read our tutorial on preparing high quality historical data in MetaTrader 4 for your backtests.

If you have your own ideas for dealing with MT4 unmatched data error or if you have some questions about it, feel free to join our forum to discuss this with other traders.

Сообщений: 260

Поблагодарили: 25 раз(а) в 21 сообщениях

Зарегистрирован: 28 апр 2012, 02:43

что означает такая ошибка в тестере, как ее исправить?

2013.10.04 17:24:06 TestGenerator: unmatched data error (high value 1.33600 at 2013.08.23 13:45 is not reached from the least timeframe, high price 1.33580 mismatches)

Сообщений: 260

Поблагодарили: 25 раз(а) в 21 сообщениях

Зарегистрирован: 28 апр 2012, 02:43

Подскажите пожалуйста еще, на сколько существенно когда при открытии ордера выходит, что нет ошибки, но результат не известен. это нужно исправлять в коде или можно оставить так?

Сообщений: 3759

Поблагодарили: 589 раз(а) в 421 сообщениях

Зарегистрирован: 12 окт 2010, 13:50

Two Clok писал(а):что означает такая ошибка в тестере, как ее исправить?
2013.10.04 17:24:06 TestGenerator: unmatched data error (high value 1.33600 at 2013.08.23 13:45 is not reached from the least timeframe, high price 1.33580 mismatches)

Вероятно, при тестировании обнаружено несоответствие данных разных периодов, а эксперт или индикатор обращается к разным таймфреймам. Чтобы такого несоответствия не было, старшие периоды пересчитываются на основе младших. А ещё лучше не обращаться из эксперта, запущенного на конкретном ТФ к каким-либо другим ТФ.

———————————————————————————————-
Собаки лают, караван идёт. Основы Price Action Изображение

Сообщений: 3759

Поблагодарили: 589 раз(а) в 421 сообщениях

Зарегистрирован: 12 окт 2010, 13:50

Two Clok писал(а):Подскажите пожалуйста еще, на сколько существенно когда при открытии ордера выходит, что нет ошибки, но результат не известен. это нужно исправлять в коде или можно оставить так?

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

———————————————————————————————-
Собаки лают, караван идёт. Основы Price Action Изображение

Сообщений: 260

Поблагодарили: 25 раз(а) в 21 сообщениях

Зарегистрирован: 28 апр 2012, 02:43

4x_trader писал(а):

Two Clok писал(а):что означает такая ошибка в тестере, как ее исправить?
2013.10.04 17:24:06 TestGenerator: unmatched data error (high value 1.33600 at 2013.08.23 13:45 is not reached from the least timeframe, high price 1.33580 mismatches)

Вероятно, при тестировании обнаружено несоответствие данных разных периодов, а эксперт или индикатор обращается к разным таймфреймам. Чтобы такого несоответствия не было, старшие периоды пересчитываются на основе младших. А ещё лучше не обращаться из эксперта, запущенного на конкретном ТФ к каким-либо другим ТФ.

Спасибо за ответы. :D А допустим когда идет процесс тестирования, если я сама на графике меняю таймфреймы, это тоже влияет на результаты тестирования и может выходить такая ошибка? Или это только про код?

Сообщений: 16822

Поблагодарили: 970 раз(а) в 816 сообщениях

Зарегистрирован: 14 окт 2011, 16:30

Откуда: Краснодар

Two Clok писал(а):А допустим когда идет процесс тестирования, если я сама на графике меняю таймфреймы

на каком графике? :) на визуализации ты тф не можешь менять ни во время, ни после :)
а торговые графики и тестирование — это разные и не связанные вещи :)

Сообщений: 260

Поблагодарили: 25 раз(а) в 21 сообщениях

Зарегистрирован: 28 апр 2012, 02:43

Безымянный.JPG

кто-нибудь знает от чего такое счастье может появляться?

Сообщений: 3759

Поблагодарили: 589 раз(а) в 421 сообщениях

Зарегистрирован: 12 окт 2010, 13:50

Two Clok писал(а):…кто-нибудь знает от чего такое счастье может появляться?

Я уже писал выше, что старшие ТФ для тестирования должны быть сгенерированы из младшего из доступных, а не просто скачаны…
TestGenerator: unmatched data error (volume limit … at … exceeded) — означает, что не совпадает параметр volume для младших и старших ТФ, т.е. кривые котировки (как обычно…)). Сгенерируйте все старшие ТФ из самого младшего доступного, тогда расхождений и, соответственно, таких ошибок не будет.

———————————————————————————————-
Собаки лают, караван идёт. Основы Price Action Изображение

Сообщений: 260

Поблагодарили: 25 раз(а) в 21 сообщениях

Зарегистрирован: 28 апр 2012, 02:43

4x_trader писал(а):

Two Clok писал(а):…кто-нибудь знает от чего такое счастье может появляться?

Я уже писал выше, что старшие ТФ для тестирования должны быть сгенерированы из младшего из доступных, а не просто скачаны…
TestGenerator: unmatched data error (volume limit … at … exceeded) — означает, что не совпадает параметр volume для младших и старших ТФ, т.е. кривые котировки (как обычно…)). Сгенерируйте все старшие ТФ из самого младшего доступного, тогда расхождений и, соответственно, таких ошибок не будет.

а как их сгенерировать? я не знаю как))

Сообщений: 3759

Поблагодарили: 589 раз(а) в 421 сообщениях

Зарегистрирован: 12 окт 2010, 13:50

Two Clok писал(а):…а как их сгенерировать? я не знаю как))

пересчитать все ТФ.PNG

Если после загрузки минутных котировок повторно нажать «Загрузить», то появится окошко с предложением пересчитать все таймфреймы — нужно ответить «Да».
А вообще, предчувствуя волну новых вопросов, сразу отвечу, что качественное тестирование в МТ4 в принципе невозможно, учитывая отсутствие качественной истории котировок за продолжительный период. Все мучаются, кто как умеет, вот ссылка, которая поможет в этом убедиться…)))

———————————————————————————————-
Собаки лают, караван идёт. Основы Price Action Изображение

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Q1: Solution

You might have already noticed, that your FxMarketEVENTs data will in principle never match the condition:

Bid < DayOpen - StopLossLevel

The anatomy of calculus is following:

/* ----------------------------------------------------------------------------
            ...............dHIGH[1]                        ~ 1.22ooo
           |
           |       ....... dHIGH[0]                        ~ 1.2oooo
           |      |
dOPEN[0]...|..... |                                        ~ 1.18ooo
          [ ]    [ ]
          [ ]    [ ]
          [ ]    [ ]______ dCLOSE[0] _______________ <Bid> ~ 1.12345 _________
          [ ]     |
          [ ]     | 
dOPEN[1] _[ ]     |  ..... dLOW[0]                         ~ 1.1oooo
           |
           |
           | ............. dLOW[1]

------------------------------------------------------------------------------ */
   StopLossLevel   =                  Bid -    Point * StopLoss;
// -------------
// StopLossLevel   ~                  1.12345 - 0.00010;
// StopLossLevel   ~                  1.12335;

if ( Bid     < DayOpen - StopLossLevel ){...}
if ( 1.12345 < 1.10000 - 1.12335       ){...}
if ( 1.12345 <          -0.02335       ){...} // which it NEVER could be

Comparing numbers and using PriceDOMAIN values in XTO requires a bit more care in MQL4.

A good programming practice for safe MQL4 code-execution recommends:

// StopLossLevel   =                  Bid - ( _Point * StopLoss ); Calculus-safe
// StopLossLevel   = NormalizeDouble( Bid - ( _Point * StopLoss ),
//                                    _Digits                      XTO-safe
                                      );

Epilogue

Q2 has been covered in another answer.

Adding a few cents here, to the reasoning provided there, the profitability is heavily dependent on many attributes.

So as to illustrate the industry experience, let me present you a view into a sensitivity of profit, visually reduced into a single-dimension graph:

enter image description here

You may observe configurations of the very same algorithm to provide yields of about +1500% profits altogether with settings, that do not allow to produce, with the very same behaviour, more than about +20% .. +80%.

It is common to have pretty high-dimensionality parametrisation spaces in quant-modelling, which do not have any simple projection into 2D, 3D, 4D or 5D display-able graphics.

enter image description here

Thus, without thorough quantitative data, any statement about any strategy profitability is, paraphrased the famous Deming quote, «just another opinion«.

Рекомендуемый ДЦ - Alpari !

На прошлом уроке Язык MQL — Урок 6 «эксперт Hedge Hog» мы написали советник Forex торгующий по стратегии Hedge Hog. Сегодня займемся его тестированием и оптимизацией в Metatrader.

Прежде чем использовать любой советник (эксперт) на реальном счете форекс необходимо убедиться в его работоспособности и разумеется — прибыльности.

Для этого необходимо выполнить следующие действия:
1. Проверить его на тестере стратегий MT4
2. Провести оптимизацию советника и проверить ее результат
3. Проверить, как работает советник форекс на демо-счете
4. Проверить советник на центовом счете форекс

Пункты 1,2,4 обязательны к выполнению! Пункт 3 желателен, но необязателен. Дело в том, что проверка на демо-счете и центовом счете занимают много времени. В отличии от тестера стратегий Metatrader 4 — торговля на них идет в реальном режиме времени. Поэтому один из этих этапов, начинающие трейдеры форекс частенько пропускают. Я настоятельно рекомендую НЕ пропускать 4 пункт — тестирование советника форекс на центовом счете. Советник может прекрасно работать на тестере и демо счете, а на реальном, как не странно, не торговать вовсе или «слить» ваш депозит. На реальном счете (центовый счет — это реальный счет с минимально разрешенными суммами депозита) присутствуют такие моменты, которых нет в тестере или на демо счете. Это отказы в обслуживании брокером форекс, проскальзывание цен и т.д.

Итак, начнем по порядку.

Запускаем тестер стратегий MT4 Запуск тестера , выбираем наш советник «expert1». Выбираем символ «EURUSD» как того требует стратегия Hedge Hog. Модель рекомендую выбрать «Все тики» как наиболее точный метод тестирования. Указываем интервал дат истории для тестирования. Я указал за декабрь месяц 2009 года. Выбираем Период на котором будет работать наш советник. Я выбрал часовой, хотя для нашего советника это не важно.

Настройки тестирования

Нажимаем кнопочку «Старт» и ждем окончания процесса тестирования советника.
У меня советник не совершил ни одной сделки. А в журнале появилось много ошибок. Дело в том что я использовал сервер Алпари для тестирования. У них 5 значные котировки, а стратегия «Hedge Hog» писалась для 4 значных котировок.

Это легко исправимо. Достаточно тейкпрофит увеличить в 10 раз (вместо 14 пунктов указать 140 пунктов). Нажимаем кнопочку «Свойства эксперта» и в появившемся окошке изменяем.

Свойства советника

Нажимаем «OK» и запускаем тестирование еще раз.
Теперь появились сделки. Открываем график:

График тестирования

Что-то не радует меня эта картинка. Да и какие-то странные ошибки в журнале еще до запуска тестирования советника. Что же не так? Ответ прост: в истории терминала Metatrader есть пропуски котировок. Терминал у меня запущен не постоянно, поэтому часть истории потерялась.

Необходимо подгрузить историю. Для этого нажимаем кнопочку F2. В открывшемся окне выбираем интересующую нас валюту:

Подгрузка котировок

И замечаем что в заголовке окна указана «USDCHF» и котировки явно не «EURUSD». Несколько раз щелкаем мышкой на таимфрейм «1 Минута» и высвечивается:

Котировки "EURUSD"

Вот теперь все нормально. Нажимаем кнопочку «Загрузить» и ждем пока подгрузится история. После подгрузки нажимаем еще раз «Загрузить»

Диалог пересчета котировок

Соглашаемся. После пересчета закрываем окно подгрузки истории и запускаем тестирование еще раз.

График тестирования

График не изменился. Значит проблема не в котировках. Ошибок в журнале тоже нет

Журнал тестирования

Проверим — а правильно ли открываются сделки в нашем советнике форекс:

Результаты тестирования

Видим что советник торгует строго по стратегии. Сделки открываются в 00:00, а убыточные закрываются через 48 часов. Лот тоже удваивается при убыточных сделках.

Попробуем оптимизировать советник форекс (подобрать оптимальные параметры для торговли, при которых прибыль максимальна). Помните что мы время открытия ордеров вынесли во внешний параметр? Сейчас нам это пригодится! Нажимаем кнопочку «Свойства эксперта» и задаем параметры оптимизации:

Параметры советника для оптимизации

Кроме этого указываем тестеру стратегий Metatrader 4 что мы хотим оптимизировать (галочка «Оптимизация»)

Включение оптимизации

Нажимаем кнопочку «Старт» еще раз. Оптимизация занимает много времени. Можно пока сходить выпить чашечку «кофе».

После завершения открываем результаты оптимизации и смотрим на результат:

Результаты оптимизации

Вот оно! При открытии ордеров в 18:00 получается минимальная просадка и максимальная прибыль. Проверим. Выделяем эту строчку, нажимаем на ней правую кнопочку мышки и говорим «установить входные параметры». Галочка «Оптимизация» у нас отключена. Запускаем тестирование с новыми параметрами.

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

График тестирования

Правда красиво?

Но как убедится что наш советник и дальше будет показывать такой же результат?

Я задавал интервал тестирования советника Hedge Hog — декабрь 2009. Попробуем теперь прогнать советник на будущих данных. Зададим интервал с 01.01.2010 по сегодняшний день.

Результат тестирования получается следующий:

Проверка оптимизации

Оказываются просадки при данных параметрах, которые мы подобрали,  могут быть достаточно большими — это называется мы попали в «ловушку оптимизации». И они бы случились с нашим депозитом на реальном счету…

Конечно можно проверить остальные результаты оптимизации. Можно оптимизировать тейк-профит и стоп-лосс. Можно протестировать советник на других валютах.

Рекомендую это сделать вам, в качестве домашнего задания, самостоятельно.

Вывод: Советник Hedge Hog — рабочий и потихоньку зарабатывает. Значит и стратегия Hedge Hog является прибыльной. Но такие просадки не каждый сможет перенести. Лично я не рискну бы торговать таким советником форекс на реальном счету. Необходимо придумать какие то фильтры для уменьшения просадок в данном советнике форекс !

Советы: Период для тестирования и оптимизации советника желательно (и даже необходимо) выбирать гараздо больше, чем мы выбрали (рекомендую — от одного года). Модель тестирования и оптимизации новичкам советую использовать «Все тики». После оптимизации советника форекс, обязательно проверяйте результат на будущих данных. Не забывайте подгружать историю котировок в терминал Metatrader 4.

Если Вы хотите изучать язык MQL или вам понравилась данная публикация — Вы можете подписаться на получение новых материалов сайта mql4you.ru по

RSS

или по e-mail:

Понравилась статья? Поделить с друзьями:
  • Unmarshalling request error детали employment must be present at request
  • Unmarshalling error unexpected element uri
  • Unmarshalling error for input string
  • Unmanaged exception 0xc0000005 vegas pro как исправить
  • Unlocking please wait no username error code 63 unlock failed перевод