Для информации новое для машинного обучения в MQL5:
MQL5: Добавлен оператор матричного умножения @. Он работает по правилам линейной алгебры и позволяет умножать матрицы и векторы, а также выполнять скалярное произведение векторов.
Матричное умножение (матрица × матрица)
matrix A(2, 3);
matrix B(3, 2);
matrix C = A @ B; // Результат: матрица C размером [2,2]
Матричное умножение (матрица × вектор)
matrix M(2, 3);
vector V(3);
vector R = M @ V; // Результат: вектор R из 2 элементов
Матричное умножение (вектор × матрица)
matrix M(2, 3);
vector V(1, 2);
vector R = V @ M; // Результат: вектор R из 3 элементов
MQL5: Добавлен параметр ddof в методы Std, Var и Cov. Он определяет число степеней свободы, которые вычитаются из делителя при вычислении стандартного отклонения. Для Std и Var параметр по умолчанию равен 0, для Cov — 1.
Как влияет ddof:
По умолчанию ddof=0, и стандартное отклонение вычисляется для всей совокупности (population standard deviation).
Если ddof=1, то используется выборочное стандартное отклонение (sample standard deviation), что корректирует оценку для конечной выборки (используется в статистике при работе с подмножеством данных).
EigenTridiagonalDC — вычисляет собственные значения и собственные векторы симметричной трехдиагональной матрицы с использованием алгоритма «разделяй и властвуй» (LAPACK-функция STEVD).
EigenTridiagonalQR — вычисляет собственные значения и собственные векторы симметричной трехдиагональной матрицы с использованием QR-алгоритма (LAPACK-функция STEV).
EigenTridiagonalRobust — вычисляет собственные значения и собственные векторы симметричной трехдиагональной матрицы с использованием алгоритма MRRR (Multiple Relatively Robust Representations) (LAPACK-функция STEVR).
EigenTridiagonalBisect — вычисляет собственные значения и собственные векторы симметричной трехдиагональной матрицы с использованием алгоритма бисекции (LAPACK-функция STEVX).
ReduceToBidiagonal — приводит общую вещественную или комплексную матрицу размером m×n к верхней или нижней бидиагональной форме B с помощью ортогонального преобразования: Q**T * A * P = B. Если m≥n, то B является верхней бидиагональной матрицей, иначе — нижней бидиагональной. (LAPACK-функция GEBRD).
ReflectBidiagonalToQP — генерирует ортогональные матрицы Q и P**T (или P**H для комплексных типов), определяемые методом ReduceToBidiagonal при приведении вещественной или комплексной матрицы A к бидиагональной форме: A = Q * B * P**T. Q и P**T представляют собой произведения элементарных отражателей H(i) или G(i) соответственно. (LAPACK-функции ORGBR, UNGBR).
ReduceSymmetricToTridiagonal — приводит вещественную симметричную или комплексную эрмитову матрицу A к трехдиагональной форме B с помощью ортогонального преобразования подобия: Q**T * A * Q = B. (LAPACK-функции SYTRD, HETRD).
ReflectTridiagonalToQ — генерирует ортогональную матрицу Q, которая представляет собой произведение n-1 элементарных отражателей порядка n, возвращаемых функцией ReduceSymmetricToTridiagonal.
LinearEquationsSolution — вычисляет систему линейных уравнений с квадратной матрицей коэффициентов A и несколькими правыми частями.
LinearEquationsSolutionTriangular — вычисляет систему линейных уравнений с квадратно-треугольной матрицей коэффициентов A и несколькими правыми частями.
LinearEquationsSolutionSy — вычисляет систему линейных уравнений с симметричной или эрмитово сопряженной матрицей A и несколькими правыми частями.
LinearEquationsSolutionComplexSy — вычисляет систему линейных уравнений с комплексной симметричной матрицей A и несколькими правыми частями.
LinearEquationsSolutionGeTrid — вычисляет систему линейных уравнений с симметричной или эрмитово сопряженной положительно определенной матрицей A и несколькими правыми частями.
LinearEquationsSolutionSyPD — вычисляет систему линейных уравнений с общей (несимметричной) трехдиагональной матрицей коэффициентов A и несколькими правыми частями.
LinearEquationsSolutionSyTridPD — вычисляет систему линейных уравнений с симметричной трехдиагональной положительно определенной матрицей A и несколькими правыми частями.
FactorizationQR — вычисляет QR-разложение общей матрицы размера m на n: A = Q * R (LAPACK-функция GEQRF).
FactorizationQRNonNeg — вычисляет QR-разложение общей матрицы размера m на n: A = Q * R, где R — верхнетреугольная матрица с неотрицательными элементами на диагонали (LAPACK-функция GEQRFP).
FactorizationQRPivot — вычисляет QR-разложение общей матрицы размера m на n с перестановкой столбцов: A * P = Q * R (LAPACK-функция GEQP3).
FactorizationLQ — выполняет LQ-разложение общей матрицы размером m на n: A = L * Q (LAPACK-функция GELQF).
FactorizationQL — выполняет QL-разложение общей матрицы размером m на n: A = Q * L (LAPACK-функция GEQLF).
FactorizationRQ — выполняет RQ-разложение общей матрицы размером m на n: A = R * Q (LAPACK-функция GERQF).
FactorizationPLU — вычисляет LU-разложение общей матрицы A размером m на n с использованием частичного выбора ведущего элемента и перестановок строк (LAPACK-функция GETRF).
FactorizationPLUGeTrid — вычисляет LU-разложение общей (несимметричной) трехдиагональной матрицы A размером n на n с использованием частичного выбора ведущего элемента и перестановок строк (LAPACK-функция GTTRF).
FactorizationLDL — вычисляет разложение для вещественной симметричной или комплексной эрмитовой матрицы A с использованием диагонального выбора ведущего элемента по методу Банча-Кауфмана (LAPACK-функции SYTRF и HETRF).
FactorizationLDLSyTridPD — вычисляет разложение симметричной положительно определенной (для вещественных данных) или эрмитовой положительно определенной (для комплексных данных) трехдиагональной матрицы A (LAPACK-функция PTTRF).
FactorizationCholesky — вычисляет разложение для вещественной симметричной или комплексной эрмитовой положительно-определенной матрицы A (LAPACK-функция POTRF).
FactorizationCholeskySyPS — вычисляет разложение Холецкого с полным выбором ведущего элемента (complete pivoting) для вещественной симметричной (или комплексной эрмитовой) положительно полуопределенной матрицы A размером n на n (LAPACK-функция PSTRF).
MQL5: Добавлена функция и метод Random для заполнения случайными значениями векторов и матриц. Случайные значения генерируются равномерно в заданном диапазоне.
staticvectorvector::Random(
constulong size, // длина вектораconstdouble min=0.0, // минимальное значениеconstdouble max=1.0// максимальное значение
);
staticmatrixmatrix::Random(
constulong rows, // количество строкconstulong cols // количество столбцовconstfloat min=0.0, // минимальное значениеconstfloat max=1.0// максимальное значение
);
Aleksey Nikolayev #: Надеюсь на статью - почитаем, вдохновимся на новые подвиги на граальном фронте )
Там примерно что-то наподобие генераторов с разным кол-вом изломов, через анализ симметричных структур (зеркально перевёрнутых). То есть у генератора есть центр (аттрактор) и ветви в прошлое и будущее, которые часто симметричны. Поиск таких структур через корреляцию/энтропию. Структур много, поэтому обобщение с помощью МО. Первые результаты немного порадовали, но надо причесть код и подход.
Проблема с подглядыванием сначала была, потом я от нее избавился, и все равно получилось лучше, чем при классических подходах классификации ВР, когда ряд воспринимается слева направо и в нем ищутся какие-то корреляции.
Основная суть этой теории же в том, что ВР имеет долгую память и более старые наблюдения могут влиять на будущее поведение сильнее, чем самые новые.
Chaos and Fractals in Financial Markets, index to articles, by J. Orlin Grabbe. Problems and answers. Hazardous world. Coin flips and Brownian motion. Coastlines and Koch curves. Jam session. Gamblers, zero-sets, and fractal mountains. Futures trading and the gambler's ruin problem.
This largest section examines the newer variants of Hawkes which were not originally covered in our book (Laub et al., 2022) . We will define each process and describe the key innovations that they bring, and (space-permitting) say some words (and mainly supply references) for each processes’ inference, simulation, theoretical results, and so...
Такие самоподобные структуры ищутся и трейдинг происходит только там, где наблюдается высокая корреляция между левой и перевернутой зеркально правой частью. Таких паттернов находит много, с разными периодами.
Потом довольно замороченная схема как на этом обучать МО, еще до конца не формализовал лучший подход.
Аналог "яиц или куриц". Можно искать разные симметрии, не обязательно зеркальные. Но зеркальные считаю наиболее сильными пока что. На этих участках должна быть низкая энтропия (еще не проверял), поэтому предсказания во время существования таких паттернов будут более точными (идея ТС). То есть если от этого полного паттерна определить направление на n баров вперед в будущее как метку 0 или 1, то она должна предсказываться лучше, чем когда никакой симметрии не наблюдается.
МО просто обобщает сигналы по наборам разных паттернов. Ещё могут быть похожие паттерны с противоречащими сигналами, это тоже предстоит ещё отдельно обработать :)
Ещё могут быть подобия в разных масштабах (мультифрактальные), их тоже надо дополнительно искать. Например, длина одного 100 баров, а другого 50, но они очень похожи. Тогда через пропуски или интерполяцию выравнивать длины.
Получается поиск шаблона на продолжение тренда, а не всякие там двойные вершины, головы/плечи и т.п., которые уже давно не работают. Только тренд - твой френд))
Постараюсь что-нибудь показать в скором времени, чего напридумывал :)
Для информации новое для машинного обучения в MQL5:
Матричное умножение (матрица × матрица)
Матричное умножение (матрица × вектор)
Матричное умножение (вектор × матрица)
Скалярное произведение (вектор × вектор)
Как влияет ddof:
Вычисление собственных значений и собственных векторов
Приведение матриц
Ортогональные разложения
Матричные разложения
Для информации новое для машинного обучения в MQL5:
Спасибо!
Планируется ли когда-нибудь сделать сортировку матриц/векторов?
Надеюсь на статью - почитаем, вдохновимся на новые подвиги на граальном фронте )
This is an interesting book: chaos and fractals in financial markets by j. orlin grabbe https://www.scribd.com/document/49383020/Chaos-Fractals-in-Financial-Markets
https://en.wikipedia.org/wiki/James_Orlin_Grabbe
Такие самоподобные структуры ищутся и трейдинг происходит только там, где наблюдается высокая корреляция между левой и перевернутой зеркально правой частью. Таких паттернов находит много, с разными периодами.
Потом довольно замороченная схема как на этом обучать МО, еще до конца не формализовал лучший подход.
Аналог "яиц или куриц". Можно искать разные симметрии, не обязательно зеркальные. Но зеркальные считаю наиболее сильными пока что. На этих участках должна быть низкая энтропия (еще не проверял), поэтому предсказания во время существования таких паттернов будут более точными (идея ТС). То есть если от этого полного паттерна определить направление на n баров вперед в будущее как метку 0 или 1, то она должна предсказываться лучше, чем когда никакой симметрии не наблюдается.