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, возможно это просто совпало. А возможно в такой проверке и смысла мало, т.к. характер инструмента таки сохранился и это не совсем уж другой инструмент. Тогда в чем был смысл эксперимента?

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

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