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