Советник для статьи. Тестирование для всех желающих. - страница 5

 
TheXpert:

Да не надо ее решать. Достаточно для конкретного случая найти достаточную длину обучающей выборки, делается это очень просто.

ИМХО это решается гораздо проще. Посидел, поэкспериментировал с различными окнами оптимизации и надыбал такой метод:

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

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

 

Материал для статьи уже собран полностью, осталось только все это хозяйство привести в порядок, добавить кой какие изображения и можно отправлять на публикацию.


Если в кратце, то в статье рассматривается нейросеть с встроенной экспертной системой (чего только сочинители статей не понавыдумывают, ради гонорара?) и даны ответы на вопросы:


1. Зачем нейросети нужна интерполяция? Действительно, с какого перепугу это ей вдруг приспичило?

2. Может ли нейрон, обученный для корректной аппроксимации на стационарных и непротиворечивых данных интерполировать? Разобрано на примере логистической регрессии, которая в свою очередь является нейроном. Пропагандисты логистической регрессии останутся недовольными. Врачи-вредители тоже не одобрят сию писанину, т.к. нынче модно с помощью логистической регрессии вычислять диагнозы на компьютере.

3. Как создать экспертную систему для корректной интерполяции: необходимые и достаточные условия? По сути экспертная система - это слой нейросети, но не черный ящик, т.к. имеет базу знаний в виде легко интерпретируемых правил, как и у других экспертных систем. Если кому есть что скрывать, то лучше такое не читать, а пользоваться черными ящиками.

4. Можно ли переобучить нейросеть с экспертной системой на борту? А кто запрещает?

5. Как автоматически обучить экспертную систему на наборе обучающих примеров, чтобы не пришлось вручную создавать и корректировать ее базу знаний? Ясен пень, что обучающие примеры - это торговые сигналы, т.е. по показаниям технических индикаторов либо осцилляторов и обучаем систему торговать, а не распознавать какие-то ботанические ирисы Фишера. Но все же ручками, особенно кривыми и растущими из кой-каких мест как-то привычнее и надежнее базу знаний поковырять, чем доверять это дело тупым алгоритмам.

6. Как устранить недообучение нейросети с экспертной системой? Странный конечно же вопрос, т.к. все привыкли бороться с переобучением и подгонкой. А тут автор явно что-то не то решил побороть.

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


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

Вот такие пирожки.

 
Эхъ... Твою бы усидчивость да в правильное русло.
 

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

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

P.S.

время на котором конкретная система работала тоже параметр системы. Например, одна работала с 2005 по 2011. Вот это ее диапазон оптимальных значений - время жизни. Оптимизитруя на истории мы практически стремимся найти системы у которых этот диапазон максимален. Но система не обязаня работать вечно. Поэтому задавая период тестирования надо учитывать, что произвольно выбирать его и требовать чтобы система работала на всем этом участке - это от балды. Вздумалось искать за 10 лет - ищешь)). Имха, достаточно такой период, чтобы он давал нужный уровень достоверности результатов. Это зависит от кол-ва сделок и распределения прибыльных/убыточных сделок.

 

Avals:

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

Да имхо то же самое только в другую степь. Оптимальная зона это типа сглаживающий фильтр по результатам?
 
TheXpert:
Да имхо то же самое только в другую степь. Оптимальная зона это типа сглаживающий фильтр по результатам?


это типа среднее значение целевого показателя (профит-фактор например) в определенном диапазоне опта.

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

Вобщем, суть в том чтобы оценивать робастность не отдельного прогона, а самого опта в целом

К примеру, решили что IQ человека зависит от роста. Оптимизнули на 1000челах и получили что при росте 162см максимум IQ достигается в среднем. Потом стали форвард тестировать на других людях и вышло не очень)) А вот если получится, что стабильно на каждой выборке люди с ростом например 160-170см имеют более высокий средний IQ то шансов что это случайность меньше гораздо чем при выборе одного значения (потому что людей больше в выборку попадает). И это означает, что сама по себе зависимость IQ от роста имеет место быть

 

Новая версия в прикрепленном файле, на этот раз с money management (неагрессивный процент от депо):


// Оптимизировать советник нужно по Maximal Drawdown
// На участке оптимизации должно быть не менее 300 сделок
// После оптимизации отсортировать по профит фактору и 
// начиная с самого крупного пф, искать тестировать 
// на предмет наиболее гладкой кривульки баланса

//---- input parameters
extern int          x0 = 0; // Настройка от 0 до 100 с шагом 1
extern int          x1 = 0; // Настройка от 0 до 100 с шагом 1
extern int          x2 = 0; // Настройка от 0 до 100 с шагом 1
extern int          x3 = 0; // Настройка от 0 до 100 с шагом 1
extern int          x4 = 0; // Настройка от 0 до 100 с шагом 1
extern int          x5 = 0; // Настройка от 0 до 100 с шагом 1 
extern int          x6 = 0; // Настройка от 0 до 100 с шагом 1 
extern int          x7 = 0; // Настройка от 0 до 100 с шагом 1
extern double       sl = 900; // Уроверь стоплосса и тейкпрофита в пунктах
extern int          d = 2; // Количество знаков после запятой для лотности
extern int          mn = 888; // Магический номер
Файлы:
rnn_v4_1.ex4  8 kb
 
Reshetov:


Новая версия в прикрепленном файле, на этот раз с money management (неагрессивный процент от депо):

А когда статью можно будеть прочитать?
 
Avals:

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

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