Библиотеки: BestInterval - страница 14

 
Stanislav Korotky:

Это с каких пор возник такой барьер? ;-) Раньше вроде было понятно. Или я накосячил с английским?

Барьер всегда был. Иногда шел напролом - чтение исходников.

 
fxsaber:

К сожалению, языковой барьер мешает вникнуть в Вашу работу. Насчет интереса к другим фильтрам, конечно, согласен

Бог тебе судья. 

 
Памятка
#include <fxsaber\BestInterval\BestInterval.mqh>

void OnStart()
{
  BESTINTERVAL BestInterval;

  // Соответствующие значения для всего BestInterval
  Print(BestInterval.GetTotal());          // Количество закрытых позиций.
  Print(BestInterval.GetTotalPlus());      // Количество прибыльных закрытых позиций.
  Print(BestInterval.GetTotalMinus());     // Количество убыточных закрытых позиций.
  Print(BestInterval.GetMean());           // Мат. ожидание
  Print(BestInterval.GetProfit());         // Прибыль
  Print(BestInterval.GetProfitFactor());   // Профит-фактор
  Print(BestInterval.GetProfitPlus());     // Прибыль положительных сделок
  Print(BestInterval.GetProfitMinus());    // Убыток отрицательных сделок
  Print(BestInterval.GetRecoveryFactor()); // Фактор восстановления
  Print(BestInterval.GetMaxDrawDown());    // Максимальная абсолютная просадка по балансу

  Print(BestInterval.GetAmountDeleteIntervals()); // Количество удаленных плохих интервалов

  INTERVAL Intervals[];

  const int Size = BestInterval.GetIntervals(Intervals); // Получили интервалы, из которых состоит BestInterval

  // Для каждого интервала распечатали его показатели
  for (int i = 0; i < Size; i++)
  {
    Print(Intervals[i].Total);          // Количество закрытых позиций.
    Print(Intervals[i].TotalPlus);      // Количество прибыльных закрытых позиций.
    Print(Intervals[i].TotalMinus);     // Количество убыточных закрытых позиций.
    Print(Intervals[i].Mean);           // Мат. ожидание
    Print(Intervals[i].Profit);         // Прибыль
    Print(Intervals[i].ProfitFactor);   // Профит-фактор
    Print(Intervals[i].ProfitPlus);     // Прибыль положительных сделок
    Print(Intervals[i].ProfitMinus);    // Убыток отрицательных сделок
    Print(Intervals[i].RecoveryFactor); // Фактор восстановления
    Print(Intervals[i].MaxDrawDown);    // Максимальная абсолютная просадка по балансу

    Print(Intervals[i].OpenTime);       // Время открытия интервала.
    Print(Intervals[i].CloseTime);      // Время закрытия интервала.
  }
}
 
Stanislav Korotky:

Делать сечения только по интервалам времени - узкоспециализированный подход. По идее сечения по другим параметрам могут быть не менее интересны.

думал, думал, так и не придумал что кроме времени можно так же эффективно фильтровать.

по идее это что-то должно не быть частью стратегии и влиять напрямую на поведение рынка.

стакан? другие датафиды?

и еще вопрос - есть смысл делать гиперкубы? по идее по отдельности оно все тоже должно хорошо фильтроваться.

 

Прочел про OLAP еще раз. Возможно, слабо уловил, но там отсутствует нахождение оптима.

Какой смысл просто в построении графиков таких сечений данных?

Поэтому, если правильно понял, обобщение к библиотеке никаких боком, к сожалению.


ЗЫ Но обобщение возможно, конечно.

MQL's OOP notes: Online Analytical Processing of trading hypercubes: part 1
MQL's OOP notes: Online Analytical Processing of trading hypercubes: part 1
  • 2017.04.29
  • www.mql5.com
Normally trader's activity involves analysis of a lot of data. Part of it, and probably most significant part, are numbers. Time series, economic indicators, trading reports should be studied, classified and analyzed. It's very likely that this is the trading was the first applied field for big data science. When numbers form a massive array...
 
Andrei Trukhanovich:

думал, думал, так и не придумал что кроме времени можно так же эффективно фильтровать.

по идее это что-то должно не быть частью стратегии и влиять напрямую на поведение рынка.

стакан? другие датафиды?

и еще вопрос - есть смысл делать гиперкубы? по идее по отдельности оно все тоже должно хорошо фильтроваться.

Параметры, символы, дни недели (они вроде как тоже "время", но я не видел их использования в BestInterval), длительность удержания (вроде тоже "время", но не абсолютное, а относительное), размеры лотов, количество сделок с заданным исходом в близкой истории, и т.д.

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

 
fxsaber:

Прочел про OLAP еще раз. Возможно, слабо уловил, но там отсутствует нахождение оптима.

Какой смысл просто в построении графиков таких сечений данных?


Поэтому, если правильно понял, обобщение к библиотеке никаких боком, к сожалению.


ЗЫ Но обобщение возможно, конечно.

Ну, в этом смысле можно считать гиперкуб промежуточными мета-данными, в которых легко найти оптимум в понимании подхода BestInterval - разве нет? Достаточно "привязать" все записи гиперкуба к какой-то величине, которую следует максимизировать (например, профит) и фильтруя гиперкуб (как BestInterval фильтрует время), получить лучшие значения по прочим параметрам, не только по времени.

Представьте себе, что код BestInterval остался прежним, но вместо времени туда подали какие-то другие числа - программе же на это в общем-то по барабану - она все равно найдет Best"Interval".

 
В общем, в моем понимании, BestInterval строит гиперкуб профита по времени, и потом находит лучшее сочетание ячеек гиперкуба. В моем гиперкубе нет второй фазы поиска сочетаний. Но никто не запрещает отбирать ячейки одна за другой, выдумав кучу алгоритмов для этого.
 

Про возможность замены времени говорил. Не понимаю, зачем таблицу называть гиперкубом?

Сам BestInterval только максимизирует прибыль по фильтру. Дело не фильтре, а в нахождении прибыли с последовательной отбраковкой.

Что касается фильтра в виде времени открытия, то он жутко удобен для ТС на отложенных ордерах. В Тестере получается его применять без проблем.

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

 
fxsaber:

Про возможность замены времени говорил. Не понимаю, зачем таблицу называть гиперкубом?

Сам BestInterval только максимизирует прибыль по фильтру. Дело не фильтре, а в нахождении прибыли с последовательной отбраковкой.

Что касается фильтра в виде времени открытия, то он жутко удобен для ТС на отложенных ордерах. В Тестере получается его применять без проблем.

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

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

Про предсказание фильтра наперед - не понял. Есть фактические данные, мы их обработали, получили рекомендации - где здесь предсказания?