И правда тестеру нельзя верить!

 
На форумах много пишут о том, что тестер в MT4 корявый и ему нельзя верить. Сегодня провел элементарный тест и получил неутешительные результаты :(
Параметры тестирования: EURUSD, M15, Все тики (на основе всех наименьших....)
Цель тестирования: Сравнить количество тиков, генерируемых тестером, с объемом в единицу времени (т.к. объем в MT4 и есть количество тиков в единицу времени). За единицу времени были взяты 24 часа
Код советника.
int volume=0;
int init()
  {
   volume=0;
   return(0);
  }
int deinit()
  {
Print("Calculated Volume="+volume);
   return(0);
  }
int start()
  {
   volume=volume+1;//volume++;
   return(0);
  }


получены следующие результаты,
где:
Date - период тестирования
V(D1) - показания встроенного индикатора Volumes на D1
Ticks - тиков подсчитано экспертом
Report - смоделировано тиков из вкладки "Отчет" по утверждению тестера :)
% = (<Тиков посчитано экспертом> / <Volume(D1)> * 100) - процент "подсчитанных" тиков от реального числа тиков :(

Date	V(D1)	Ticks	Report	%
30.12.05	7655	2782	19126	36,34
01.01.06	0	0	16428	#### (деление на 0)
02.01.06	62	59	16524	95,16
03.01.07	5224	2648	19005	50,69
04.01.07	5343	3175	19534	59,42
05.01.08	4387	2664	19019	60,72
05.01.06	4508	2424	18769	53,77


Итак:
1) Количество генерируемых тестером тиков за весь тестируемый период равно 59,35% от реального количества. И это при том, что имея только значения Volumes, "генератор тиков" тестера можно запрограммировать так, чтобы он на все 100% отрабатывал количество тиков. Разработчики наверное скажут: "Так и должно быть! Тестер специально оптимизирован таким образом чтобы тестирование выполнялось быстрее!" или еще что-нибудь в таком же духе. Но экспертописателям не нужно быстрее, им нужны тики и столько, сколько их было в истории. Ни больше, ни меньше.
2)Совершенно не понятно что за цифры отображаются в параметре "Смоделировано тиков" на вкладке "Отчет". Единственное число, которое мне о чем-то говорит, "16428" от 01.01.06 - у меня такое же количество баров в истории. Совершенно непонятно почему "Бары в истории" складываются с тиками
3)Гоните в шею тестеров, которые тестировали тестер :)
4)Дальше тестировать смысла нет!
5)Буду тестировтаь стратегию в On-Line, чего и другим желаю

 

5)Буду тестировтаь стратегию в On-Line, чего и другим желаю
Через год-другой, если еще не бросите заниматься стратегиями, обязательно перечитайте сегодняшний пост. Веселье на весь день будет обеспечено. =)
 
Подсчитали среднее количество замеров(именно замеров, а не саму температуру!) температуры по больнице за несколько дней, но не поняли сути и сделали неверные выводы. Кстати, а зачем выходные новогодние дни то взяли?

Посмотрим на более детальные и визуально воспринимаемые данные.
Вот смоделированный на основе М15 и всех тиков час 18 января 2006 года с 10:00 до 11:00



Для моделирования берутся данные M5 и M1. Вот график М1, на основе которого делалость моделирование:



При моделировании M15 также моделируются и объемы, но они идут дискретно с определенным (не всегда точным) шагом, а не стабильно +1, +1, +1. То есть, в какой-то момент прибавляется 3, в какой то момент 2.

Strator считает, что эксперт в тестировании вызывается на каждый "объемный" тик и совершенно не принимает во внимание, что моделирование идет на основе минутных данных.

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

Зная, что снизу точность моделирования ограничена минутками(это уже отличное качество!), а не тиками, можно легко понять мысль о дискретном изменении объемов.

Тестер в режиме потикового моделирования и при наличии графиков М1 отлично справляется с моделированием и тестированием.
Практически - это один из самых лучших тестеров стратегий, что есть на массовом рынке.

В качестве отступления от темы тестера MetaTrader:
Есть общая проблема: не все тратят время и силы на углубленное понимание тестирования стратегий. Многие находятся в плену своих собственных представлений о рынке и возможностях тестирования. Гораздо проще бывает высказаться "это не работает, глючит, все неправильно" (особенно странно выглядит на фоне чужих трудов в этой области, но прокатывает!) вместо того, чтобы разобраться в деталях.

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

От такой реальности становится уже не так интересно. Но душа требует заполнения пустоты!
И тут часть "старых" трейдеров вспоминает (а "молодые" слушают/читают в форумах их боевые рассказы о борьбе с фидами и настройками) старые информационные (без трейдинга) программы, которые тоже имели тестеры. И что в них все пучком. Времени (да и возможности) самостоятельно проверить нет, поэтому просто верят. Надо же во что-то верить?

Жалко только, что в тех программах о реальности даже и говорить не приходится. Реального трейдинга и исполнения то нет!
И язык программирования далек от управления позициями и вообще не знает о том, что сделка может не пройти. Чуть не забыл - им тоже нужна как можно более детализированная история :) К чему бы это?

Определенная часть программистов(которым море по колено, но мы сами такие же), заявляют "ваш тестер плохой, мы написали в 100 раз лучше". Но они, потратив несколько месяцев на работу и вникнув в сложности и особенности моделирования и тестирования, не хотят признаваться в том, что все совершенно не так, как казалось раньше. И что их тестер даже рядом не стоял с тестером, который они пару месяцев назад поливали грязью.
 
"Мне мясо положено!
Положено - ешьте.
Но мне мясо не положено
Не положено - не ешьте" (с) Городок


Date - период тестирования
V(D1) - показания встроенного индикатора Volumes на D1
Ticks - тиков подсчитано экспертом
Report - смоделировано тиков из вкладки "Отчет" по утверждению тестера :)
% = (<Тиков посчитано экспертом> / <Volume(D1)> * 100) - процент "подсчитанных" тиков от реального числа тиков :(

Date V(D1) Ticks Report %
30.12.05 7655 2782 19126 36,34
01.01.06 0 0 16428 #### (деление на 0)
02.01.06 62 59 16524 95,16
03.01.07 5224 2648 19005 50,69
04.01.07 5343 3175 19534 59,42
05.01.08 4387 2664 19019 60,72
05.01.06 4508 2424 18769 53,77

Итак:
1) Количество генерируемых тестером тиков за весь тестируемый период равно 59,35% от реального количества. И это при том, что имея только значения Volumes, "генератор тиков" тестера можно запрограммировать так, чтобы он на все 100% отрабатывал количество тиков. Разработчики наверное скажут: "Так и должно быть! Тестер специально оптимизирован таким образом чтобы тестирование выполнялось быстрее!" или еще что-нибудь в таком же духе. Но экспертописателям не нужно быстрее, им нужны тики и столько, сколько их было в истории. Ни больше, ни меньше.


Насколько я понял из манифеста, то все наоброт - количество тиков , смоделированных экспертом превышает реальное количество тиков :) Ужас.
 
Загляни сюда "Strategy Tester: режимы моделирования при тестировании" , думаю поймешь в чем дело.
 
От такой реальности становится уже не так интересно. Но душа требует заполнения пустоты!

Абсолютно согласен.
По моим наблюдениям подавляющая часть юзеров появляется на форумах ( не только здесь, а и вообще где бы то ни было, в т.ч. и вне Интернет) с одной единственной целью: удовлетворить своё чувство собственной важности. Причём, что самое интересное, практически никто из них не отдаёт себе отчёт в собственных побудительных мотивах. Другие, обычно старше и опытней, пребывают в счастливом неведении относительно своих возможностей, но по крайней мере действуют осознанно.

Где-то среди этой серой массы находимся и мы:)
 
А не убрать бы из тестера фрактальную интерполяцию? Или хотя бы галку сделать, чтобы отключать. Тики брать с наименьшего бара. Очевидно, что любой кто заинтересован в точности результатов тестирования загрузит минутки. Зачем моделировать развитие цены за минуту? Делать в логической последовательности: сначала проверить по цене открытия, затем посмотреть что произойдет по минимуму и максимуму и выбрать из двух менее выгодный результат. Если, например есть сигнал к открытию и на минимуме и на максимуме, то если покупать, то с ценой максимума, если продавать - с ценой минимума. Если сигнал к закрытию и на минимуме и на максимуме, то длинные закрывать на минимуме, короткие на максимуме. Если на минимуме срабатывает стоп лосс, а на максимуме тейк профит (если конечно такое может произойти на минутках (однако как говорил Д. Мерфи, если что-то может произойти, оно обязательно произойдет)), то закрывать по стоп-лоссу. И никакого моделирования, только с реально известными ценами!

Может я пока еще не разобрался с тестером серьезно, но доверия он действительно не вызывает. Эта замороченность с датами тестирования, размером загруженных в чарт данных...... персчетом.....
 
А не убрать бы из тестера фрактальную интерполяцию? Или хотя бы галку сделать, чтобы отключать.

А кто мешает тестировать на минуткахв режиме "по ценам открытия", как раз без фрактальной интерполяции. Просто в параметрах эксперта сделай что-то типа string ЭтотЭкспертПериода = "Н1", преобразовавай введенный параметрт в значение int ActiveExpertPeriod = StrToPeriod(ЭтотЭкспертПериода), и далее в эксперте используй вместо функции Period() значение ActiveExpertPeriod. И будет тебе счастье, по крайней мере меня устраивает. Кроме этого такой подход позволяет не боятся случайного переключения таймфрейма на торгующем графике.
 

А кто мешает тестировать на минуткахв режиме "по ценам открытия",


Ух ты! Наверно вариант. Надо будет попробовать.

smazovec, ты имеешь ввиду использовать ActiveExpertPeriod при вызове индикаторов? Ставить его в качестве воторого параметра? Например iMA(NULL,ActiveExpertPeriod....?

Если так, то возникает другая проблема - последний бар с других таймфреймов не моделируется тестером, так что результаты тестирования будут сильно отличаться от реальных результатов, так как тестер будет как бы в будущее заглядывать - на минутках час только начался, а индикаторы будут рассчитываться по времени на конец часа. Ну эт если я правильно понял о чем ты.
 
А я как раз из этих нескольких трейдеров "Strategy Tester: режимы моделирования при тестировании"
Некоторые трейдеры не желают зависеть от особенностей внутрибарного моделирования и пишут экспертов, которые торгуют на сформировавшихся барах.


А по части использования ActiveExpertPeriod ты понял правильно.

А где прочитать про
последний бар с других таймфреймов не моделируется тестером

В статье "Особенности тестирования" есть только указание на
Нулевой бар другого периода по тому же самому тестируемому символу моделируется приблизительно

Open = корректный Open, Close = корректный Close, Low = min (Open,Close), High = max (Open,Close), Volume = итоговый Volume (неверный)
 
А где прочитать про
последний бар с других таймфреймов не моделируется тестером



Проверил это дело, вот что получилось:

"Тестирование" (в самом конце страницы)
Причина обращения: