Блог им. fxsaber
В комментариях было предложено подумать над поведением ТС после инверсирования времени — тики идут в обратном направлении (из будущего в прошлое), будто включили перемотку назад.
Там же можно было почитать, на каких символах инверсирование может не влиять на результат ТС, а для каких — это серьезное изменение рыночных закономерностей.
К счастью, форекс-символы не должны в теории уничтожать рыночные закономерности при таком инверсировании времени. Мне стало интересно это проверить на одной из своих ТС.
Сначала код инверсирования тикового ряда на MQL5.
int TimeDayOfWeek( const datetime Date )
{
MqlDateTime mTime;
TimeToStruct(Date, mTime);
return(mTime.day_of_week);
}
#define HOUR 3600
#define DAY (24 * HOUR)
#define WEEK 7
// https://www.mql5.com/ru/forum/170953/page8#comment_6940794
datetime GetTimeDayOfWeek( const datetime TimeSource, const int Shift = 0, const ENUM_DAY_OF_WEEK Day = SUNDAY )
{
const datetime Res = TimeSource / DAY * DAY;
return(Res - (((WEEK + (TimeDayOfWeek(Res) - Day)) % WEEK) + Shift * WEEK) * DAY);
}
void ReverseTick( MqlTick &Tick, const long &Offset )
{
Tick.time_msc = Offset - Tick.time_msc;
Tick.time = (datetime)(Tick.time_msc / 1000);
return;
}
// Инверсирование времени.
void ReverseTicks( MqlTick &Ticks[] )
{
const int Size = ArraySize(Ticks);
if (Size)
{
const long Offset = (long)(GetTimeDayOfWeek(Ticks[0].time, 0, MONDAY) + GetTimeDayOfWeek(Ticks[Size - 1].time, -1, SATURDAY)) * 1000;
for (int i = 0; i < Size; i++)
ReverseTick(Ticks[i], Offset);
ArrayReverse(Ticks);
}
return;
}
На основе этой функции прикреплен скрипт, который создает инверсированный символ. С ним и будем работать. Результаты такие.
Лучший проход Оптимизатора на прямом символе.

Этот же проход на инверсированном по времени символе.

Без выводов.
Но если и так сработало — совсем гуд.
На тему «гуд или нет» не могу ничего сказать, т.к. трактовать результат не получается. Т.е. не вижу ни плюсов, ни минусов такому положению вещей.
Интересный теоретический результат — да. Что-то более — пока не осознал.
Один оптимизирован с выбором лучшего варианта,
а второй вообще не оптимизирован. Так разве корректно?
Я не для критики, а лишь для того, чтобы показать, что робот у вас неплохой даже при таком сравнении, но на деле он еще лучше )
Но если поставленная задача выполнена — поздравляю.