L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 3265

 
Maxim Dmitrievsky #:

È il Ministero della Difesa

Non fa differenza se il modello dell'EA originale è lo stesso: se vedi un modello, apri.

 
fxsaber #:

In MQL5, gli elementi di tale matrice vengono calcolati in circa 55 ore sulla mia vecchia macchina. Il consumo di memoria è minimo.

La lunghezza della riga è 100.

Un milione per un milione o 100? È questa la matrice di input?
E l'output è 1000000* 1000000? È un terabyte. L'avete letta riga per riga e scaricata su disco?
Che funzione avete usato? PearsonCorrM, PearsonCorrM2, PearsonCorr2 o standard?

 
fxsaber #:

Non fa alcuna differenza se il pattern dell'EA originale è lo stesso: vedi un pattern, apri.

Lì è diverso, l'EA genera segnali da solo.

E i pattern dovrebbero essere legati alla logica. Ho provato a fare trading direzionale e inversione di tendenza, ci sono pattern per entrambi, relativamente buoni.

 
Forester #:

È un milione di volte un milione o è 100? È la matrice di input?

L'input è 100x1000000.

E l'output è 1000000*1000000? È un terabyte. L'hai contato riga per riga e l'hai scaricato su disco?

Linea per linea. Non ho scaricato nulla. Nel contesto della discussione sulla ricerca di modelli, in linea di massima, in ogni riga dobbiamo trovare solo le situazioni in cui Abs(Corr[i]) > 0,9. Per fare questo, non abbiamo bisogno di scrivere la matrice, ma solo di contare le sue righe.

Quale funzione avete utilizzato per il conteggio? PearsonCorrM, PearsonCorrM2, PearsonCorr2 o quella standard?

Non sono riuscito a trovare una funzione interna per il calcolo riga per riga. Alglib sembra lento. Sto provando la mia versione.

 
Maxim Dmitrievsky #:

È diverso, il NS genera i propri segnali.

E i pattern dovrebbero essere legati alla logica. Ho provato a fare trading direzionale e inversione di tendenza, ci sono pattern per entrambi, relativamente buoni.

Sembra buono.

 
Maxim Dmitrievsky #:

L'ho messo da parte per ora, i risultati non sono migliori di MO, anche se MO è anche zoppo in termini di fluidità del bilanciamento.

5 minuti, metà allenamento


È interessante vedere il rischio di più.
 
fxsaber #:

Linea per linea. Non ho scontato nulla. Nel contesto della discussione sulla ricerca di modelli, in linea di massima, in ogni riga è necessario trovare solo le situazioni in cui Abs(Corr[i]) > 0,9. Per fare questo, non è necessario scrivere la matrice, basta contare le sue righe.

A è esatta. Per ogni riga ci saranno probabilmente solo 1-5 mila righe correlate, che possono essere salvate se necessario.

fxsaber #: Non ho trovato uno standard per il calcolo riga per riga. Alglib sembra lento. Sto provando la mia variante.

Penso che PearsonCorrM2 funzionerà velocemente. Alimentiamo 1 matrice piena, la seconda matrice di una riga da controllare. E se partiamo dalla fine, possiamo specificare la dimensione della prima matrice come numero della riga successiva, in modo da non ricalcolare ripetutamente la correlazione per le righe inferiori a quella da verificare.

 
Forester #:

Penso che PearsonCorrM2 sarebbe una corsia preferenziale.

All'inizio dubitavo che sarebbe stato veloce.

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

Ho provato uno di questi, misurando solo i punti salienti. Qualcosa di lento, quindi ne sto creando uno mio.

 

Non è che qualcun altro non lo sapesse, tranne me.


Pearson è invariante per le azioni di moltiplicazione e addizione.

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
}

Non ho sentito l'addizione, nonostante la formula semplice. E il wiki lo dice espressamente.

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

In particolare, questa matrice iniziale
[[1,2,3]
 [1,2,3]
 [2,4,4]]

ha una matrice di correlazione unitaria (righe per colonne).

 
fxsaber #:

Pearson è invariante per le azioni di moltiplicazione e addizione.

Probabilmente non è molto adatto per i dati sui prezzi.