Как добавить фильтр в отображение результатов оптимизации - страница 2

Aleksandr Babitskii #:

У меня после этого скрипта в просадке значения более 100%. Что я сделал не так?

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


Например, хотите в результатах оптимизации видеть Gross profit. Надо решить, на место какой колонки его выводить. Пусть это будет "Просадка %". Запускаете скрипт с соответствующим указанием во входных параметрах и получаете на месте колонки "Просадка %" значение Gross profit. При этом название колонки не меняется - "Просадка %". Но вы знаете, что туда подставили.


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

Vyacheslav Prokhorov:

Подскажите как решить задачу. Есть необходимость добавить фильтр "Максимальная просадка по средствам" в отображение результатов ОПТИМИЗАЦИИ, в MT5.

Хочу заметить что в MT4 он был, для чего убрали в MT5 непонятно. И можно сделать что бы значение отображалось не в процентах?

double OnTester()
{
   double   dTestRes = TesterStatistics(STAT_EQUITY_DDREL_PERCENT);
   if(dTestRes > 10.0) dTestRes = -dTestRes/100.0 ; else dTestRes = TesterStatistics(STAT_PROFIT);
   return(dTestRes);
}

Отсекатель по просадке в результатах. В данный момент настроен на 10%.

В параметрах анализа оптимизации - максимальный "пользовательский" критерий.

Nickolay Ustyantsev #:

Отсекатель по просадке в результатах. В данный момент настроен на 10%.

В параметрах анализа оптимизации - максимальный "пользовательский" критерий.

double OnTester()
{
   double   dTestRes = TesterStatistics(STAT_PROFIT);
   if(dTestRes <= 0.0) dTestRes = -TesterStatistics(STAT_EQUITY_DDREL_PERCENT)/100.0; else dTestRes = TesterStatistics(STAT_PROFIT_FACTOR)*TesterStatistics(STAT_EXPECTED_PAYOFF)/TesterStatistics(STAT_EQUITY_DDREL_PERCENT)*100.0;
   return(dTestRes);
}

Дополнил.

Сейчас учитываются результаты расчётов при оптимизации: "профит-фактор", "математическое ожидание выигрыша" и "посадка".

Оптимизация -> Закладка "настройки". Результат оптимизации = "Максимум пользовательского критерия".

Nickolay Ustyantsev #:

Дополнил.

Сейчас учитываются результаты расчётов при оптимизации: "профит-фактор", "математическое ожидание выигрыша" и "посадка".

Оптимизация -> Закладка "настройки". Результат оптимизации = "Максимум пользовательского критерия".

Поправил расчёт. Используется как произведение трёх коэффициентов. 

double OnTester()
{
   // Для результатов
   double dResult = 0.0;
   
   // Получаем значение прибыли в валюте депозита
   double dTestProfit = TesterStatistics(STAT_PROFIT);
   
   // Фильтр убыточных сетов
   if (dTestProfit <= 0.0) dResult = -1.0;
   else
   {
      // Берем просадку
      double dTestPercent = MathMax(TesterStatistics(STAT_EQUITY_DDREL_PERCENT), TesterStatistics(STAT_BALANCE_DDREL_PERCENT));
   
      // Получаем PF
      double dTestPF = TesterStatistics(STAT_PROFIT_FACTOR);
   
      // Получаем RF
      double dTestRF = TesterStatistics(STAT_RECOVERY_FACTOR);
         
      // Получаем Количество сделок
      double dTestDeals = TesterStatistics(STAT_DEALS);
         
      // расчёт
      dResult = (dTestPF*dTestRF/dTestPercent) * (dTestProfit/dTestDeals) * (dTestProfit/dTestPercent);
   }
   
   // Возвращаем результат
   return(dResult);
}