Управляемость условий backtest'а.

 

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

 
И как всегда тестер виноват, а кодер ни при чём )))
 
evillive:
И как всегда тестер виноват, а кодер ни при чём )))


Дык, а причём тут кодер ? Допустим: эксперт сливает депозит. Ничего не меняем, запускаем эксперт повторно. Ожидаемый результат: эксперт должен слить так-жэ, причём во всех нюансах. Даже, если в эксперте баг, он должен в одинаковых условиях одинаково являться ? На деле этого не происходит и расхождения результатов огромны. Иногда эксперт проходит тест полностью, иногда сливает на половине истории. Динамика депозита показывает просадки в разные периоды, коррелирующие между собой - тут всё-таки есть какая-то доля исторической истины. В полностью управляемых условиях такого не должно быть. Значит, в тестере есть скрытый случайный параметр(ы) ? Я не могу гарантировать, что теория и код истины(куда уж теперь, когда открылся такой баг). Но то: что код во всех случаях теста один и тот-жэ, и историю котировок, и метод тестирования я не менял это мной 100% контролируется. Щас пробую тестить на разных скоростях - результат пока так-жэ не стабилен.

p.s. терминал у меня от Forex4You.

 
unused_login:


p.s. терминал у меня от Forex4You.


зафиксируйте спред.

ПС

жэ  пишется через е, а не э.  и дефис не ставится

 
sergeev:

зафиксируйте спред.

ПС

жэ  пишется через е, а не э.  и дефис не ставится


Подскажите плиз, как зафиксировать спред. Я что-то ни разу не находил такую опцию. Есть в одном из окон перечисление условий(спред и комиссии, маржин кол..), но как там менять ?

 

Тут вот что пока получается: Прогнав эксперта и проанализировав результаты, обычно я корректирую параметры или даже код и прогоняю повторно, чтоб убедится в адекватности влиянии параметров. В этом есть, так называемая "подгонка под историю", но это эффективно решает исследовательскую задачу. К тому жэ, насколько я правильно понимаю, генетический алгоритм самого тестера основан на том жэ принципе: прогон разных вариантов эксперта в неизменных условиях. Потому, что подразумевается единственность истории.. У этого есть известная философии предпосылка, что истина - т.е. объективная реальность - одна. И я думаю, что большинство испытателей экспертов действую в принципе так жэ, но с вариациями. Однако то, что к моделируемой объективной реальности может быть грубо примешано ложное толкование - типа фрактальных алгоритмов генерации тиков - меня всегда напрягало, а теперь напрягает особенно сильно. Всё таки ребята, делающие эту генерацию, я думаю граалем не обладают :) Поэтому я использую модель "По ценам открытия". И хотелось бы иметь такой тестер, который просто прогоняет свечную историю через движок ордеров или что-то в этом роде. Может кто знает, как в MT4 можно сделать такую примитивную конфигурацию ?

 
unused_login:


Подскажите плиз, как зафиксировать спред. Я что-то ни разу не находил такую опцию. Есть в одном из окон перечисление условий(спред и комиссии, маржин кол..), но как там менять ?

 

Тут вот что пока получается: Прогнав эксперта и проанализировав результаты, обычно я корректирую параметры или даже код и прогоняю повторно, чтоб убедится в адекватности влиянии параметров. В этом есть, так называемая "подгонка под историю", но это эффективно решает исследовательскую задачу. К тому жэ же, насколько я правильно понимаю, генетический алгоритм самого тестера основан на том жэ же принципе: прогон разных вариантов эксперта в неизменных условиях. Потому, что подразумевается единственность истории.. У этого есть известная философии предпосылка, что истина - т.е. объективная реальность - одна. И я думаю, что большинство испытателей экспертов действую в принципе так  жэ же, но с вариациями. Я советую всем обратить внимание на повторяемость экспериментов. Однако то, что к моделируемой объективной реальности может быть грубо примешано ложное толкование - типа фрактальных алгоритмов генерации тиков - меня всегда напрягало, а теперь напрягает особенно сильно. Всё таки ребята, делающие эту генерацию, я думаю граалем не обладают :) Поэтому я использую модель "По ценам открытия". И хотелось бы иметь такой тестер, который просто прогоняет свечную историю через движок ордеров или что-то в этом роде. Может кто знает, как в MT4 можно сделать такую примитивную конфигурацию ?


Жэ - это гравитационная постоянная, прочитанная по-русски? Или ускорение свободного падения?

Спред в F4Y и так постоянный, но его можно в тестере задать вручную, эта опция так и называется - спред и расположена она под периодом, очень сложно её не заметить. 


А результаты тестирования сильно зависят от алгоритма советника, генетический алгоритм помогает только в ускорении оптимизации (может вы каждый раз оптимизируете, а называете это тестированием?). При тестировании простейшего советника из комплекта поставки МТ4 - "Moving Average" результаты всегда совпадают.

 
evillive:

Жэ - это гравитационная постоянная, прочитанная по-русски? Или ускорение свободного падения?

Спред в F4Y и так постоянный, но его можно в тестере задать вручную, эта опция так и называется - спред и расположена она под периодом, очень сложно её не заметить. 


А результаты тестирования сильно зависят от алгоритма советника, генетический алгоритм помогает только в ускорении оптимизации (может вы каждый раз оптимизируете, а называете это тестированием?). При тестировании простейшего советника из комплекта поставки МТ4 - "Moving Average" результаты всегда совпадают.




"Жэ" - это моя маленькая странность :)) По-поводу алгоритма советника, я никак не могу понять из-за чего возникает вариация.. А может это быть из-за лагов пользовательского интерфейса ? Индикаторы, насколько я знаю, запускаются в потоке интерфейса. А советник там жэ ? У меня код анализа истории в индикаторе и три основных параметра передаются в советник, через графический объект "Fibo". Если советник и индикатор запускаются в разных потоках, тогда имеет смысл попробовать перенести анализ истории прямо в советник.
 
unused_login:

"Жэ" - это моя маленькая странность :)) По-поводу алгоритма советника, я никак не могу понять из-за чего возникает вариация.. А может это быть из-за лагов пользовательского интерфейса ? Индикаторы, насколько я знаю, запускаются в потоке интерфейса. А советник там жэ ? У меня код анализа истории в индикаторе и три основных параметра передаются в советник, через графический объект "Fibo". Если советник и индикатор запускаются в разных потоках, тогда имеет смысл попробовать перенести анализ истории прямо в советник.

лагов нет.

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

- выставить дату начала тестирования

- убедиться в наличии исторических данных от этой даты на тестируемом таймфрейме (периоде) 

- на графике правой кн.мыши "обновить" 

Тестируем и имеем счастье)))) 

 
_new-rena:

лагов нет.

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

- выставить дату начала тестирования

- убедиться в наличии исторических данных от этой даты на тестируемом таймфрейме (периоде) 

- на графике правой кн.мыши "обновить" 

Тестируем и имеем счастье)))) 


Я так и делаю. Кстати, я не согласен, что дата начала тестирования должна быть одна и таже(хотя у меня она строго одна и таже, ради чистоты эксперимента). Гипотетически, при неизменности советника(индикатора), просадки депозита - по которым я и смотрю идентичность результатов - должны быть строго привязаны к историческим датам. Возможно, начало тестирования показывает разные результаты, из-за того, что анализ истории имеет некоторую глубину. Ведь анализируется не вся история и не мгновение, а определённый временной промежуток - фокус анализа. Однако когда фокус анализа будет полностью занят историческими данными - результаты анализа повторяющихся тестов должны совпадать на одних и тех жэ датах, при неизменности истории котировок и неизменности анализирующего кода. И соответственно должны совпадать даты торговых сигналов на открытие и закрытие ордеров - и как результат совпадать даты просадки депозита. По-моему тут всё логично. Проблемы с открытием и закрытием ордеров я исключил, используя отложенные ордера с выставленными стопами и проскальзывание при закрытии аж в три спреда(slippage=spread*3=9, при spread=3). Хотя на backtest'ах нет проскальзывания, но я всё-ровно его предупредил. Из рассуждений напрашивается сделать логи чисто индикатора и сравнить.. Этим я сейчас и займусь. Вопрос повторяемости экспериментов пока оставляю открытым. Пишите у кого какие есть идеи.

 
Возможно в коде так или иначе используется ф-я 
MathRand( ), или в вызываемых советником индикаторах. 
 
makskeep:
Возможно в коде так или иначе используется ф-я 
MathRand( ), или в вызываемых советником индикаторах. 


Нет, проблема оказалась не в коде. И не тестере. Я сгенерил лог индикатора и обнаружил в потоке внутренних данных какие-то слабые изменения случайного характера. Похоже, что тенденция недостаточно абстрагирована: в потоке данных очевидна тенденция, но она выражена в случайных числах, а не монотонна(кстати, так жэ как в рынке: тенденция лишь угадывается в случайных движениях цены). И вот эта флуктуация приводила к случайным срабатываниям системы ордеров, однако так жэ несущих в себе общую тенденцию. В результате: обнаружение торговой системой по-сути одних и тех жэ периодов, но никогда не совпадающее в деталях прохождение этих периодов. В принципе, такого эффекта я и добивался для начала: чтоб ордера выставлялись в благоприятный период рыночной конъюнктуры не имеющий чётких временных границ или ещё каких-то однозначных признаков. Ведь в реальности так и бывает: никогда точно не знаешь, когда везение начнётся и закончится. Торговая система должна быть рассчитана на неожиданности, не нарушающие общих принципов. Но для меня стало неожиданностью, что "рандомность" системы оказалась абсолютной, неповторимой экспериментально :) Я провёл пару десятков прогонов и не получил ни одного повтора - я превзошёл собственные ожидания и даже не сразу понял это. Повторяемость результатов мне тоже удалось получить. Я временно прописал порог срабатывания системы, отсекающий флуктуацию и сразу жэ на двух прогонах получил абсолютно одинаковые просадки, количество ордеров и конечную прибыль. Вывод: источник рандома сам рынок + моё недостаточное понимание предмета.

Вопрос повторяемости тестов считаю исчерпанным ! Спасибо за внимание, коллеги :)