Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

Просмотров:
2031
Рейтинг:
голосов: 38
Опубликован:
2012.08.03 14:31
Обновлен:
2012.08.09 13:20
\MQL5\Include\

Класс для работы с матрицами.

Матрица задается в одномерном массиве, подряд: элементы первой строки, второй и т.д. Последние два элемента массива определяют размер матрицы: число колонок и число строк.

Пример:

double m[]={1,2,3,
           4,5,6,
           2,3}; // Матрица из двух строк и трех колонок.

Методы класса:

Метод Назначение метода и параметров

void SetSize(
  double& aA[],
  int aRows,
  int aCols
)

Устанавливает размер матрицы aA. aRows - количество строк, aCols - количество колонок.

void SetValue(
  double& aA[],
  int aRow,
  int aCol,
  double aValue
)

Устанавливает значение (Value) элемента матрицы aA, расположенного в строке aRow и колонке aCol.

int GetSize(
  double& aA[],
  int& aRows,
  int& aCols
)

Возвращает количество элементов матрицы aA. По ссылке возвращает: aRows - количество строк, aCols - количество колонок.

int GetRows(
  double& aA[]
)

Возвращает количество строк матрицы aA.

int GetCols(
  double& aA[]
)

Возвращает количество колонок матрицы aA.

double GetValue(
  double& aA[],
  int aRow,
  int aCol
)

Получает значение элемента матрицы aA, расположенного в строке aRow и колонке aCol.

void Copy(
  double& aFrom[],
  double& aTo[]
)

Копирует матрицу из массива aFrom в масив aTo.

bool CheckForAdd(
  double& aA[],
  double& aB[]
)

Поверка подходимости двух матриц по размерам для сложения (полная эквивалентность по высоте и ширине).

bool CheckForMult(
  double& aA[],
  double& aB[]
)

Поверка подходимости двух матриц по размерам для умножения (к-во столбцов матрицы aA равно ко-ву строк матрицы aB).

bool CheckIsSq(
  double& aA[]
)

Поверяет, является ли матрица квадратной.

void AddNum(
  double& aA[],
  double aNum,
  double& aR[]
)

Прибавляет число aNum к матрице aA. Результат (матрица) возвращается по ссылке в маcсиве aR.

void MultNum(
  double& aA[],
  double aNum,
  double& aR[]
)

Умножает матрицу aA на число aNum. Результат (матрица) возвращается по ссылке в маcсиве aR.

void AddMx(
  double& aA[],
  double& aB[],
  double& aAB[]
)

Складывает матрицы aA и aB. Результат (матрица) возвращается по ссылке в маcсиве aAB.

void MultMx(
  double& aA[],
  double& aB[],
  double& aAB[])

Умножает матрицу aA на матрицу aB. Результат (матрица) возвращается по ссылке в маcсиве aAB.

void Transpose(
  double& aA[],
  double& aT[]
)

Транспонирует матрицу aA. Транспонированная матрица возвращается по ссылке в маcсиве aT.

void AlgAdd(
  double& aA[],
  double& aAA[]
)

Получает матрицу алгебраического дополнения. aA - исходная матрица, aAA - алгебраическое дополнение (возвращается по ссылке).

bool Invert(
  double& aA[],
  double& aB[]
)

Возвращает обратную матрицу aR от матрицы aA по ссылке. Сам метод возвращает true при существовании обратной матрицы или false, если обратной матрицы не существует.

void Triangle(
  double& aA[],
  double& aT[]
)

Возвращает треугольную матрицу aT от матрицы aA по ссылке.

void Minor(
  double aA[],
  int aRow,
  int aCol,
  double& aM[]
)

Получает минор от матрицы aA по строке aRow и колонке aCol. Минор возвращается по ссылке в массиве aM.

double MinorDef(
  double& aA[],
  int aRow,
  int aCol
)

Возвращает значение определителя минора матрицы aA по строке aRow и колонке aCol.

void MinorDefMx(
  double& aA[],
  double& aM[]
)

Получает матрицу миноров (матрица со значениями определителей миноров). aA - исходная матрица, aM - матрица с определителями миноров (возвращается по ссылке).

double Def(
  double& aA[]
)

Возвращает значение определителя матрицы aA.

int Rank(
  double& aA[]
)

Возвращает ранг матрицы aA.

int RankDRC(
  double& aA[],
  double& aDef,
  int& aRow,
  int& aCol
)

Возвращает ранг матрицы aA и по ссылкам возвращает:

  • aDef - значение определителя,
  • aRow - строка минора с определителем, не равным 0
  • aCol - колонка минора с определителем, не равным 0

void CopyCol(
  double& aFrom[],
  double& aTo[],
  int aFromCol,
  int aToCol,
  double& aR[]
)

Копирует колонку с индексом aFromCol из матрицы aFom в матрицу aTo в колонку с индексом aToCol. Результат возвращается по ссылке в массив aR.

void CopyRow(
  double& aFrom[],
  double& aTo[],
  int aFromRow,
  int aToRow,
  double & aR[]
)

Копирует строку с индексом aFromRow из матрицы aFrom в матрицу aTo в строку с индексом aToRow. Результат возвращается по ссылке в массив aR.

void AppendCol(
  double& aA[],
  double& aC[],
  double& aF[]
)

Расширяет матрицу aA путем добавления к ней колонки aC. Результат возвращается по ссылке в маcсиве aF.

void AppendRow(
  double& aA[],
  double& aR[],
  double& aF[]
)

Расширяет матрицу aA путем добавления к ней строки aR. Результат возвращается по ссылке в маcсиве aF.

bool SystemKramer(
  double& aK[],
  double& aY[],
  double& aX[]
)

Решает систему уравнений методом Крамера.

  • aК - матрица коэффициентов (квадратная),
  • aY - столбец значений,
  • aX - строка результатов

bool SystemInverse(
  double& aK[],
  double& aY[],
  double& aX[]
)

Решает систему уравнений через обратную матрицу.

  • aК - матрица коэффициентов (квадратная),
  • aY - столбец значений,
  • aX - строка результатов

bool SystemGauss(
  double& aK[],
  double& aY[],
  double& aX[]
)

Решает систему уравнений методом Гаусса.

  • aК - матрица коэффициентов (квадратная),
  • aY - столбец значений,
  • aX - строка результатов

int SystemCheck(
  double& aK[],
  double& aY[]
)

Проверяет систему уравнений.

  • aК - матрица коэффициентов (квадратная),
  • aY - столбец значений.

Возвращаемое значение:

  • -1 - нет решений,
  • 0 - одно решение,
  • 1 - бесконечное множество решений

void Alert(
  double& aA[],
  int aDigits=2,
 string aCaption=""
)

Отображает всю матрицу в одном алерте.

  • aA - матрица,
  • aDigits - количество знаков после запятой,
  • aCaption - заголовок сообщения

void Alert2(
  double& aA[],
  int aDigits=2,
 string aCaption=""
)

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

void Alert1Str(
  double& aA[],
  int aDigits=2
)

Отображает массив матрицы строкой в алерт.

 


Скрипт sMatrix.mq4 - это пример использования библиотеки для решения системы линейный уравнений методом Крамера, обратной матрицы и Гаусса.

Widescreenshooter Widescreenshooter

Скрипт для создания длинных снимков экрана.

Choppy Market Index Choppy Market Index

Индикатор неустойчивости рынка.

GMACD GMACD

MACD с двумя линиями. По умолчанию стоит во многих торговых платформах. В MetaTrader 5 такой индикатор отсутствует.

ResultRetcodeDescription ResultRetcodeDescription

Функция расшифровки кода результата торговой операции для функций OrderSend() и OrderCheck().