Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 3184
- Рейтинг:
- Опубликован:
- 2012.08.11 09:51
- Обновлен:
- 2014.04.21 14:55
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Набор функций для решения матриц.
Матрица задается в одномерном массиве, подряд: элементы первой строки, второй и т.д. Последние два элемента массива определяют размер матрицы: число колонок и число строк.
Пример:
double m[]={1,2,3,
4,5,6,
2,3}; // Матрица из двух строк и трех колонок.
Функции библиотеки:
- void MxSetSize(double & aA[],int aRows,int aCols) - Установка размера матрице aA, aRows - количество строк, aCols - количество колонок;
- void MxSetValue(double & aA[],int aRow,int aCol,double aValue) - Установка значения (Value) элемента матрицы aA, расположенного в строке aRow и колонке aCol;
- int MxGetSize(double & aA[],int & aRows,int & aCols) - Возвращает количество элементов матрицы aA, по ссылка возвращает: aRows - количество строк, aCols - количество колонок;
- int MxGetRows(double & aA[]) - Возврат количества строк матрицы aA;
- int MxGetCols(double & aA[]) - Возврат количества колонок матрицы aA;
- double MxGetValue(double & aA[],int aRow,int aCol) - Получение значения элемента матрицы aA, расположенного в строке aRow и колонке aCol;
- void MxCopy(double & aFrom[],double & aTo[]) - Копирование матрицы из масива aFrom в массив aTo;
- bool MxCheckForAdd(double & aA[],double & aB[]) - Поверка подходимости двух матриц по размерам для сложения (полня эквивалентность по высоте и ширине);
- bool MxCheckForMult(double & aA[],double & aB[]) - Поверка подходимости двух матриц по размерам для умножения (к-во столбцов матрицы aA равно ко-ву строк матрицы aB);
- bool MxCheckIsSq(double & aA[]) - Поверка является ли матрица квадратной;
- void MxAddNum(double & aA[],double aNum,double & aR[]) - Прибавление числа aNum к матрице aA, результат (матрица) возвращается по ссылке в маcсиве aR;
- void MxMultNum(double & aA[],double aNum,double & aR[]) - Умножение матрицы aA на число aNum, умноженная матрица возвращается по ссылке в маcсиве aR;
- void MxAddMx(double & aA[],double & aB[],double & aAB[]) - Сложение матриц aA и aB, результат возвращается по ссылке в aAB;
- void MxMultMx(double & aA[],double & aB[],double & aAB[]) - Умножение матрицы aA на матрицу aB, результат возвращается по ссылке в aAB;
- void MxT(double & aA[],double & aT[]) - Транспонирование матрицы aA, транспонированная матрица возвращается по ссылке в aT;
- void MxMxAA(double & aA[],double & aAA[]) - Получение матрицы алгебраического дополнения. aA - исходная матрица, aAA - алгебраическое дополнение (возвращается по ссылке);
- bool MxB(double & aA[],double & aB[]) - По ссылке возвращает обратную матрицу aB от матрицы aA, сама функция возвращает true при существовании обратной матрицы или false, если обратной матрицы не существует;
- void MxTriangle(double & aA[],double & aT[]) - По ссылке возвращает треугольную матрицу aT от матрицы aA;
- void MxM(double aA[],int aRow,int aCol,double & aM[]) - Получение минора от матрицы aA по строке aRow и колонке aCol, минор возвращается по ссылке в массиве aM;
- double MxDefM(double & aA[],int aRow,int aCol) - Возвращает значение определителя минора матрицы aA по строке aRow и колонке aCol;
- void MxMxM(double & aA[],double & aM[]) - Получение матрицы миноров (матрица со значениями определителей миноров). aA - исходная матрица, aM -матрица с определителями миноров (возвращается по ссылке);
- double MxDef(double & aA[]) - Возвращает значение определителя матрицы aA;
- int MxRank(double & aA[]) - Возвращает ранг матрицы aA;
- int MxRankDRC(double & aA[],double & aDef,int & aRow,int & aCol) - Возвращает ранг матрицы aA и по ссылкам возвращает: aDef - значение определителя, aRow, aCol - строка и колонка минора с определителем не равным 0;
- void MxCopyCol(double & aFrom[],double & aTo[],int aFromCol,int aToCol,double & aR[]) - Копирование колонки с индексом aFromCol из матрицы aFrom в матрицу aTo в колонку с индексом aToCol, результат возвращается по ссылке в aR;
- void MxCopyRow(double & aFrom[],double & aTo[],int aFromRow,int aToRow,double & aR[]) - Копирование строки с индексом aFromRow из матрицы aFrom в матрицу aTo в колонку с индексом aToRow, результат возвращается по ссылке в aR;
- void MxAppendCol(double & aA[],double & aC[],double & aR[]) - Расширение матрицы aA путем добавления к ней колонки aC, результат возвращается по ссылке в aR;
- bool MxSystemKramer(double & aK[],double & aY[],double & aX[]) - Решение системы уравнений методом Крамера. aК - матрица коэффициентов (квадратная), aY - столбец значений, aX - строка результатов;
- bool MxSystemInverse(double & aK[],double & aY[],double & aX[]) - Решение системы уравнений через обратную матрицу. aК - матрица коэффициентов (квадратная), aY - столбец значений, aX - строка результатов;
- bool MxSystemGauss(double & aK[],double & aY[],double & aX[]) - Решение системы уравнений методом Гаусса. aК - матрица коэффициентов (квадратная), aY - столбец значений, aX - строка результатов;
- int MxSystemCheck(double & aK[],double & aY[]) - Проверка системы уравнений. aК - матрица коэффициентов (квадратная), aY - столбец значений. Возвращаемое значение: -1 - нет решений, 0 - одно решение, 1 - бесконечное множество решений;
- void MxAlert(double & aA[],int aDigits=2,string aCaption="") - Вывод всей матрицы в одном алерте. aA - матрица, aDigits - количество знаков после запятой, aCaption - заголовок сообщения;
- void MxAlert2(double & aA[],int aDigits=2,string aCaption="") - Вывод матрицы в алерт построчно, сроки выводятся снизу вверх, затем, заголово, т.е. в окне алерта матрица нормально ориентирована: заголовок сверху, затем строки по порядку;
- void MxAlert1Str(double & aA[],int aDigits=2) - Вывод массива матрицы строкой в алерт.
Скрипт sMatrix.mq4 - это пример использования библиотеки для решения системы линейный уравнений методом Крамера, обратной матрицы и Гаусса.

Торговля индексами: Platinum, Gold, GoldP2.

Пипсовщик с ненавязчивыми проявлениями мартина, точнее долива в зависшую позицию.

Отображает на графике совершенные сделки (подобно тестеру).

Советник содержит функции, которые в процессе торга отрисовывают историю сделок как в тестере стратегий.