Бета-версия платформы MetaTrader 5 build 2055: Интеграция с Python и массовые улучшения в тестере стратегий - страница 11

 
fxsaber:
Баг ME.

MathRand типа int, a в функции объявлен строковый. Без этой галки тоже не подсказывает?


 
Igor Zakharov:

MathRand типа int, a в функции объявлен строковый.

Такой вариант работает (лишние скобки)

void f( const string = NULL) {}

void OnStart()
{
  f((MathRand()));
}

Но и без скобок логично делать.


Без этой галки тоже не подсказывает?

Галка не влияет.

 

Пожелания по тестеру (для режима оптимизации):

Нельзя ли сделать пункт по аналогии с четвёркой "не показывать бесплолезные результаты". Но лучшим вариантом было бы "не показывать проходы, если инициализация не удалась". Сейчас у меня идёт оптимизация у которого несколько первых страниц нулевые, т.к. если MA_Period_Slow<=MA_Period_Fast, то return INIT_PARAMETERS_INCORRECT...

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

Объяснение простое: в текущем виде это вводит в заблуждение относительно надёжности результата: например, начали с 1000$ (фиксированный лот), видим просадка 5%. Но в действительности это не 50$, а, например, 5000, т.к. эта просадка была после 10-ти лет теста, когда счёт вырос до 100к... Т.е. этот маленький процент провоцирует соблазн запустить советника на счёте в 100$. Не единожды объяснял этот нюанс, даже трейдеры с приличным стажем в эту ловушку попадаются, пытаясь выбирать лучшие результаты оптимизации с учётом этого, в действительности, бесполезного параметра.

 
Igor Zakharov:

Пожелания по тестеру (для режима оптимизации):

Нельзя ли сделать пункт по аналогии с четвёркой "не показывать бесплолезные результаты". Но лучшим вариантом было бы "не показывать проходы, если инициализация не удалась". Сейчас у меня идёт оптимизация у которого несколько первых страниц нулевые, т.к. если MA_Period_Slow<=MA_Period_Fast, то return INIT_PARAMETERS_INCORRECT...

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

Объяснение простое: в текущем виде это вводит в заблуждение относительно надёжности результата: например, начали с 1000$ (фиксированный лот), видим просадка 5%. Но в действительности это не 50$, а, например, 5000, т.к. эта просадка была после 10-ти лет теста, когда счёт вырос до 100к... Т.е. этот маленький процент провоцирует соблазн запустить советника на счёте в 100$. Не единожды объяснял этот нюанс, даже трейдеры с приличным стажем в эту ловушку попадаются, пытаясь выбирать лучшие результаты оптимизации с учётом этого, в действительности, бесполезного параметра.

Поддерживаю. Но есть возможность гораздо более гибкого использования результатов оптимизации. Например, можете сформировать свой opt-файл из текущего. Там, в частности, и просадка в абсолюте имеется.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Slava, 2019.04.19 15:11

//+------------------------------------------------------------------+
//| Структура для статистики торговли                                |
//+------------------------------------------------------------------+
struct ExpTradeSummary
  {
   double            initial_deposit;     // начальный депозит
   double            withdrawal;          // снято средств
   double            profit;              // общая прибыль (+)
   double            grossprofit;         // общий плюс
   double            grossloss;           // общий минус
   double            maxprofit;           // максимально прибыльная сделка
   double            minprofit;           // максимально убыточная сделка
   double            conprofitmax;        // прибыль максимальной последовательности прибыльных сделок
   double            maxconprofit;        // максимальная прибыль среди последовательностей
   double            conlossmax;          // убыток максимальной последовательности убыточных сделок
   double            maxconloss;          // максимальный убыток среди последовательностей
   double            balance_min;         // минимальное значение баланса (для расчёта абсолютной просадки)
   double            maxdrawdown;         // максимальная просадка по балансу
   double            drawdownpercent;     // отношение максимальной просадки по балансу к её пику
   double            reldrawdown;         // максимальная относительная просадка по балансу в деньгах
   double            reldrawdownpercent;  // максимальная относительная просадка по балансу в процентах
   double            equity_min;          // минимальное значение equity (для расчёта абсолютной просадки по equity)
   double            maxdrawdown_e;       // максимальная просадка по equity
   double            drawdownpercent_e;   // отношение максимальной просадки по equity к её пику (+)
   double            reldrawdown_e;       // максимальная относительная просадка по equity в деньгах
   double            reldrawdownpercnt_e; // максимальная относительная просадка по equity в процентах
   double            expected_payoff;     // матожидание выигрыша (+)
   double            profit_factor;       // показатель прибыльности (+)
   double            recovery_factor;     // фактор восстановления (+)
   double            sharpe_ratio;        // коэффициент Шарпа (+)
   double            margin_level;        // минимальный уровень маржи
   double            custom_fitness;      // пользовательский фитнесс - результат OnTester (+)
   int               deals;               // общее количество сделок
   int               trades;              // количество сделок out/inout
   int               profittrades;        // количество прибыльных
   int               losstrades;          // количество убыточных
   int               shorttrades;         // количество шортов
   int               longtrades;          // количество лонгов
   int               winshorttrades;      // количество прибыльных шортов
   int               winlongtrades;       // количество прибыльных лонгов
   int               conprofitmax_trades; // максимальная последовательность прибыльных сделок
   int               maxconprofit_trades; // последовательность максимальной прибыли
   int               conlossmax_trades;   // максимальная последовательность убыточных сделок
   int               maxconloss_trades;   // последовательность максимального убытка
   int               avgconwinners;       // среднее количество последовательных прибыльных сделок
   int               avgconloosers;       // среднее количество последовательных убыточных сделок
  };

Заодно выбросить все левые проходы и применить другие фильтры.

 
fxsaber:

Поддерживаю. Но есть возможность гораздо более гибкого использования результатов оптимизации. Например, можете сформировать свой opt-файл из текущего. Там, в частности, и просадка в абсолюте имеется.

Заодно выбросить все левые проходы и применить другие фильтры.

Как быть с возможностью запуска одиночного прохода прямо из таблицы? Останется? Уж очень эта тема хрупкая - перекомпилируешь советника - и всё на этом, "не могу найти параметры оптимизации" или как-то так... Словом, перестает работать прямой запуск от каждого чиха метаэдитора. Даже вредную привычку начал вырабатывать - создавать новые версии по каждой мелочи.

 
Igor Zakharov:

Как быть с возможностью запуска одиночного прохода прямо из таблицы? Останется?

Почти уверен, что останется. Руки не доходят нормальное решение в КБ запилить.

 
fxsaber:
Баг ME.
Я и не встречал чтобы появлялась подсказка когда вместо строкового значения пытаться всунуть целочисленное.
 
Slava:
Любые. Чтобы можно было воспроизвести описанную проблему

Test 1966 version

Tester optimization graph 2007 version

Всё остальное отправил личным сообщением

Файлы:
 

Strong columns

Неправильные данные столбцов: высокий, низкий. EURJPY ['low'], но получил EURJPY ['high'] и наоборот.

Я также вижу примеры со столбцами = ['time', 'open', 'low', 'high', 'close', 'tick_volume', 'spread', 'real_volume']

но не столбцы = ['time', 'open', 'high', 'low', 'close', 'tick_volume', 'spread', 'real_volume']?


Вы также можете перетащить его на Ctrl +

 

Здравствуйте. 


1. Это ограничение?  Количество проходов такое же, как и при быстром переборе. 

2. Можно увидеть DD в деньгах, во время оптимизации а не в %. 

Билд 2060.