Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы - страница 16

 
fxsaber:
Если это правильные формулы


, то Тестер вычисляет данные показатели совсем иначе. У меня разительные отличия в результатах между этими формулами и тем, что показывает Тестер (кроме профита).

Предлагаю точно разобраться. Загвоздка в том, что именно MT5 считает прибыльным трейдом.

const double Profit = OrderProfit() + OrderCommission() + OrderSwap();

Что-то одно уберите, или сразу оба, и сравните.

Или тут (если выше не поможет) уберите "="

if (Profit >= 0)
 
Slava:

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

Если есть две проблемы то, наверное, надо обсуждать и решать обе. Или это невозможно ?

1. Почему после проведения оптимизации бывает отключение агентов.

2. По какой  причине могло прекратиться автоматическое добавление символов в тестер

 
Artyom Trishkin:

Что-то одно уберите, или сразу оба, и сравните.

Или тут (если выше не поможет) уберите "="

Вот так вычисляет MT5

double ProfitPlus = 0;  // Профит неотрицательных закрытых позиций.
double ProfitMinus = 0; // Профит отрицательных закрытых позиций.

int AmountPlus = 0;  // Количество неотрицательных закрытых позиций.
int AmountMinus = 0; // Количество отрицательных закрытых позиций.

for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
  if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL))
  {
    const double Profit = OrderProfit()+ (OrderCommission() / 2) + OrderSwap();
    
    if (Profit >= 0)
    {
      ProfitPlus += Profit;
      AmountPlus++;
    }
    else
    {
      ProfitMinus += Profit;
      AmountMinus++;
    }      

    ProfitMinus += OrderCommission() / 2;
  }

const double PF = ProfitMinus ? -ProfitPlus / ProfitMinus : DBL_MAX; // Профит-фактор.
const double Profit = ProfitPlus + ProfitMinus;                      // Профит

Т.е. в MT5 можно закрыть позицию и получить убыток (баланс до открытия меньше баланса после закрытия). Но при этом MT5-Тестер (Терминал не проверял) будет считать этот трейд прибыльным.


ЗЫ Как пример, MT5_PF = 1.89, а MT4_PF = 2.01.

 
fxsaber:
Если это правильные формулы


, то Тестер вычисляет данные показатели совсем иначе. У меня разительные отличия в результатах между этими формулами и тем, что показывает Тестер (кроме профита).

Предлагаю точно разобраться. Загвоздка в том, что MT5 считает прибыльным трейдом.

почему тут модификатор const ?

const double Profit = OrderProfit() + OrderCommission() + OrderSwap();

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


по вопросу, а если убрать OrderCommission() + OrderSwap() ? - речь же идет о прибыли по трейдам, а не о комиссии ?

ЗЫ: как вариант, вообще тестер может по балансу считать, закрылся ордер - изменился баланс сравнил со старым балансом, в общем гадать не перегадать....поиском по статьям пробежался, не нашел первоисточника , единственное есть статья  https://www.mql5.com/ru/articles/4226 в ней тоже расчет прибыли есть, но не читал

Пользовательский тестер стратегий на основе быстрых математических вычислений
Пользовательский тестер стратегий на основе быстрых математических вычислений
  • www.mql5.com
Тестер стратегий, предоставляемый MetaTrader 5, имеет мощный функционал для решения разнообразных задач. С его помощью можно тестировать как сложные стратегии торговли корзинами инструментов, так и одиночные стратегии с простыми правилами входов и выходов. Однако такой обширный функционал нам пригождается далеко не всегда. Часто нам просто...
 
Igor Makanu:

почему тут модификатор const ?

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

Пересоздается. Все верно там.

по вопросу, а если убрать OrderCommission() + OrderSwap() ? - речь же идет о прибыли по трейдам, а не о комиссии ?

Формулу MT5 выше привел. Это создает серьезные перекосы при вычислении ПФ скальпирующих ТС. И как может быть, что ПФ зависит от платформы? Должно быть однозначно.

 
zevs1980:
Данная проблема мной уже поднималась в ветках более ранних билдов. Так и не исправлено. Нашел свой костыль. Отключаю часть агентов (в моем случае 3 из 10) и включаю после 0 итерации, тогда все идет норм. Иногда правда бывает в процессе все же останавливается часть агентов, но редко, алгоритм решения тот же.

Жаль, но вручную рулить не вариант. У меня автоматическая оптимизация.

 
KENT3004:

Если есть две проблемы то, наверное, надо обсуждать и решать обе. Или это невозможно ?

1. Почему после проведения оптимизации бывает отключение агентов.

2. По какой  причине могло прекратиться автоматическое добавление символов в тестер

1. Смотрите логи тестера, там всё написано.

2. Это уже исправлено. Но пока у Вас нет билда с исправлениями, Вы можете использовать драг-дроп (мы не обсуждали, почему прекратилось добавление символов, а обсуждали, как можно в этих условиях всё-таки тестировать)

 
fxsaber:

Запускаю одиночные прогоны попеременно на каждом кастомном символе. С определенного момента невозможно увидеть путь к ним в Тестере, но они еще выбираются через перетаскивание из Обзора рынка. Далее через какое-то время и это не работает: можно выбрать либо обычный символ, либо только один кастомный. Остальные - невозможно. На анимации ниже показана эта ситуация.


Воспроизвели и исправили. Спасибо.
 
Slava:

1. Смотрите логи тестера, там всё написано.

2. Это уже исправлено. Но пока у Вас нет билда с исправлениями, Вы можете использовать драг-дроп (мы не обсуждали, почему прекратилось добавление символов, а обсуждали, как можно в этих условиях всё-таки тестировать)

Спасибо за оперативность и полезный совет. Осмелюсь "доложить" об одной незначительной но неудобной мелочи. Кнопка старт/стоп закрывает кнопку инструменты/тестер, что заставляет делать лишние действия. Не очень удобно однако. 
 
Edgar:
При генетической оптимизации использую много параметров. Как только количество вариантов становится таким большим, что отображается в научной нотации (6.8768769e+21), оптимизация после generation 0 продолжается с половиной агентов (4 из 8). Никаких упоминаний в логах. Сама оптимизация проходит нормально, но с половинной загрузкой, вдвое дольше.

Поведение воспроизводится не всегда, возможно поэтому её не исправляют. Вчера у меня было, сегодня - нет. Возможно, и от советника зависит. У меня - с фреймами. Размер ex5 около 0.5 Мб. Памяти 8 Гб. Intel i7, 4 ядра, 8 потоков. Разведен. Несудим.

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