Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 3265

 
Maxim Dmitrievsky #:

Es ist das Verteidigungsministerium

Es macht keinen Unterschied, ob das Muster des ursprünglichen EA dasselbe ist: Siehst du ein Muster, öffne.

 
fxsaber #:

In MQL5 werden die Elemente einer solchen Matrix in ~55 Stunden auf meinem alten Rechner berechnet. Der Speicherverbrauch ist minimal.

Die Zeilenlänge beträgt 100.

Eine Million mal eine Million oder 100? Ist das die Eingabematrix?
Und die Ausgabe ist 1000000* 1000000? Das ist ein Terabyte. Haben Sie sie Zeile für Zeile gelesen und auf die Festplatte übertragen?
Welche Funktion haben Sie verwendet? PearsonCorrM, PearsonCorrM2, PearsonCorr2 oder Standard?

 
fxsaber #:

Es macht keinen Unterschied, ob das Muster des ursprünglichen EA dasselbe ist: sehe ein Muster, öffne.

Dort ist es anders, der EA generiert selbst Signale.

Und Mustersätze sollten mit Logik verbunden sein. Ich habe Directional Trades und Min Reversal ausprobiert, für beides gibt es Muster, relativ gute.

 
Forester #:

Ist es eine Million mal eine Million oder sind es 100? Ist das die Eingabematrix?

Die Eingabe ist 100x1000000.

Und die Ausgabe ist 1000000*1000000? Das ist ein Terabyte. Sie haben es Zeile für Zeile gezählt und auf die Festplatte geschrieben?

Zeile für Zeile. Ich habe nichts ausgelagert. Im Zusammenhang mit der Suche nach Mustern müssen wir, grob gesagt, in jeder Zeile nur Situationen finden, in denen Abs(Corr[i]) > 0,9 ist. Dazu müssen wir die Matrix nicht schreiben, sondern nur ihre Zeilen zählen.

Welche Funktion haben Sie für die Zählung verwendet? PearsonCorrM, PearsonCorrM2, PearsonCorr2 oder die Standardfunktion?

Ich konnte keine interne Funktion für die zeilenweise Berechnung finden. Alglib schien langsam zu sein. Ich versuche meine eigene Version.

 
Maxim Dmitrievsky #:

Es ist anders, der NS erzeugt seine eigenen Signale.

Und Mustersätze sollten mit Logik verbunden sein. Ich habe direktionale Trades und Min Reversal versucht, es gibt Muster für beide, relativ gute

Klingt gut.

 
Maxim Dmitrievsky #:

Ich habe es vorerst beiseite gelegt, die Ergebnisse sind nicht besser als MO, obwohl MO auch in Bezug auf die Ausgewogenheit lahm ist.

5 Minuten, halbes Training


Es ist interessant, das Risiko mehr zu sehen.
 
fxsaber #:

Zeile für Zeile. Ich habe nichts ausgeschlossen. Im Zusammenhang mit der Suche nach Mustern müssen Sie, grob gesagt, in jeder Zeile nur Situationen finden, in denen Abs(Corr[i]) > 0,9 ist.

A ist genau. Für jede Zeile gibt es wahrscheinlich nur 1-5 Tausend korrelierte Zeilen, die bei Bedarf gespeichert werden können.

fxsaber #: Ich habe kein Standardprogramm für die zeilenweise Berechnung gefunden. Alglib schien langsam zu sein. Ich versuche meine eigene Variante.

Ich denke, PearsonCorrM2 wird schnell arbeiten. Wir füttern 1 Matrix voll, die 2. Matrix von einer zu prüfenden Zeile. Und wenn wir vom Ende ausgehen, können wir die Größe der ersten Matrix als die Nummer der nächsten Zeile angeben, so dass wir die Korrelation nicht wiederholt für Zeilen unterhalb der zu prüfenden Zeile neu berechnen müssen.

 
Forester #:

Ich denke, dass PearsonCorrM2 ein schneller Weg wäre.

Ich bezweifelte anfangs, dass es schnell sein würde.

// Считает 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);
}

Ich habe eine von diesen ausprobiert und nur den Höhepunkt gemessen. Etwas langsam, also mache ich mein eigenes.

 

Es ist ja nicht so, dass es außer mir niemand gewusst hätte.


Pearson ist invariant für die Aktionen der Multiplikation und Addition.

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
}

Ich habe die Addition nicht gespürt, trotz der einfachen Formel. Und das Wiki sagt das ausdrücklich.

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

Insbesondere diese Ausgangsmatrix
[[1,2,3]
 [1,2,3]
 [2,4,4]]

hat eine Einheits-Korrelationsmatrix (Zeilen mal Spalten).

 
fxsaber #:

Pearson ist invariant für die Wirkungen von Multiplikation und Addition.

Es ist wahrscheinlich nicht sehr gut für Preisdaten.

Grund der Beschwerde: