Как оптимизировать пользовательский параметр. Custom max, onTester

 
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
int profit = 0;
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
   profit++;
  }
double OnTester(void)
  {
   return(profit);
  }

Простейший советник, который должен нарисовать самую приятную эквити. Лучше точно ни у кого не будет)
Как сделать вывод переменной profit в custom max? Что конкретно прописывать в код, и как настраивать сам тестер?
Пример кода простейший, просто чтобы понять, как это в целом делается.
Буду благодарен за любую помощь, в справке сам ничего не понял.

 

https://www.metatrader5.com/ru/terminal/help/algotrading/strategy_optimization#settings

Критерий оптимизации — пользовательский.

Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
Andrey Khatimlianskii:

https://www.metatrader5.com/ru/terminal/help/algotrading/strategy_optimization#settings

Критерий оптимизации — пользовательский.

да. это я понял. но в случае отсутствия входных параметров критерий оптимизации выбрать вообще нельзя

 
vponed:

да. это я понял. но в случае отсутствия входных параметров критерий оптимизации выбрать вообще нельзя

А что вы в этом случае собираетесь оптимизировать?

 
Andrey Khatimlianskii:

А что вы в этом случае собираетесь оптимизировать?

переменную profit
а она будет меняться в зависимости от программы
вообще идея под автотест опционных спредов

 
vponed:

переменную profit
а она будет меняться в зависимости от программы
вообще идея под автотест опционных спредов

Вот и сделайте ее внешней (input).

Или раскройте, что в вашем понимании — оптимизация.

 
Andrey Khatimlianskii:

Вот и сделайте ее внешней (input).

Или раскройте, что в вашем понимании — оптимизация.

вот как оптимизируются настройки советника, чтобы получить максимальную прибыль, а мне вместо прибыли нужен максимальный double profit;

 
vponed:

вот как оптимизируются настройки советника, чтобы получить максимальную прибыль, а мне вместо прибыли нужен максимальный double profit;

Оптимизация - это жонглирование значениями входных параметров эксперта. Если их нет, то оптимизировать нечего. 

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

 
Ihor Herasko:

Оптимизация - это жонглирование значениями входных параметров эксперта. Если их нет, то оптимизировать нечего. 

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

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

 
vponed:

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

Вместо прибыли ничего не нужно записывать. Эта переменная должна зависеть от оптимизируемого входного параметра. Иначе смысла никакого в оптимизации нет:

double g_fProfit = 0;

input double   i_fAddition = 5.0;

void OnTick()
{
   g_fProfit += i_fAddition;
}

double OnTester(void)
{
   return g_fProfit;
}  
Выбирайте i_fAddition в качестве оптимизируемого параметра и задайте интервал подбора, а в настройках оптимизатора выберите "Максимум пользовательского критерия".
 
Ihor Herasko:

Вместо прибыли ничего не нужно записывать. Эта переменная должна зависеть от оптимизируемого входного параметра. Иначе смысла никакого в оптимизации нет:

Выбирайте i_fAddition в качестве оптимизируемого параметра и задайте интервал подбора, а в настройках оптимизатора выберите "Максимум пользовательского критерия".

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

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