В комментариях было предложено подумать над поведением ТС после инверсирования времени — тики идут в обратном направлении (из будущего в прошлое), будто включили перемотку назад.
Там же можно было почитать, на каких символах инверсирование может не влиять на результат ТС, а для каких — это серьезное изменение рыночных закономерностей.
К счастью, форекс-символы не должны в теории уничтожать рыночные закономерности при таком инверсировании времени. Мне стало интересно это проверить на одной из своих ТС.
Сначала код инверсирования тикового ряда на 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;
}
На основе этой функции прикреплен скрипт, который создает инверсированный символ. С ним и будем работать. Результаты такие.
Лучший проход Оптимизатора на прямом символе.

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

Без выводов.
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
Но если и так сработало — совсем гуд.