Пиши и зарабатывай на MQL5 - страница 87

 
Rashid Umarov:

Вот еще идея для статьи - связка функций из раздела Работа с результатами оптимизации с вычислениями в OpenCL:

  1. в OnTester() делаем отправку массива трейдов
  2. в OnTesterDeinit() готовим массив трейдов по оптимизациям и отправляем OpenCL-программу для расчета всех параметров, которые можно получить с помощью
    TesterStatistics
  3. запись результатов в файл и сравнение эталоном, не забываем добавить параметры прохода из ParameterGetRange

Цель статьи:

  • показать самостоятельный расчет торговой статистики в MQL5
  • показать как этот кодпереносится в OpenCL и объяснить что и зачем при этом делается.

Пример получения данных во время оптимизации можно найти в статье Визуализируй стратегию в тестере MetaTrader 5

Без OpenCL расчет статы по double-массиву был в какой-то статье. Передача массива с Агента на Терминал - аналогично.

Мутить имеет смысл в другом направлении. Из кучи проходов Оптимизатора составить идеальный портфель из этих проходов. Тут и OpenCL может помочь, т.к. это мат. задача.
 
Почти на статью тянет вычисление безубытка в MT5.
 
fxsaber:
Мутить имеет смысл в другом направлении. Из кучи проходов Оптимизатора составить идеальный портфель из этих проходов. Тут и OpenCL может помочь, т.к. это мат. задача.

OpenCL позволяет проводить одноборазные вычисления на различающимися потоками входных данных. То есть выполнять распределенные вычисления по одному алгоритму

 
Rashid Umarov:

OpenCL позволяет проводить одноборазные вычисления на различающимися потоками входных данных. То есть выполнять распределенные вычисления по одному алгоритму

Вот поэтому и нужен OpenCL для вычисления портфеля. Это не детская задача, как вычисление статы.

 
fxsaber:

Вот поэтому и нужен OpenCL для вычисления портфеля.

Вы не поняли

 
fxsaber:

Это не детская задача, как вычисление статы.

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

 
Rashid Umarov:

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

При вычислении статы через передачу с Агентов не будет никаких параллельных расчетов.


В случае же портфеля, нужно написать такую функцию

struct EQUITY
{
  double Equity[];
};

// Вычисляет веса идеального портфеля из эквити нескольких ТС
bool GetPotrolioWeights( const EQUITY &Equities[], double &Weights[] );

 Она супер-параллелится. И имеет огромное практическое применение в трейдинге!

 
fxsaber:

При вычислении статы через передачу с Агентов не будет никаких параллельных расчетов.

Я же писал

в OnTesterDeinit() готовим массив трейдов по (оптимизациям - описка) проходам и отправляем в OpenCL-программу для расчета всех параметров, которые можно получить с помощью
TesterStatistics


 
fxsaber:

В случае же портфеля, нужно написать такую функцию

 Она супер-параллелится. И имеет огромное практическое применение в трейдинге!

Можно и эту задачу решить. Только наложить ограничение на количество стратегий в портфеле. На эту тему можно было бы отдельную статью написать - "Cравнение Математических вычислений в тестере с Выполением расчетов в OpenCL". Дать готовое решение для трейдеров в виде MQL5-программы

 
Rashid Umarov:

Я же писал

Ну это высосанная из пальца задача. Для расчета статы не нужно дожидаться окончания тестирования, иначе можно столкнуться с оболом в виде нештатного закрытия Терминала. Более того, зачем что-то выжидать, когда можно тут же посчитать, как пришел очередной проход? Как целесообразность использовать OpenCL на задачах, которые не дадут никакого ускорения по сравнению с MQL5-кодом? В учебных целях - сомнительно. Потому что не видно преимуществ OpenCL. Ради самой технологии - для гиков.

Нужна практическая в трейдинге тяжелая мат. задача, где OpenCL способен показать космос. Такую задачу озвучил.

Причина обращения: