トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 3265

 
Maxim Dmitrievsky #:

国防総省

元のEAのパターンが同じでも違いはない:パターンを見て、開く。

 
fxsaber #:

MQL5では、このような行列の要素は私の古いマシンで~55時間で計算される。メモリ消費は最小限だ。

行の長さは100。

100万×100万、100?これが入力行列か?
ー1000000* 1000000?テラバイトになる。一行ずつ読んでディスクにダンプしたのですか?
どの関数を使いましたか?PearsonCorrM, PearsonCorrM2, PearsonCorr2, それとも standard?

 
fxsaber #:

元のEAのパターンが同じでも違いはない:パターンを見て、開く。

EAが自分でシグナルを発生させるのですから。

そして、パターンセットはロジックと結びついていなければなりません。私はディレクショナルトレードとminリバーサルを試しましたが、どちらにもパターンがあり、比較的良いものでした。

 
Forester #:

100万の100倍なのか、それとも100なのか?それは入力行列なのか?

入力は100x1000000である。

出力は1000000*1000000?テラバイトだ。一行ずつ数えてディスクにダンプしたのか?

一行ずつだ。私は何もダンプしていないパターンの探索について説明すると、大雑把に言えば、各行でAbs(Corr[i]) > 0.9の状況だけを見つける必要がある。

カウントを行うためにどの関数を使用しましたか?PearsonCorrM、PearsonCorrM2、PearsonCorr2、それとも標準のもの?

行ごとの計算を行う社内関数は見つかりませんでした。Alglibは遅いと感じました。私自身のバージョンを試しています。

 
Maxim Dmitrievsky #:

NSは独自のシグナルを生成するんだ。

そして、パターン・セットはロジックと結びついていなければならない。私はディレクショナルトレードとminリバーサルを試したが、どちらにもパターンがあり、比較的良いものだった。

いい感じだ。

 
Maxim Dmitrievsky #:

MOもバランスの滑らかさという点では劣っているが、結果はMOより良くない。

5分、ハーフトレーニング


もっとリスクを見てみると面白い。
 
fxsaber #:

一行一行。私は何も割り引いていない。パターンの探索を議論する文脈では、大まかに言えば、各行で Abs(Corr[i]) > 0.9の 状況だけを見つける必要がある。

Aは正確である。各行には、おそらく1~5,000個の相関行のみが存在するだろう。

fxsaber#: 行ごとの計算のための標準的なものは見つかっていません。Alglibは遅いようです。私自身の変種を試しています。

PearsonCorrM2 は高速に動作すると思います。1行の行列をフルに入力し、2行目の行列をチェックする。また、最後から2番目の行列を入力する場合、最初の行列のサイズを次の行の数として指定することで、検査対象の行より下の行の相関を何度も再計算する必要がなくなります。

 
Forester #:

PearsonCorrM2が早道だと思う。

最初は速いかどうか疑っていた。

// Считает Pos-строку.
const matrix<double> CorrMatrix( const matrix<double> &Matrix, const int Pos )
{
  matrix<double> Res = {};
  
  const CMatrixDouble MatrixIn(Matrix);
      
  matrix<double> Column;
  Column.Assign(Matrix.Col(Pos));
  Column.Init(Column.Cols(), 1);
  
  const CMatrixDouble Vector(Column);
  CMatrixDouble MatrixOut;  

  if (CBaseStat::PearsonCorrM2(Vector, MatrixIn, MatrixIn.Rows(), 1, MatrixIn.Cols(), MatrixOut))
    Res = MatrixOut.ToMatrix();
  
  return(Res);
}

このうちの1つを試して、ハイライトだけを測定した。何か遅いので、自分で作っている。

 

私以外の誰も知らなかったわけではない。


ピアソンは掛け算と足し算の作用に対して不変である。

void OnStart()
{
  const double a = 2, b = 7;  
  const vector<double> Vector = {1, 2, 3, 4};
    
  Print(Vector.CorrCoef(Vector * a + b));   // 1
  Print(Vector.CorrCoef((Vector + a) * b)); // 1
}

単純な公式にもかかわらず、私は足し算を感じなかった。そして、ウィキには具体的にそう書かれている。

Ключевым математическим свойством коэффициента корреляции Пирсона является то, что он инвариант при отдельных изменениях положения и масштаба двух переменных. То есть мы можем преобразовать X в a + bX и преобразовать Y в c + dY, где a, b, c и d - константы с b, d>0, без изменения коэффициента корреляции.

特に、この初期行列
[[1,2,3]
 [1,2,3]
 [2,4,4]]

は単位相関行列(行×列)を持つ。

 
fxsaber #:

ピアソンは乗算と加算の作用に対して不変である。

おそらく価格データにはあまり適さないだろう。

理由: