Блог им. 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;  
}

На основе этой функции прикреплен скрипт, который создает инверсированный символ. С ним и будем работать. Результаты такие.


Лучший проход Оптимизатора на прямом символе.
Инверсирование времени


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

Без выводов.

★1
11 комментариев
)) Вчера как раз отличную статью здесь приводили по вашей теме: https://zen.yandex.ru/media/the_world_is_not_easy/300-let-v-iskajennoi-realnosti-5df74a43aad43600affce4d0
avatar
Auximen, эту безграмотную статью не пнул только ленивый.
avatar
fxsaber, но она не безграмотная. Это одна из вариаций «систематической ошибки выжившего». Сюда же относятся и все ваши «прогоны» ТС.
avatar
Для более корректного сравнения надо было бы взять лучший проход оптимизатора на «обратных» данных.
Но если и так сработало — совсем гуд.
avatar
VladMih, почему так было бы корректнее?
На тему «гуд или нет» не могу ничего сказать, т.к. трактовать результат не получается. Т.е. не вижу ни плюсов, ни минусов такому положению вещей.

Интересный теоретический результат — да. Что-то более — пока не осознал.
avatar
fxsaber, ну смотрите — есть два набора данных.
Один оптимизирован с выбором лучшего варианта,
а второй вообще не оптимизирован. Так разве корректно?

Я не для критики, а лишь для того, чтобы показать, что робот у вас неплохой даже при таком сравнении, но на деле он еще лучше )
avatar
VladMih, так задача и была запустить лучший набор прямого времени на обратном. Потому что лучший набор на обратном и так даст замечательную картинку из-за подгонки.
avatar
fxsaber, это факт только для случая, когда получилось как у вас.
Но если поставленная задача выполнена — поздравляю.
avatar
VladMih, безусловно, инвертированный символ — это другой инструмент. Но все же он имеет много общего со своим предком. Это видно на картинках.
avatar
fxsaber, возможно это просто совпало. А возможно в такой проверке и смысла мало, т.к. характер инструмента таки сохранился и это не совсем уж другой инструмент. Тогда в чем был смысл эксперимента?
avatar
VladMih, хотелось подтвердить, что закономерности работают в обе стороны.
avatar

теги блога fxsaber

....все тэги



UPDONW
Новый дизайн