fxsaber
fxsaber личный блог
02 марта 2020, 00:08

Инверсирование времени

В комментариях было предложено подумать над поведением ТС после инверсирования времени — тики идут в обратном направлении (из будущего в прошлое), будто включили перемотку назад.

Там же можно было почитать, на каких символах инверсирование может не влиять на результат ТС, а для каких — это серьезное изменение рыночных закономерностей.

К счастью, форекс-символы не должны в теории уничтожать рыночные закономерности при таком инверсировании времени. Мне стало интересно это проверить на одной из своих ТС.

Сначала код инверсирования тикового ряда на 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;  
}

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


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


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

Без выводов.

11 Комментариев
  • Auximen
    02 марта 2020, 00:41
    )) Вчера как раз отличную статью здесь приводили по вашей теме: https://zen.yandex.ru/media/the_world_is_not_easy/300-let-v-iskajennoi-realnosti-5df74a43aad43600affce4d0
      • Auximen
        02 марта 2020, 01:30
        fxsaber, но она не безграмотная. Это одна из вариаций «систематической ошибки выжившего». Сюда же относятся и все ваши «прогоны» ТС.
  • VladMih
    02 марта 2020, 22:33
    Для более корректного сравнения надо было бы взять лучший проход оптимизатора на «обратных» данных.
    Но если и так сработало — совсем гуд.
      • VladMih
        03 марта 2020, 14:23
        fxsaber, ну смотрите — есть два набора данных.
        Один оптимизирован с выбором лучшего варианта,
        а второй вообще не оптимизирован. Так разве корректно?

        Я не для критики, а лишь для того, чтобы показать, что робот у вас неплохой даже при таком сравнении, но на деле он еще лучше )
          • VladMih
            03 марта 2020, 15:25
            fxsaber, это факт только для случая, когда получилось как у вас.
            Но если поставленная задача выполнена — поздравляю.
              • VladMih
                03 марта 2020, 15:34
                fxsaber, возможно это просто совпало. А возможно в такой проверке и смысла мало, т.к. характер инструмента таки сохранился и это не совсем уж другой инструмент. Тогда в чем был смысл эксперимента?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн