Совершенно разные результаты у одного и того же эксперта

 

Я очень, очень озадачен результатами, которые я получаю от бэктестера metatrader. Я надеюсь, что кто-то еще имел подобный опыт и может иметь представление о том, что может быть причиной моих результатов.

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

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

Единственное, что я нашел, что может быть другим, это разброс. Насколько я могу судить, MT4 предполагает, что спред на протяжении всего бэктестинга был таким же, как и сейчас. Довольно странная "особенность" системы, но не объяснение моих наблюдений, поскольку при узком спреде сегодня результаты были посредственными, в то время как при чуть более широком спреде вчера результаты были невероятно хорошими.

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

Вот графики посредственных результатов и невероятно хороших результатов для бэктестов с тем же экспертом, тем же периодом (с 2011/1/1 по 2011/7/26) и теми же настройками. Сделки, как правило, открыты в течение нескольких часов или дольше и не используют тейк-профиты или стоп-лоссы (все входы и выходы основаны только на состоянии индикаторов). Количество сделок в двух прогонах - 211 и 173. На втором графике есть убытки, но коэффициент прибыли очень высок.


 
Elroch:


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


Загрузите данные снова, отключите терминал (я делаю это, входя в систему с недействительным номером счета), удалите историю и данные, уже сохраненные в терминале, импортируйте данные, M1, я полагаю? Сделайте другие периоды, которые вам нужны, используя конвертер периодов и импортируйте их ... проверьте, что у вас есть данные, которые вам нужны для периода даты, который вы хотите запустить ... запустите свой советник.
 
Спасибо, но я уже не раз собирал данные из 10 лет загруженных 1-минутных данных так, как вы предлагаете, много раз перезапускал программу, сохранял точный советник и настройки и все равно получал совершенно другие результаты при последующем запуске. Я все еще в недоумении.
 

Elroch:

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

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

И вот сегодня снова результаты неожиданно стали превосходными.

Тестер использует КУРРЕНТНЫЙ спред. Ваш советник очень чувствителен к изменениям.
 
WHRoeder:
Тестер использует КУРРЕНТНЫЙ спред. Ваш советник очень чувствителен к изменениям.

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

Если ваши входы и выходы действительно основаны только на значениях индикатора, вы торгуете умеренными лотами и зарабатываете хороший средний доход в пунктах/торговля, то остается не так много вариантов:

а) испортить файл истории

б) включено что-то вроде случайности

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

г) могли измениться настройки брокера (маловероятно).

Почему бы не запустить тест в режиме каждого тика? Это покажет вам качество данных.

 

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

 

Спасибо за интересные замечания, zzueg.

(a) кажется неправдоподобным, что поврежденный файл истории может объяснить последовательность результатов бэктестинга с одним и тем же советником: т.е. посредственные результаты, превосходные результаты, посредственные результаты и такие же превосходные результаты за период с пятницы прошлой недели, за это время я сделал свежие установки metatrader, восстановил все данные из загруженных предположительно высококачественных 1-минутных данных и т.д.

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

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

(d) Да, не уверен, что брокер имеет значение помимо спреда. Конечно, это все бэктесты, а не реальная торговля, и данные были построены в основном из загруженных 10 лет 1-минутных данных.

(e) Поскольку эксперт входит и выходит из позиций на открытии бара и не использует стопы или цели прибыли вообще (во всяком случае, в исследуемой версии), я понимаю, что единственные значения, которые могут повлиять на результаты - это открытие, high, low и закрытие баров на 5-минутных и более высоких графиках (на самом деле, бывает, что даже закрытие не имеет значения: используется несколько вариантов одного и того же индикатора, и они используют (H+L)/2 в качестве точки данных, а вход и выход происходят на открытии бара, поэтому данные открытия и спред также имеют значение. Открытие или закрытие сделки зависит от значений индикаторов на предыдущих барах, а не на текущем баре.

...Но для полноты картины я сделал прогон со "всеми тиками". Результаты были практически идентичны предыдущим, с небольшой разницей, объясняемой тем, что последняя сделка была закрыта на последнем 1-минутном баре, а не на последнем 5-минутном.


SDC, я не могу быть уверен, что каждый сгенерированный тик одинаков, но имейте в виду моменты, которые я сделал в ответ на zzueg в (e) выше.
 

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

Пробелы в истории очень маловероятны, так как они не объяснили бы такую разницу со стратегией, основанной на индикаторах.

У меня были похожие проблемы, только с поврежденными данными, так как мой терминал всегда находится в автономном режиме, я больше не сталкивался с подобным.

По поводу глобальных переменных я имел в виду: есть ли у вас в коде что-то вроде GlobalVariableGet(), эти переменные не ограничиваются тестовым окружением.

Наконец, чтобы спросить всех: есть ли ошибки в логе?

@SDC, да, псевдо-тики генерируются одинаково для каждого прогона. По моему опыту, точность не достигает 90%, но все равно всегда одинаково.

 

Еще раз спасибо за ваши наблюдения. Сейчас я нахожусь в интересной ситуации, когда две установки metatrader дают два чрезвычайно разных набора результатов (даже когда я копирую советника и настройки прямо из одной в другую и запускаю тестер стратегий на обеих. Это указывает на данные, но все же очень трудно понять, как это можно объяснить по обсуждаемым причинам. Мне интересно, какой лучший способ посмотреть, какие различия могут быть.

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

В моем коде нет ничего похожего на GlobalVariableGet(). Советник использует 5 копий одного пользовательского индикатора на 4 разных таймфреймах, причем одна из них имеет параметры, отличные от остальных.

 

Я нашел то, что может быть решающим доказательством, но я не очень понимаю его значение.

На установке, которая давала посредственные результаты, я вышел из соединения с реальным денежным брокерским а/к и снова вошел в систему с тренировочным а/к того же брокера. После этого (и ничего другого) тестер стратегий дал такие же впечатляющие результаты, как и другая копия metatrader (запущенная на том же тренировочном брокерском а/к). Кстати, брокер - Oanda.

Я не уверен, как клиент metatrader обрабатывает исторические данные, когда он переключается между разными а/к, но тот факт, что все старые данные поступают от тех же загруженных 1-минутных данных, а не от брокера, делает для меня очень трудным понять, что здесь происходит (сделки в начале года намного лучше в бэктесте с подключением к тренировочной а/к, чем когда есть подключение к реальной а/к).

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