無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ビュー:
722
評価:
(41)
パブリッシュ済み:
2016.06.16 10:53
\MQL5\Include\
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

行列を扱うためのクラス。

行列は一行目、二行目というように順番に1次元配列に作成されます。最後の2つの要素は列数と行数での行列のサイズを表しています。

例:

double m[]={1,2,3,
           4,5,6,
           2,3}; // 2行3列の行列

クラスメソッド:

メソッド メソッドとパラメータの説明

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

行列aAのサイズを設定します。aRows - 行数、aCols - 列数

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

マトリックス(aA)のaRow行/aCol列での要素の値(Value)を設定します。

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

行列aAの要素の数を返します。参照として、aRows - 行数、Colsは - 列数を戻します。

int GetRows(
  double& aA[]
)

行列aAの行数を返します。

int GetCols(
  double& aA[]
)

行列aAの列数を返します。

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

マトリックス(aA)のaRow行/aCol列での要素の値(Value)を取得します。

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

配列aFromから配列aToに行列をコピーします。

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

加算のために2つの行列のサイズが一致する(高さと幅が完全に一致)かを確認します。

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

乗算のために2つの行列のサイズが一致する(行列aAの列数と行列aBの列数が等しい)かどうかを確認します。

bool CheckIsSq(
  double& aA[]
)

行列が正方行数かどうかを確認します。

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

数aNumを行列aAに加算します。結果の行列は配列aRに参照で返されます。

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

行列aAを数aNumで乗算します。結果の行列は配列aRに参照で返されます。

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

行列aAを行列aBに加算します。結果の行列は配列aABに参照で返されます。

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

行列aAを行列aBで乗算します。結果の行列は配列aABに参照で返されます。

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

行列aAを転置します。転置行列はaT配列内の参照で返されます。

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

補因子行列を取得します。aA - ソース行列、aAA - (参照によって返される)補因子。

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

行列aAの逆行列aRを参照で返します。このメソッドは逆行列が存在する場合はtrue存在しない場合はfalseを返します。

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

行列 aAの三角行列aTを参照で返します。

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

行列aAのaRow行とaCol列による小行列を取得します。小行列は配列aMに参照で返されます。

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

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[]
)

行列aFromの列インデックスaFromCoを持つ列を、行列aToのインデックスaToColを持つ列 にコピーします。結果の行列は配列aRに参照で返されます。

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

行列aFromの行インデックスaFromRowを持つ行を行列aToの行aToRowにコピーします。結果の行列は配列aRに参照で返されます。

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

行列aAを列aCの追加によって拡張します。結果の行列は配列aFに参照で返されます。

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

行列aAを行aRの追加によって拡張します。結果の行列は配列aFに参照で返されます。

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

クラメルの公式を使用して線形連立方程式を解きます。

  • aK - 係数行列(正方)
  • aY - 値の列
  • aX - 結果の行

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

可逆行列を用いて線形方程式系を解きます。

  • aK - 係数行列(正方)
  • aY - 値の列
  • aX - 結果の行

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

ガウスの消去法を用いて線形方程式系を解きます。

  • aK - 係数行列(正方)
  • aY - 値の列
  • aX - 結果の行

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

システム方程式を確認します。

  • aK - 係数行列(正方)
  • 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
)

行列の配列を警告ボックス内の文字列として表示します。

 


Matrix.mq4スクリプトは、クラメルの公式、可逆行列とガウスの消去法を使用して連立一次方程式を解くためにこのライブラリを使用した例です。

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/951

PEMA PEMA

PEMA - Pentuple Exponential Moving Average(5重指数移動平均)

QEMA QEMA

QEMA - Quadruple Exponential Moving Average(4重指数移動平均)

CCI T3 CCI T3

Tillsonのアルゴリズムを使用して平滑化されたCCI指標。

期間の高さ 期間の高さ

この指標は、期間の最大値と最小値との差分を算出します。期間は、指標のパラメータに指定されています。