Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Хотите сказать,что код по типу
if (balance < 3000) ExpertRemove();
не работает?
Работает. Уже понял. прерывает оптимизацию но в результаты всеравно выводит, поэтому я подумал что не работает.
Karlson:
Но сказал я совсем другое. Что такой срыв (работал ранее по крайней мере) приводил к уходу генетики в конечном итоге.
Это да.
еще если обнулять результаты OnTester() или делать как указано выше(присваивать минусовое значение -777), то гинетика действительно может вести себя непредсказуемо, т.к. отбор ведется по результатам как раз по возвращаемому значению OnTester().
В MT4 было такое:
Наверняка это возможно сделать с помощью средств MQL5 раз разработчики вообще убрали такие функции.
Конечно все можно скопировать в Excel, но хочется воспользоватся возможностями новой платформы.
C ограничениями мы разобрались - можно сделать с помощью ExpertRemove().
как быть с пропуском бесполезных результатов, в отчете?
как быть с пропуском бесполезных результатов, в отчете?
В стандартном отчёте никак. И не нужно (я против). Делай свой отчёт.
Сейчас отчёт можно формировать уже на этапе оптимизации (https://www.mql5.com/ru/docs/optimization_frames) в любом формате, в котором тебе нужно.
А скоро (тьху-тьху) и генетикой управлять можно будет самостоятельно.
Превосходно.
Из моей предыдущей работы в области нейронных сетей и генетических алгоритмов, прогнозирующих фьючерсы, я понял важность достаточно прямой кривой эквити.
И написал несколько процедур, чтобы учесть это. Это действительно показатель "надежности" системы прогнозирования.
Находки при выполнении практических работ.
Модуль прямолинейности - это хорошее начало, но неполное. Можно получить очень хороший рейтинг с нулевой прибылью. Так что прибыль должна быть в уравнении. Просто добавить какую-то меру от общей прибыли
не работает. Вы можете получить очень прямую линию с хорошим значением, имея несколько выигрышей в начале, несколько просадок в середине и несколько лучших выигрышей в конце. Это дало бы ровную прямую линию с хорошим значением и показало бы некоторую прибыль. Но это совсем не то, что мы ищем.
Нам действительно нужна линия регрессии, которая поднимается вверх с хорошим соответствием. Поэтому, чтобы реализовать идею использования линии регрессии с как можно меньшим отклонением, в уравнение необходимо включить коэффициент для восходящего наклона. Это то, что
что мы хотим увидеть. Линия регрессии с восходящим наклоном и хорошей подгонкой. Я постараюсь это учесть. Предложения и помощь приветствуются :-)
Я пробую код CSTS.
Я нахожу этот результат немного странным:
Результат Прибыль #Трейды Фрофит фактор DrawDown Ожидаемая выплата Фактор восстановления
0.58 1237 84 1.26 12.70 14.74 0.93
0.57 1598 90 1.38 8.69 17.36 1.76
Вот еще один пример
0.61 3175 123 1.33 21.04 25.82 1.48
0.60 4460 145 1.49 11.32 30.77 2.56
Со всех точек зрения значения для второй линии лучше!!! Но счет ниже
Единственное, что я могу сделать вывод, это то, что есть штраф по многим сделкам. Я бы сделал наоборот.
И последнее. Похоже, эта тема интересует только одного человека. Меня.
Далее. Я допустил ошибку в своем коде, и это привело к тому, что отложенные ордера не были очищены. Также это привело к тому, что за 12 месяцев тестирования было размещено всего 5 ордеров. С хорошей прибылью.
Это действительно увеличило результат оптимизации до более чем 100. Очевидно, что значение "среднего выигрыша" было чрезвычайно высоким, что и привело к такому экстремальному результату. Технически это правильно, но в контексте бэктестинга это бессмысленно
в контексте бэктестинга. Насколько вероятно, что такие длинные тренды являются репрезентативными? Поэтому я решил, что количество сделок должно быть каким-то образом включено в уравнение.
Путем проб и ошибок, изменив код, я пришел к методу, который дает результаты, которые я считаю полезными.
изменения:
// CSTS:
double tssf=real/teor;
if(tssf <= 0) return 0;
work = TesterStatistics( STAT_TRADES );
if( work <= 0) work = 1;
work = MathSqrt(work/4);
tssf = tssf * work;
if( tssf < 1 ) tssf = 0;
if(TesterStatistics(STAT_PROFIT) <= 0) tssf = 0;
return(tssf);
Оригинальный метод, вероятно, хорош для оценки работающей системы, но практически бесполезен для определения параметров на основе бэктестов.
Ну, вот и я снова здесь, одинокий волк в этой вселенной :-)
Я пробовал критерий прямолинейности Custom Criteria, пытаясь подставить в уравнение наклон рассчитанной прямой линии. В таком виде он может дать вам очень высокий рейтинг при очень слабой прибыли. Простое добавление конечной прибыли
в расчет не делает его лучше В попытке добавить фактический наклон в уравнение я изменил код, как показано ниже.
Это не идеальное решение, но оно ближе к тому, что я хочу видеть. Использование результата вместе с балансом или прибылью отлично работает для меня с этим кодом
Ну, вот и я снова здесь, одинокий волк в этой вселенной :-)
Я пробовал критерий прямолинейности Custom Criteria, пытаясь подставить в уравнение наклон рассчитанной прямой. В таком виде он может дать вам очень высокий рейтинг при очень слабой прибыли. Простое добавление конечной прибыли
в расчет не делает его лучше В попытке добавить фактический наклон в уравнение я изменил код, как показано ниже.
Это не идеальное решение, но оно ближе к тому, что я хочу видеть. Использование результата вместе с балансом или прибылью отлично работает для меня с этим кодом
Например, для генетических алгоритмов, вы должны иметь хороший фитнес алгоритма, и, конечно, создать пользовательские критерии, выровненные с этим фитнес.
Я не уверен, что вычисление наклона кривой баланса является лучшим способом, так как у нас есть несколько других способов, в любом случае, рассчитывайте на меня, чтобы исследовать и обсуждать эти идеи.