Jump to content

Blog solandr

  • entries
    107
  • comments
    542
  • views
    182,298

Применение библиотеки ALGLIB для оптимизации стратегий по линейной регрессии

solandr

3,884 views

В статье "Оптимизация стратегий на основе минимизации ошибки управления ПАММ счётом" говорится о важности вида кривой доходности для инвестиционной привлекательности ПАММ счёта для инвесторов. Наиболее рациональный способ достижения такого вида кривой состоит в подборе параметров советника, соответствующих наиболее прямолинейному виду кривой доходности. И как уже было сказано для оптимизации параметров необходимо использовать коэффициент корреляции линейной регрессии. Поскольку штатных средств, рассчитывающий данный параметр, в тестере МТ4 нет, то было предложено вместо коэффициента корреляции линейной регрессии применять фактор восстановления в классическом его определении, как отношение полученной прибыли к просадке. Было показано, что такая замена позволяет в некоторой степени улучшить прямолинейность графика кривой доходности.

 

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

В случае же выбора параметров советника по линейной регрессии разброс в размерах доходности разных участков будет менее выраженным. И поскольку никто не знает какой участок выпадет на ближайший инвестиционный период, то будет меньше разочарований инвесторов и соответственно меньше поспешных бегств инвесторов с ПАММ счёта.

 

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

 

К радости разработчиков торговых систем не так давно появилась возможность воспользоваться библиотекой численного анализа ALGLIB, которая была адаптирована для применения в МТ4 build 555 и выше. Наряду с массой полезных математических функций анализа данных библиотека содержит и необходимую нам функцию расчёта LR Correlation и LR Standard Error.

 

Библиотеку ALGLIB можно скачать с сайта разработчиков терминала. Копия библиотеки приложена к данной статье (на всякий случай).

 

Для работы нужно распаковать архив в папку: каталог_данных_терминала.

 

Шаблон, на примере которого можно использовать библиотеку для расчёта LR Correlation и LR Standard Error, находится в файле Template_for_LR_optimization.mq4. Шаблон показывает код, который нужно внести в оптимизируемый советник.

 

Некоторые моменты, на которые следует обратить внимание при переносе шаблона в оптимизируемый эксперт:

 

1. Вставка инклюдников

#include <Math\Alglib\alglib.mqh>#include <Arrays\ArrayDouble.mqh>

2. В файл optimization_results.txt записываются следующие данные:

 write_result=FileWrite(handle_optimization_results,DoubleToStr(optimization_parameter,2),DoubleToStr(LR_correlation,4),DoubleToStr(LR_standard_error,4),DoubleToStr(LR_correlation/LR_standard_error,4));

а) необходимо вместо optimization_parameter вписать тот параметр, который будет оптимизироваться в тестере МТ4. Но это не принципиально и необходимо лишь для удобства последующего чтения результатов;

б) значение LR Correlation;

в) значение LR Standard Error;

г) целевая функция LR_correlation/LR_standard_error. Она просто объединяет параметры LR Correlation и LR Standard Error в целевую функцию, что даёт некое удобство при оптимизации.

 

3. Вид файла optimization_results.txt

blogentry-422792-0-28694100-1413924022.gif

 

4. Файл optimization_results.txt анализируется в Excel на предмет максимизации целевой функции LR_correlation/LR_standard_error.

blogentry-422792-0-43573500-1413924398.jpg

Solandr Test Drive

  • Thanks 1


2 Comments


Recommended Comments

Удобно. Главное, выбирая таким макаром оптимальные настройки, не забывать, что не стоит слепо хватать, что прямее выглядит. Так можно и случайный пик принять за оптимум. "Покатые" вершины пространства результатов оптимизации нужно вручную отбирать. А вот затем можно уже и линейную регрессию юзать.

Share this comment


Link to comment
solandr

Posted

Действительно, работоспособная система предполагает наличие "покатых" склонов для оптимальных параметров. Слишком острые пики говорят о присутствии подгонки в той или иной степени.

 

Я лично при оптимизации использую комбинацию обоих методов: фактора восстановления и линейную регрессию. Как правило области оптимальных параметров для обоих методов имеют некоторую пересекающуюся область. Вот её я и выбираю в качестве рабочих параметров для советника, но при прочих равных условиях, отдавая приоритет всё же линейной регрессии по причине, описанной во втором абзаце статьи. Хотя для личного счёта конечно же фактор восстановления должен иметь приоритет перед линейной регрессией. (Ну а для совсем жёстких фанатов конечного результата, если они готовы на любые волнения, возможно подойдёт и простая оптимизация по балансу :))

  • Thanks 1

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×