Будет ли хорошая стратегия работать на случайно сгенерированных данных? - страница 16

 
Aleksey Vyazmikin #:

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

Да просто данные, из которых собираются бары. Если бы у всех были огромные вычислительные ресурсы, то никто бы про тики не спрашивал - все бы на них тестировали.

 
fxsaber #:

Да просто данные, из которых собираются бары. Если бы у всех были огромные вычислительные ресурсы, то никто бы про тики не спрашивал - все бы на них тестировали.

Так если тики так сильно отличаются у разных ДЦ, то как ожидать повторение логики их движения? Ну, кроме арбитража ничего не приходит в голову.

 
Aleksey Vyazmikin #:

Так если тики так сильно отличаются у разных ДЦ, то как ожидать повторение логики их движения?

Никак не ожидать. Сначала выбрать ДЦ с самыми выгодными условиями и затем использовать его тики для торговли.

 
Aleksey Vyazmikin #:

Я так понимаю, логика сия изложена в Вашем индикаторе тут?

там с половиной периода :-) 

нужен полный период..вот тут есть https://www.mql5.com/ru/blogs/post/757407

вот такие должны быть веса у взвешенной:

 

вкратце:

double Weight[]; // массив для "весов"
/// однократный рассчёт весовых коэфф.
bool MakeWeight() {
   slowing=0;
   if (ArrayResize(Weight,PERIOD)!=PERIOD) {
      return false;
   }
   double sum=0.0;
   // просто синусоида :-)
   for(int i=0;i<PERIOD;i++) {
      double x = (i+1.0)/(PERIOD+1.0); // x=(0..1]
      if (BIAS) {
         x=1.0-MathSqrt(x);//MathSqrt(x);              // 
      }
      
      Weight[i]=1.0+MathCos(M_PI+x*2*M_PI);
//      if (BIAS) Weight[i]*=1.0-MathSqrt(x);    
      sum=sum+Weight[i];
      //break;   
   }
   // взвешенные коэфф.
   if (sum==0) return false;
   double half=0;
   for(int i=0;i<PERIOD;i++) {
      Weight[i]=Weight[i]/sum;
      if (slowing==0) {
         half=half+Weight[i];
         if (half>0.5) slowing=i;
      }
   } 
   return true;
}

и подсчёт самой MA :

// взвешенная средняя, по нормированным к 1.0 вектору весов w
double GetMA(double &w[],const double &price[],int shift) 
{
   double ma=0.0;
   int period=ArraySize(w);
   for(int i=0;i<period;i++) {
      ma=ma+price[shift+i]*w[i];
   }  
   return ma; 
}
MMM, часть номер раз
MMM, часть номер раз
  • www.mql5.com
О том как делаются индикаторные стратегии, как торговать по средним и как правильно их готовить. Чуть-чуть в пику повальному увлечению выш-мату, нейронам и машо-бучам. Тому кто соберётся читать то что
 
Maxim Kuznetsov #:

там с половиной периода :-) 

нужен полный период

Понял, попозже покумекаю, может сделаю.

 
fxsaber #:

Никак не ожидать. Сначала выбрать ДЦ с самыми выгодными условиями и затем использовать его тики для торговли.

Я не могу уловить связь между тиками разными ДЦ, почему тики будут похожи только внутри одного ДЦ?

 
Aleksey Vyazmikin #:

Я не могу уловить связь между тиками разными ДЦ, почему тики будут похожи только внутри одного ДЦ?

Вы нарисовали какую-то картину для себя и по ней задаете вопросы человеку, который не в курсе.

 

Тут, опираясь на наблюдение о значимых расхождениях в котировках до 2017 года, рушил попробовать обучить модели по своему методу за период с 2017 года и сравнить их с теми, что обучены были с 2010. Используется та же стратегия на пробитие дневной волатильности. Кроме того, я подготовил ещё два чарта с исключенными часами [22,23,0,1], что бы оценить влияние шума на обучение и проверить идею об исключении этих часов из чарта для обучения и торговли - что бы индикаторы меньше накапливали ошибку.

Список групп моделей с чартов, на которых была получена выборка:

  • MQ_EURUSD - сервер MQ , данные с 2017 до 2024
  • MQ_EURUSD_DH - сервер MQ обрезанный по времене чарт, данные с 2017 до 2024
  • RF_EURUSD - сервер RF , данные с 2017 до 2024
  • RF_EURUSD_DH - сервер RF  обрезанный по времене чарт, данные с 2017 до 2024
  • MQ_EURUSD_2010v1 - сервер MQ, данные с 2010 до 2024
  • MQ_EURUSD_2010v2 - сервер MQ, данные с 2010 до 2024 иные настройки обучения

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

Оценка моделей происходит на периоде с 01.01.2024 до 01.09.2024 - этот период никак не участвовал в создании модели, используется 4 чарта по два от MQ и RF с исключёнными часами и без.

Использовал ряд не хитрых критериев для оценки, вот что получилось.

Таблица 1

Таблица 1 показывает среднюю прибыль по балансу всех моделей каждой группы на четырёх чартах, а так же среднее значение для справки результата на четырёх чартах.

Видим, что группы моделей, обученные на полной выборке с чарта MQ с 2010 года имеют лучшие показатели, чем те, что обучались только с 2017 года. Выделяются результаты моделей обученных на выборке с исключёнными часами, при этом модели на данных от RF лучше, чем на данных от MQ. Озадачивает тот факт, что все модели показывают лучшие свои результаты на выборках с индексом DH (исключённые часы).

Таблица 2

Таблица 3

Таблицы 2 и 3 сообщают, сколько моделей было с положительным финансовым результатом в каждой группе на каждом чарте от числа всех представителей группы. Разница между в таблицами в том, что Таблица 2 считает положительный результат при превышении порога ноль, а Таблица 3 при превышении порога 1000. Странным кажется, что некоторые группы моделей, обученные на выборках конкретного чарта ведут себя в основном хуже на нём, чем на отличных чартах, даже если исключить MQ_EURUSD_DH.

Таблица 4

Таблица 5

Таблицы 4 и 5 показывает процент совпадения конкретных моделей по прибыли на разных выборках, так Таблица 4 означает, что если прибыль у конкретной модели была на своём чарте и на другом чарте больше 0, то такая модель увеличивает процент, а таблица 5 подымает порог для отбора с нуля до одной тысячи. По таблице 4 видим, что модели, обученные на чарте от MQ в более чем 50% случаев работает на чартах с исключёнными часами, в то время как модели, полученные на чартах с исключёнными часами с чарта MQ, перестают работать на чарте без исключенных часов от MQ. Модели полученные на данных чарта от RF так же имеют шанс работать на чарте с исключенными часами от RF, но тут уже значительно ниже процент таких моделей - всего 36% по аналогичному сравнению с MQ - там было 64%. В то же время на выборке EURUSD_DH 67% моделей поддерживают положительный финансовый результат. Лучшую совместимость с другими чартами показала группа с моделями, полученными на выборке с чарта с исключёнными часами от RF. Таблица 5 построена на малом числе примеров, поэтому не стоит делать каких то выводов из его содержания.

Я ставил две задачи - два вопроса, на которые хотел получить ответ по результатам этого экспериментального исследования:

  1. Сравнить обучение на данных с 2010 и 2017 года, есть ли смысл в большем периоде?
  2. Сравнить эффективность работы моделей, обученных на урезанной выборке.

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

А по второму вопросу были получены противоречивые данные, так модели обучавшиеся по данным от RF, с исключёнными часами, показали относительно хороший результат на всех чартах, а от MQ можно сказать провалились.

Интересным кажется наблюдение, что модели, независимо от данных на которых они были получены, лучше работают на выборках с исключёнными часами. Почему так, есть идеи?

Конечно, и показатели для сравнения не самые лучшие и факт, что модели имеют рандомизацию при создании, даёт повод сомневаться в результате. Может у Вас есть идеи, как лучше поставить эксперимент для ответа на выше обозначенные вопросы?

 
fxsaber #:

Вы нарисовали какую-то картину для себя и по ней задаете вопросы человеку, который не в курсе.

Я про картинку из ссылки, что Вы же и дали...

 
Aleksey Vyazmikin #:

Я про картинку из ссылки, что Вы же и дали...

Да, спреды разные.