Jump to content

Blog solandr

  • entries
    107
  • comments
    542
  • views
    188,522

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


solandr

4,858 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

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

Link to comment
solandr

Posted

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

 

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

  • Thanks 1
Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...