Среда, 19.12.2018, 13:05
Игрушки от Vinin
Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Советники и индикаторы » Игрушки » Автоматическая оптимизация с выбором оптимальных параметров (В названии все есть)
Автоматическая оптимизация с выбором оптимальных параметров
vininДата: Понедельник, 23.11.2009, 08:11 | Сообщение # 1
Admin
Группа: Администраторы
Сообщений: 299
Репутация: 12
Статус: Offline
В последнее время все чаще и чаще встает вопрос автоматической оптимизации.
В МТ4 для этого есть практически все.
Особо нетерпеливых отправляю к источнику. Справка к терминалу - Сервис - Конфигурация при старте
Во вложении находится советник (модифицированный MACD Sample), set файл, файл конфигурации и небольшой батничек для запуска терминала с нужной конфигурацией.
После окончания работы оптимизатора формируется стандартный отчет.
Параметры используемые в файле конфигурации

Настройки запуска тестера стратегий
TestExpert - имя эксперта, который должен быть запущен на тестирование. Если этот параметр отсутствует, то никакое тестирование не запускается.

TestExpertParameters - имя файла с параметрами (каталог \tester). Такой файл можно создать в окне свойств тестируемого эксперта, нажав кнопку "Входные параметры - Сохранить" Обычно используется для хранения параметров, отличающихся от умолчательных. Другие параметры тестируемого эксперта из вкладок "Тестирование" и "Оптимизация" (а также из вкладки "Входные параметры" в случае отсутствия данного параметра) заполняются значениями, сохраненными автоматически в файле \tester\[имя эксперта].ini после последнего тестирования.

TestSymbol - название инструмента, на данных которого должно производиться тестирование эксперта. В случае отсутствия этого параметра используется последнее использованное в тестере значение.

TestPeriod - период графика (M1, M5, M15, M30, H1, H4, D1, W1, MN). При отсутствии данного параметра используется H1.

TestModel - 0, 1 или 2 в зависимости от модели тестирования (Все тики, Контрольные точки, По ценам открытия). В случае отсутствия этого параметра используется значение 0 (Все тики).

TestOptimization - включить/выключить оптимизация. Принимаемые значения "true" или "false". В случае отсутствия этого параметра используется значение "false".

TestDateEnable - включить/выключить опцию "Использовать даты". Принимаемые значения "true" или "false". В случае отсутствия этого параметра используется значение "false".

TestFromDate - дата начала диапазона тестирования в виде YYYY.MM.DD. В случае отсутствия этого параметра подразумевается 1970.01.01.

TestToDate - дата конца диапазона тестирования в виде YYYY.MM.DD. В случае отсутствия этого параметра подразумевается 1970.01.01.

TestReport - имя файла отчета тестирования. Файл будет создан в директории клиентского терминала. Можно указывать относительный путь, например: tester\MovingAverageReport". Если в имени файла отчета не указано расширение, то будет подставлено расширение ".htm". В случае отсутствия данного параметра отчет тестирования формироваться не будет.

TestReplaceReport - разрешить/запретить повторную запись файла отчета. Принимаемые значения "true" или "false". Если указано значение "false" и файл отчета с таким именем уже существует, то к имени файла отчета будет добавлен порядковый номер в квадратных скобках. Например, "MovingAverageReport[1].htm". В случае отсутствия этого параметра используется значение "false".

TestShutdownTerminal - разрешить/запретить вылючение терминала после тестирования. Принимаемые значения "true" или "false". В случае отсутствия этого параметра используется значение "false". Если в процессе тестирования пользователь нажал кнопку "Стоп", то значение этого параметра сбрасывается в "false", так как пользователь принял управление на себя.

Пример:

; start strategy tester
TestExpert=Moving Average
TestExpertParameters=ma0.set
TestSymbol=EURUSD
TestPeriod=H1
TestModel=2
TestOptimization=false
TestDateEnable=true
TestFromDate=1970.01.01
TestToDate=2006.06.06
TestReport=MovingAverageReport
TestReplaceReport=false
TestShutdownTerminal=true

Прикрепления: MACDSample.rar(7.4 Kb)
 
vininДата: Понедельник, 23.11.2009, 09:56 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 299
Репутация: 12
Статус: Offline
Советник формирующий отчет по результатм оптимизации.
Пока нужно доработать форму отчета. Потом можно будет добавлять свои критерии оптимизации и фильтры для уменьшения размера отчета
SET файл от предыдущего варианта. Символ Евро, H1. 5 знаков
Прикрепления: MACDSample2.rar(4.1 Kb)
 
riderДата: Понедельник, 23.11.2009, 15:59 | Сообщение # 3
Сержант
Группа: Группа 1
Сообщений: 34
Репутация: 1
Статус: Offline
Чтобы понятнее было всем, а не только тем, кто в "теме" smile
Что-то вроде "карты" местности.
Давайте определимся с оптимизацией, подбором параметров и тем, что мы хотим от этого получить.
Итак, стандартный процесс:
1. Оптимизация на каком-то временном интервале. Если мы проводили ее грамотно, то не забыли про вкладку "Оптимизация", т.е. какое-то количество, заведомо для нас не нужных, проходов уже отсекли, да и процесс ускорили.
Тем не менее, мы получим N-тысяч профитных вариантов параметров советника, которые в таком количестве нам не нужны.
На этом этапе - все что нам нужно - это сохранить все эти наборы в файл, с которым потом можно будет работать. Объясню почему не стоит на этом этапе как-либо фильтровать этот файл - мы не знаем заранее, ни какой уровень профита выдаст эксперт, ни МО, ни количества сделок, ни профитности и.т.д., все это можно будет оценить только посмотрев на весь набор в целом, на той же вкладке "Результаты оптимизации".
2. Кого как, но большинство не устраивает положительный результат, полученный на оптимизации и не подтвержденный тестами. Поэтому на этом этапе нужно ранее полученный файл урезать (критерии "обрезания" те же самые - по полям вкладки "результаты оптимизации"), определить тестовый отрезок, условия и параметры тестирования и осуществить тестовый прогон каждого из оставшихся вариантов.
Результаты торговли (естественно, только профитные) по каждой сделке необходимо сохпанить в еще один файл для их последующего анализа. Причем, во всей этой чехарде, нужно не забыть про привязку полученных результатов, к тем параметрам, по котором все это дело торговалось smile
3. Анализ полученных результатов. Вот здесь нужно очень сильно включать мозги и думать. По каким условиям определять пригодность того или иного набора для торговли в целом. Это может быть и пропорциональность количества сделок, уровня профита, просадки тестового участка участку оптимизации или что-то еще..... если коротко и непонятно, то нам нужно оценить "прямизну кривой" smile
4. Выдача результата, т.е. у нас должно остаться минимум наборов, которые мы должны уже оценить самостоятельно. Причем результат должен появиться в таком виде, чтобы с ним можно было комфортно работать в тестере (в виде таблички и сет-файлов, например или как-то еще)...

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

Вот все, на что у меня хватило духу замахнуться...... в мыслях smile


"А правильно я вчера переделал, то что сделал позавчера?"
 
vininДата: Вторник, 24.11.2009, 08:26 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 299
Репутация: 12
Статус: Offline
Подготовлен третий вариант советника со вторым вариантом библиотеки
Позволяет
при mode=0 получить файл отчета оптимизации
при mode=1 получить файл своего рода Бэк-теста

Для первого варианта используется MACD.set, проверить что переменная mode==0;
После первого запуска нужно открыть сформированный отчет и запомнить количсетво строк-1. Понадобится для второго этапа
Для второго варианта используется MACD1.set, проверить что переменная mode==1;
Установить значение CheckValue количеству строк первого отчета-1
Снять галочку генетечиской оптимизации
Запускаем оптимизацию и получаем второй отчет
Естественно периоды для для обоих запусков должны различаться.
Для интеграции в другие советники нужно подключить библиотеку и сделать аналогичные init, deinit. Больше никаких изменений делать не нужно
Пока других режимов работы не предусмотрено.

Прикрепления: MACD3.rar(5.0 Kb)
 
riderДата: Вторник, 24.11.2009, 09:43 | Сообщение # 5
Сержант
Группа: Группа 1
Сообщений: 34
Репутация: 1
Статус: Offline
Quote (vinin)
Подготовлен третий вариант советника со вторым вариантом библиотеки Позволяет......

Замечательная работа.
Практически все готово для ручной обработки групповых результатов. Есть несколько пожеланий и вопросов:
Пожелания:
Отчет 1
1. Добавить поля: Дней (продолжительность участка оптимизации в днях), Сделки/день, Профит/день
Отчет 2
1. Добавить аналогичные поля для этого отчета
2. Изменить последовательность вывода столбцов для удобства ручного сравнения - поставить столбцы, которые будут сравниваться рядом, например: прибыль с прибылью, убыток с убытком, соответствующий коэффициент, с соответствующим коэффициентом и т.д.

Дальше пошли наглые пожелания:
- нужен скрипт, который перед запуском тестовых прогонов, самостоятельно уберет из файла все лишнее по критериям: прибыль, всего сделок, прибыльность, матожидание, коэффициент гладкости - не менее, просадка$, просадка %, коэф отклонения - не более .... значения должны вибираться пользователем при запуске скрипта.
- для второго отчета нужен аналогичный скрипт, но в нем должны быть уже параметры для сравнения соответствующих столбцов и отсева по этому признаку, пусть это будет максимальный процент рассогласования.

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

Если по максимуму, то нужен еще и третий срипт, который из оставшихся вариантов (при нормальной обработке их будет не больше 10-15) сформирует сет-файлы уже для визуального анализа.

Вопрос:
- Кто знает как можно открыть эти csv в Эксель в текстовом формате, так чтобы не появлялись даты, там где они не нужны?


"А правильно я вчера переделал, то что сделал позавчера?"
 
riderДата: Воскресенье, 29.11.2009, 15:46 | Сообщение # 6
Сержант
Группа: Группа 1
Сообщений: 34
Репутация: 1
Статус: Offline
Кое что нарисовалось, что можно уже использовать в качестве рабочего инструмента. Обозвать это можно, как: техника оптимизации и некоторые критерии отбраковки и/или выбора рабочих параметров эксперта.

Здесь только общая идея, подробный порядок применения во вложении.
Весь процесс подразделяется на несколько этапов. Такие разрывы связаны как со сложностью реализации непрерывного автоматического алгоритма, так и отсутствием необходимости такового :).... на мой взгляд, это не самая хорошая мысль, заставлять машину принимать стратегические решения. А выбор параметров (групп параметров) - это стратегия..... Считает, торгует, жизнь облегчает - вот пусть этим и занимается, а по каким правилам торговать, решать должен трейдер.

Этап 1. Оптимизация. Станадартная, с некоторыми специфическими настройками (О том "что, как, почему" во вложении). Все наборы параметров записываются в файл.

Этап 2. Работа с "Результатами оптимизации". Все результаты копируются в Эксель и обрабатываются уже там. Наборов много, их нужно сократить. Обрезание можно проводить по любой графе отчета - дело за трейдером. Номера проходов оставшихся наборов параметров также записываются в файл.

Этап 3. Тест. Выбирается участок истории для тестирования и прогняется групповой тест, выживших после отбраковки на предыдущем этапе, наборов. Подчеркиваю: групповой. Мы не будем рассматривать каждый тест в отдельности, задача стоит в получении результатов тестирования всех этих наборов. Аналогично этапу 2, все результаты копируются в эксель, в ту же таблицу, где уже расположены результаты оптимизации.

Этап 4. Отбраковка. Очевидно, что отрицательные тесты безжалостно выбрасываются, вопрос в том, как оценить оставшиеся? Для меня основным критерием оценки является визуальное восприятие линии баланса. Как правило, если она "хороша", то и цифры в отчете "красивые", а если в ней не наблюдается монотонной растущей тенденции, то никакие цифры убедить в том, что это "хорошо", не смогут.
Проблема в том, что оставшихся вариантов много и провести отдельный тест, чтобы глазами посмотреть на график каждого очень затруднительно..... хотя, если упереться, то smile
Чтобы обойти эту проблему и еще больше сократить количество наборов придумал для себя некий критерий "пропорциональности". Сравниваются три величины: прибыль в день, сделок в день и просадки, соответственно, на участках оптимизации и тестирования. Если они приблизительно, в пределах какого-то допуска, равны друг другу, набор остается в работе, если нет - исключается из дальнейшего анализа.
Завершением этапа будет формирование сет-файлов из оставшихся наборов.

Этап 5,6,7........ Проведение индивидуальных тестов на любых участках истории, сравнение между собой, выбор и т.д. В общем, это уже вопрос квалификации, вкусов и пристрастий каждого трейдера.

Все операции постарался, насколько "тямы" хватило, автоматизировать. На оптимильность кодов макросов в эксель внимания не обращал - операции разовые и 1 или 3 сек будут выполняться, значения не имеет.
Что касается подготовки эксперта к такой оптимизации, то, в принципе, ничего сложного там нет. Но при большом количестве параметров - это, своего рода, тест на внимание и усидчивость. Но потраченное време в итоге окупиться.

Немного о том, почему не устроил вариант Виктора, выложенный здесь ранее. Хотя он очень даже симпатичен и гораздо более изящно выглядит (вариант, не ты :))) ) .
Пунктов несколько.
1. Анализ истории сделок на оптимизации - это серьезное время.
В принципе, вопрос по времени достаточно спорный: в моем варианте используются результаты штатного оптимизатора, но оптимизация проходит без ограничений, в ранее выложенном - с ограничениям, но с анализом истори и формированием собственного отчета. Где времени теряется больше - это нужно считать.
2. В нем нет в полном объеме того, что мне хотелось получить... а, как известно, лучше свой код написать, чем чужой править smile

Вот, собственно, и все. Читайте, задавайте вопросы, тестируйте, тыкайте меня фейсом....

PS Все, что необходимо, во вложении.

Прикрепления: Optimizaciya.rar(533.3 Kb)


"А правильно я вчера переделал, то что сделал позавчера?"
 
riderДата: Вторник, 01.12.2009, 10:15 | Сообщение # 7
Сержант
Группа: Группа 1
Сообщений: 34
Репутация: 1
Статус: Offline
Quote (Globe)
да, любопытно посмотреть. Можно два варианта: а) депо 500 ед. лотом 0.1 на том же интервале (кстати, каков он?); б) то же, но с реинвестированием

500 смысла не имеет, при просадке 800.... возьму 2000, т.к. лот рассчитывается достаточно прямолинейно, как процент от баланса с учетом максимально возможного убытка. На 2-й картинке риск 5%.
Весь период 15 месяцев, оптимизация - последние 3, все остальное тест.



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

Прикрепления: 1353671.gif(14.2 Kb) · 7687999.gif(21.1 Kb) · 8888457.gif(24.3 Kb)


"А правильно я вчера переделал, то что сделал позавчера?"
 
GlobeДата: Вторник, 01.12.2009, 12:47 | Сообщение # 8
Рядовой
Группа: Проверенные
Сообщений: 13
Репутация: 0
Статус: Offline
Quote (rider)
для этого экспа такой примитивный ММ не подходит

симпатичный наклон кривой баланса. обращает внимание на себя пилообразная форма: за каждой группой из 1-2 профитов неизбежно следует группа лосов из 3-5 сделок. их бы просеять для уменьшения просадок - и ништяк
 
riderДата: Вторник, 01.12.2009, 23:19 | Сообщение # 9
Сержант
Группа: Группа 1
Сообщений: 34
Репутация: 1
Статус: Offline
Quote (Globe)
их бы просеять для уменьшения просадок - и ништяк

Это и есть самый главный вопрос .... и не только для этого экспа smile


"А правильно я вчера переделал, то что сделал позавчера?"
 
Форум » Советники и индикаторы » Игрушки » Автоматическая оптимизация с выбором оптимальных параметров (В названии все есть)
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2018Бесплатный конструктор сайтов - uCoz