Оптимизация советника с целью получения наиболее гладкой кривой роста доходности. - страница 2

 
beruk >>:

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

но я делаю это так: на каждом прогоне смотрю максимальное отклонение в % кривой баланса от прямой между первым и последним значением баланса.

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

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

Хороший критерий. Только поправлю: вместо последнего значения баланса взять максимальное значение средств.

// Для расчёта критерия оптимизации рассчитываем максимум средств и максимальную просадку  
    double equity=AccountEquity();
    if (equity > MaxEqu) MaxEqu = equity;
    if (MaxEqu-equity > MaxDD) MaxDD = MaxEqu-equity;
Соответственно рассчитываем максимальную прибыль вместо текущего значения прибыли.
 
не, я просадку и средства считаю по-своему - у меня все открытые сделки априори убыточны. какой смысл смотреть на нериализованную прибыль, если через пару секунд она может превратиться в убыток?
 
Смысл есть. Максимальные эквити и просадка - это линии сопротивления и поддержки для кривой баланса. Пока кривая баланса внутри горизонтального канала беспокоится нечего. Если кривая баланса пробьет линию поддержки и лимит допустимого изменения просадки, то требуется срочное изменение параметров советника. Получается еще одна стратегия - на пробой линии сопротивления.
 

Вроде получилось немного привести библиотеку в порядок

// Добавляем библиотеку
#include <OptimizationReport.mq4>

int deinit(){
   // Добавляем пользовательские параметры в отчет
   OR.Add_Parameter("Lots",            Lots           );
   OR.Add_Parameter("MaximumRisk",     MaximumRisk    );
   OR.Add_Parameter("DecreaseFactor",  DecreaseFactor );
   OR.Add_Parameter("MovingPeriod",    MovingPeriod   );
   OR.Add_Parameter("MovingShift",     MovingShift    );
   
   // Вызываем процедуру формирования отчета
   OR.main();
   return(0);
}

Вот этот код добавил в Moving_Average (какой был советник)

Во вложении эксперт и библиотека

Файл отчета формируется по имени эксперта, символу и таймфрейму. При оптимизации искать в папке tester/files

Файлы:
experts.rar  6 kb
 

Вот это да :)


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

Сравню свои алгоритмы с вашими, поучусь, так сказать.


Спасибо!

 
kharko писал(а) >>
Смысл есть. Максимальные эквити и просадка - это линии сопротивления и поддержки для кривой баланса. Пока кривая баланса внутри горизонтального канала беспокоится нечего. Если кривая баланса пробьет линию поддержки и лимит допустимого изменения просадки, то требуется срочное изменение параметров советника. Получается еще одна стратегия - на пробой линии сопротивления.

я такую идею тоже думал... но мне кажеться что это от лукавого...

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

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

 
Для гладкости можно конечно СКО использовать. Но как выбрать оптимальный вариант. Возможно буду использовать отношение СКО/количество сделок. Минимальное значение возможно будет наиболее близко к требуемому. Хотя кто его знает. Пока не проверял.
 

А что, в тестере MT5 будет возможность оптимизации по каким-то своим критериям? Или там в числе прочего планируют критерий "линейности" роста депозита?

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