Некоторые признаки правильных ТС - страница 9

 
Petros Shatakhtsyan:

Почему не в теме ?

Когда мы цену увеличиваем или умножаем на константу, то от этого характер движения цен не меняется.

Возможно, я не правильно трактовал "проверку стабильности". Если речь об оценке робастности ТС, то не по теме.

 
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;  
}


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


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


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


Без выводов.

Файлы:
 

fxsaber:

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

Ни чего удивительного. Особенно если используется торговля по сигналам индикатора/ов. Обратный порядок тиков, рисует другую картинку. Что приводит к тому что индикаторы выдают больше/меньше сигналов входа/выхода.
Это самое простое что пришло в голову. А если копнуть поглубже, то нюансов вылезет довольно много. И все из-за изменения картинки тиков.

 
Konstantin Nikitin:

Ни чего удивительного. Особенно если используется торговля по сигналам индикатора/ов. Обратный порядок тиков, рисует другую картинку. Что приводит к тому что индикаторы выдают больше/меньше сигналов входа/выхода.
Это самое простое что пришло в голову. А если копнуть поглубже, то нюансов вылезет довольно много. И все из-за изменения картинки тиков.

Запись будто вырвана из контекста. Наверное, перед этим у Вас были какие-то выводы. Пока ничего не понял из этих предложений.

 
Nikolai Semko:
я бы добавил главное:
  • не имеет периодо-зависимых параметров.
  • работа ТС не зависит от текущего таймфейма графика
  • работа ТС не зависит от символа-инструмента
  • вся настройка ТС - это только настройка управления рисками (размера используемого депозита)

Сказочник... 

 
Алексей Тарабанов:

Сказочник... 

в чем то он прав ...

скорее всего во всем и затая дыхание смотрит на реакцию..., молча

а хотелось бы продолжения банкета, так сказать

;)

 
Renat Akhtyamov:

в чем то он прав ...

скорее всего во всем и затая дыхание смотрит на реакцию..., молча

а хотелось бы продолжения банкета, так сказать

;)

Просто Мартингейл. Идеал. 

 
fxsaber:
   

...

Например, взяли EURUSD. Прогнали ТС, получив ряд входов.

Затем создали символ 100/EURUSD. Прогнали ТС. Входы должны совпадать с оригинальными.

Если такого не происходит (99%), ТС написана неправильно.

Как ТС должна реагировать на символы, возведенные в какую-то степень, - не сообразил.

Надо бы уточнить. Для 100/EURUSD входы и выходы должны поменяться местами либо поменяться должны направления открытия сделок (sell вместо buy). У обратной величины знак изменения противоположный на том же участке времени. Какие преобразования подходят - думаю, монотонные на всем временном диапазоне. И возведение в положительную степень, и логарифмирование по любому основанию.

Ведь все нарисуют, где надо было покупать, где продавать, если история курса уже есть - покупай на минимумах, продавай на максимумах. Преобразования с помощью монотонной функции сохраняют местонахождение экстремумов, этого достаточно.

 
Vladimir:

Надо бы уточнить. Для 100/EURUSD входы и выходы должны поменяться местами либо поменяться должны направления открытия сделок (sell вместо buy).

Конечно, направление поменяется, но не время.

У обратной величины знак изменения противоположный на том же участке времени. Какие преобразования подходят - думаю, монотонные на всем временном диапазоне. И возведение в положительную степень, и логарифмирование по любому основанию.

Ведь все нарисуют, где надо было покупать, где продавать, если история курса уже есть - покупай на минимумах, продавай на максимумах. Преобразования с помощью монотонной функции сохраняют местонахождение экстремумов, этого достаточно.

При таком преобразовании, действительно, локальные экстремумы останутся на месте. При этом выявить их сможет только одна фунция - ЗигЗаг с нулевым мин. коленом.

Локальные экстремумы, выявленные через ЗигЗаг с другим размером мин. колена ( минимальное относительное изменение цены между экстремумами) или не ЗигЗаг (любая другая функция), не будут совпадать после умножения на монотонную функцию.


Инвариант нулевого ЗигЗага при Вашем предложенном преобразовании, к сожалению, не дает возможности по измененному ряду вернуться к исходному. Поэтому преобразование не может не менять результат ТС для всех монотонных функций.


Однако, для некоторых конкретных функций обратное преобразование возможно. Я упомянул функцию константу. Там совсем элементарно.

Вы натолкнули на более общий пример - умножение на линейную (по времени) функцию. Однако, там для обратного преобразования нужно иметь хотя бы небольшой (где есть не меньше двух локальных экстремумов) интервал исходного ценового ряда.


При этом в реале мы не обладаем таким интервалом исходного ценового ряда. Это даже если не затрагивать не совсем понятную до конца экономическую трактовку такого преобразования. Возможно, умножение на линейную функцию - это скрытая инфляция одного из активов.


В общем, к сожалению, обобщить умножение на константу не получится. Но мысль была очень интересная, спасибо.

 
Renat Akhtyamov:

в чем то он прав ...

он просто прав.
Причина обращения: