Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 3254

 
Maxim Dmitrievsky #:

Seria eficiente ler o SQL?

Nunca em minha vida

....

Experimente o apache Arrow ou o DuckDB.

mas ainda assim a RAM é a maneira mais rápida.

.....

O problema em si é resolvido por meio do G...ugly, seu problema é a matriz cor., que não é necessária.

 
Forester #:

Há uma função de cálculo de correlação dupla no alglib. Acho que basta alterar todas as variáveis para char/uchar e tudo funcionará. Há dezenas de outras funções usadas que também devem ser refeitas. E de CMatrixDouble deveríamos mudar para matrizes dinâmicas ou outra coisa.

Pearson product-moment correlation matrix                        |
//| INPUT PARAMETERS:                                                |
//|     X   -   array[N,M], sample matrix:                           |
//|             * J-th column corresponds to J-th variable           |
//|             * I-th row corresponds to I-th observation           |
//|     N   -   N>=0, number of observations:                        |
//|             * if given, only leading N rows of X are used        |
//|             * if not given, automatically determined from input  |
//|               size                                               |
//|     M   -   M>0, number of variables:                            |
//|             * if given, only leading M columns of X are used     |
//|             * if not given, automatically determined from input  |
//|               size                                               |
//| OUTPUT PARAMETERS:                                               |
//|     C   -   array[M,M], correlation matrix (zero if N=0 or N=1)  |
//+------------------------------------------------------------------+
static bool CBaseStat::PearsonCorrM(const CMatrixDouble &cx,const int n,
                                    const int m,CMatrixDouble &c)


E se você tiver um programa caseiro, terá que fazer a quantização também, se não tiver um pacote pronto que faça isso.

Acho que sou burro... é muito rápido calcular com o Nampai), mas é longo e consome muita memória calcular com o Panda. Verificarei tudo novamente mais tarde.

 
Maxim Dmitrievsky #:

nenhum padrão, os padrões são pesquisados pela matriz corr.

Talvez haja algo que eu não esteja entendendo.

 
mytarmailS #:

Talvez haja algo que eu não esteja entendendo.

Padrão = um conjunto completo de amostras com alta correlação entre si.

Pode haver muitos desses padrões em todo o conjunto de dados, cada um com um número diferente de coincidências no histórico.

Sem uma matriz, você não encontrará nada, ou escolherá uma parte fragmentada dela, e estou contando todas as variantes possíveis.

Portanto, você precisa pegar cada linha e calcular a correlação com todas as outras linhas, obtendo uma matriz.
 
Maxim Dmitrievsky #:

Padrão = conjunto completo de amostras com alta correlação entre si

Pode haver muitos conjuntos desse tipo em todo o conjunto de dados

Sem uma matriz, você não encontrará nada, ou escolherá uma parte fragmentada dela, e estou contando todas as variantes possíveis.

Portanto, você precisa pegar cada linha e calcular a correlação com todas as outras, obtendo uma matriz.
Fiz algo semelhante em 15-16. Peguei a situação atual, por exemplo, as últimas 20-50 barras e pesquisei no histórico os 20 exemplos mais semelhantes. E desenhei o futuro médio a partir desses 20 exemplos. Quase sempre eu obtinha uma linha reta de +-5 pontos. Naquela época, o lucro de 5 pontos parecia um pouco pequeno para mim, no limite do ruído. No final, mudei para o MO, esperando que o lucro fosse maior. Mas aqui é a mesma coisa
Em geral, é semelhante ao agrupamento.
Aqui a semelhança dos exemplos é maximizada.
.


A classificação/regressão em árvores maximiza a semelhança futura desses exemplos. Isso piora a similaridade passada.

 
Forester #:

Também fiz uma coisa semelhante há muito tempo, mas agora, com novas ideias, estou refazendo-a

 
Maxim Dmitrievsky #:

Padrão = o conjunto completo de amostras com alta correlação entre si

Pode haver muitos desses padrões em todo o conjunto de dados, cada um com um número diferente de correspondências no histórico

Sem uma matriz, você não encontrará nada, ou escolherá uma parte fragmentada dela, e estou contando todas as variantes possíveis.

Portanto, você precisa pegar cada linha e calcular a correlação com todas as outras linhas, obtendo uma matriz.

Temos alguns dados tridimensionais.

Uma linha é uma observação, uma coluna é uma característica.

A primeira linha é como os dados mais recentes.

X
      [,1] [,2] [,3]
 [1,]    1    4    1   посл. строка
 [2,]    4    1    2
 [3,]    1    2    5
 [4,]    2    5    3
 [5,]    5    3    2
 [6,]    3    2    3
 [7,]    2    3    3
 [8,]    3    3    1
 [9,]    3    1    5
[10,]    1    5    5
[11,]    5    5    2
[12,]    5    2    2
[13,]    2    2    1
[14,]    2    1    5
[15,]    1    5    5
[16,]    5    5    1
[17,]    5    1    1
[18,]    1    1    5
[19,]    1    5    5
[20,]    5    5    2
[21,]    5    2    2
[22,]    2    2    1
[23,]    2    1    4
[24,]    1    4    1
[25,]    4    1    4
[26,]    1    4    3
[27,]    4    3    2
[28,]    3    2    2

Podemos calcular a correlação da última linha com cada uma das outras linhas.

             cor
 [1,] 1 4 1  1.0000000
 [2,] 4 1 2 -0.7559289
 [3,] 1 2 5 -0.2773501
 [4,] 2 5 3  0.9449112
 [5,] 5 3 2 -0.1889822
 [6,] 3 2 3 -1.0000000
 [7,] 2 3 3  0.5000000
 [8,] 3 3 1  0.5000000
 [9,] 3 1 5 -0.8660254
[10,] 1 5 5  0.5000000
[11,] 5 5 2  0.5000000
[12,] 5 2 2 -0.5000000
[13,] 2 2 1  0.5000000
[14,] 2 1 5 -0.6933752
[15,] 1 5 5  0.5000000
[16,] 5 5 1  0.5000000
[17,] 5 1 1 -0.5000000
[18,] 1 1 5 -0.5000000
[19,] 1 5 5  0.5000000
[20,] 5 5 2  0.5000000
[21,] 5 2 2 -0.5000000
[22,] 2 2 1  0.5000000
[23,] 2 1 4 -0.7559289
[24,] 1 4 1  1.0000000
[25,] 4 1 4 -1.0000000
[26,] 1 4 3  0.7559289
[27,] 4 3 2  0.0000000
[28,] 3 2 2 -0.5000000

E obtemos esse "padrão de similaridade" entre a última linha/atual e o histórico.

Você poderia fazer o agrupamento e obter algo parecido com isso também.

                cor    cluster
 [1,] 1 4 1  1.0000000      10
 [2,] 4 1 2 -0.7559289       6
 [3,] 1 2 5 -0.2773501       5
 [4,] 2 5 3  0.9449112      10
 [5,] 5 3 2 -0.1889822       7
 [6,] 3 2 3 -1.0000000       3
 [7,] 2 3 3  0.5000000       1
 [8,] 3 3 1  0.5000000       4
 [9,] 3 1 5 -0.8660254       5
[10,] 1 5 5  0.5000000       1
[11,] 5 5 2  0.5000000       2
[12,] 5 2 2 -0.5000000       9
[13,] 2 2 1  0.5000000       4
[14,] 2 1 5 -0.6933752       5
[15,] 1 5 5  0.5000000       1
[16,] 5 5 1  0.5000000       4
[17,] 5 1 1 -0.5000000       9
[18,] 1 1 5 -0.5000000       5
[19,] 1 5 5  0.5000000       1
[20,] 5 5 2  0.5000000       2
[21,] 5 2 2 -0.5000000       9
[22,] 2 2 1  0.5000000       4
[23,] 2 1 4 -0.7559289       5
[24,] 1 4 1  1.0000000      10
[25,] 4 1 4 -1.0000000       8
[26,] 1 4 3  0.7559289       1
[27,] 4 3 2  0.0000000       7
[28,] 3 2 2 -0.5000000       9


Mas não entendo por que precisamos contar toda a matriz de correlação se precisamos apenas do estado das coisas com relação à linha atual/última.

            [,1]        [,2]        [,3]        [,4]       [,5]       [,6]       [,7]
 [1,]  1.0000000 -0.75592895 -0.27735010  0.94491118 -0.1889822 -1.0000000  0.5000000
 [2,] -0.7559289  1.00000000 -0.41931393 -0.92857143  0.7857143  0.7559289 -0.9449112
 [3,] -0.2773501 -0.41931393  1.00000000  0.05241424 -0.8910421  0.2773501  0.6933752
 [4,]  0.9449112 -0.92857143  0.05241424  1.00000000 -0.5000000 -0.9449112  0.7559289
 [5,] -0.1889822  0.78571429 -0.89104211 -0.50000000  1.0000000  0.1889822 -0.9449112
 [6,] -1.0000000  0.75592895  0.27735010 -0.94491118  0.1889822  1.0000000 -0.5000000
 [7,]  0.5000000 -0.94491118  0.69337525  0.75592895 -0.9449112 -0.5000000  1.0000000
 [8,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
 [9,] -0.8660254  0.32732684  0.72057669 -0.65465367 -0.3273268  0.8660254  0.0000000
[10,]  0.5000000 -0.94491118  0.69337525  0.75592895 -0.9449112 -0.5000000  1.0000000
[11,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[12,] -0.5000000  0.94491118 -0.69337525 -0.75592895  0.9449112  0.5000000 -1.0000000
[13,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[14,] -0.6933752  0.05241424  0.88461538 -0.41931393 -0.5765567  0.6933752  0.2773501
[15,]  0.5000000 -0.94491118  0.69337525  0.75592895 -0.9449112 -0.5000000  1.0000000
[16,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[17,] -0.5000000  0.94491118 -0.69337525 -0.75592895  0.9449112  0.5000000 -1.0000000
[18,] -0.5000000 -0.18898224  0.97072534 -0.18898224 -0.7559289  0.5000000  0.5000000
[19,]  0.5000000 -0.94491118  0.69337525  0.75592895 -0.9449112 -0.5000000  1.0000000
[20,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[21,] -0.5000000  0.94491118 -0.69337525 -0.75592895  0.9449112  0.5000000 -1.0000000
[22,]  0.5000000  0.18898224 -0.97072534  0.18898224  0.7559289 -0.5000000 -0.5000000
[23,] -0.7559289  0.14285714  0.83862787 -0.50000000 -0.5000000  0.7559289  0.1889822
[24,]  1.0000000 -0.75592895 -0.27735010  0.94491118 -0.1889822 -1.0000000  0.5000000
[25,] -1.0000000  0.75592895  0.27735010 -0.94491118  0.1889822  1.0000000 -0.5000000
[26,]  0.7559289 -1.00000000  0.41931393  0.92857143 -0.7857143 -0.7559289  0.9449112
[27,]  0.0000000  0.65465367 -0.96076892 -0.32732684  0.9819805  0.0000000 -0.8660254
[28,] -0.5000000  0.94491118 -0.69337525 -0.75592895  0.9449112  0.5000000 -1.0000000
            [,8]       [,9]      [,10]      [,11]      [,12]      [,13]       [,14]
 [1,]  0.5000000 -0.8660254  0.5000000  0.5000000 -0.5000000  0.5000000 -0.69337525
 [2,]  0.1889822  0.3273268 -0.9449112  0.1889822  0.9449112  0.1889822  0.05241424
 [3,] -0.9707253  0.7205767  0.6933752 -0.9707253 -0.6933752 -0.9707253  0.88461538
 [4,]  0.1889822 -0.6546537  0.7559289  0.1889822 -0.7559289  0.1889822 -0.41931393
 [5,]  0.7559289 -0.3273268 -0.9449112  0.7559289  0.9449112  0.7559289 -0.57655666
 [6,] -0.5000000  0.8660254 -0.5000000 -0.5000000  0.5000000 -0.5000000  0.69337525
 [7,] -0.5000000  0.0000000  1.0000000 -0.5000000 -1.0000000 -0.5000000  0.27735010
 [8,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
 [9,] -0.8660254  1.0000000  0.0000000 -0.8660254  0.0000000 -0.8660254  0.96076892
[10,] -0.5000000  0.0000000  1.0000000 -0.5000000 -1.0000000 -0.5000000  0.27735010
[11,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[12,]  0.5000000  0.0000000 -1.0000000  0.5000000  1.0000000  0.5000000 -0.27735010
[13,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[14,] -0.9707253  0.9607689  0.2773501 -0.9707253 -0.2773501 -0.9707253  1.00000000
[15,] -0.5000000  0.0000000  1.0000000 -0.5000000 -1.0000000 -0.5000000  0.27735010
[16,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[17,]  0.5000000  0.0000000 -1.0000000  0.5000000  1.0000000  0.5000000 -0.27735010
[18,] -1.0000000  0.8660254  0.5000000 -1.0000000 -0.5000000 -1.0000000  0.97072534
[19,] -0.5000000  0.0000000  1.0000000 -0.5000000 -1.0000000 -0.5000000  0.27735010
[20,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[21,]  0.5000000  0.0000000 -1.0000000  0.5000000  1.0000000  0.5000000 -0.27735010
[22,]  1.0000000 -0.8660254 -0.5000000  1.0000000  0.5000000  1.0000000 -0.97072534
[23,] -0.9449112  0.9819805  0.1889822 -0.9449112 -0.1889822 -0.9449112  0.99587059
[24,]  0.5000000 -0.8660254  0.5000000  0.5000000 -0.5000000  0.5000000 -0.69337525
[25,] -0.5000000  0.8660254 -0.5000000 -0.5000000  0.5000000 -0.5000000  0.69337525
[26,] -0.1889822 -0.3273268  0.9449112 -0.1889822 -0.9449112 -0.1889822 -0.05241424
[27,]  0.8660254 -0.5000000 -0.8660254  0.8660254  0.8660254  0.8660254 -0.72057669
[28,]  0.5000000  0.0000000 -1.0000000  0.5000000  1.0000000  0.5000000 -0.27735010
           [,15]      [,16]      [,17]      [,18]      [,19]      [,20]      [,21]
 [1,]  0.5000000  0.5000000 -0.5000000 -0.5000000  0.5000000  0.5000000 -0.5000000
 [2,] -0.9449112  0.1889822  0.9449112 -0.1889822 -0.9449112  0.1889822  0.9449112
 [3,]  0.6933752 -0.9707253 -0.6933752  0.9707253  0.6933752 -0.9707253 -0.6933752
 [4,]  0.7559289  0.1889822 -0.7559289 -0.1889822  0.7559289  0.1889822 -0.7559289
 [5,] -0.9449112  0.7559289  0.9449112 -0.7559289 -0.9449112  0.7559289  0.9449112
 [6,] -0.5000000 -0.5000000  0.5000000  0.5000000 -0.5000000 -0.5000000  0.5000000
 [7,]  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000
 [8,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
 [9,]  0.0000000 -0.8660254  0.0000000  0.8660254  0.0000000 -0.8660254  0.0000000
[10,]  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000
[11,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[12,] -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000
[13,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[14,]  0.2773501 -0.9707253 -0.2773501  0.9707253  0.2773501 -0.9707253 -0.2773501
[15,]  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000
[16,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[17,] -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000
[18,]  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000
[19,]  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000
[20,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[21,] -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000
[22,] -0.5000000  1.0000000  0.5000000 -1.0000000 -0.5000000  1.0000000  0.5000000
[23,]  0.1889822 -0.9449112 -0.1889822  0.9449112  0.1889822 -0.9449112 -0.1889822
[24,]  0.5000000  0.5000000 -0.5000000 -0.5000000  0.5000000  0.5000000 -0.5000000
[25,] -0.5000000 -0.5000000  0.5000000  0.5000000 -0.5000000 -0.5000000  0.5000000
[26,]  0.9449112 -0.1889822 -0.9449112  0.1889822  0.9449112 -0.1889822 -0.9449112
[27,] -0.8660254  0.8660254  0.8660254 -0.8660254 -0.8660254  0.8660254  0.8660254
[28,] -1.0000000  0.5000000  1.0000000 -0.5000000 -1.0000000  0.5000000  1.0000000
           [,22]      [,23]      [,24]      [,25]       [,26]      [,27]      [,28]
 [1,]  0.5000000 -0.7559289  1.0000000 -1.0000000  0.75592895  0.0000000 -0.5000000
 [2,]  0.1889822  0.1428571 -0.7559289  0.7559289 -1.00000000  0.6546537  0.9449112
 [3,] -0.9707253  0.8386279 -0.2773501  0.2773501  0.41931393 -0.9607689 -0.6933752
 [4,]  0.1889822 -0.5000000  0.9449112 -0.9449112  0.92857143 -0.3273268 -0.7559289
 [5,]  0.7559289 -0.5000000 -0.1889822  0.1889822 -0.78571429  0.9819805  0.9449112
 [6,] -0.5000000  0.7559289 -1.0000000  1.0000000 -0.75592895  0.0000000  0.5000000
 [7,] -0.5000000  0.1889822  0.5000000 -0.5000000  0.94491118 -0.8660254 -1.0000000
 [8,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
 [9,] -0.8660254  0.9819805 -0.8660254  0.8660254 -0.32732684 -0.5000000  0.0000000
[10,] -0.5000000  0.1889822  0.5000000 -0.5000000  0.94491118 -0.8660254 -1.0000000
[11,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[12,]  0.5000000 -0.1889822 -0.5000000  0.5000000 -0.94491118  0.8660254  1.0000000
[13,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[14,] -0.9707253  0.9958706 -0.6933752  0.6933752 -0.05241424 -0.7205767 -0.2773501
[15,] -0.5000000  0.1889822  0.5000000 -0.5000000  0.94491118 -0.8660254 -1.0000000
[16,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[17,]  0.5000000 -0.1889822 -0.5000000  0.5000000 -0.94491118  0.8660254  1.0000000
[18,] -1.0000000  0.9449112 -0.5000000  0.5000000  0.18898224 -0.8660254 -0.5000000
[19,] -0.5000000  0.1889822  0.5000000 -0.5000000  0.94491118 -0.8660254 -1.0000000
[20,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[21,]  0.5000000 -0.1889822 -0.5000000  0.5000000 -0.94491118  0.8660254  1.0000000
[22,]  1.0000000 -0.9449112  0.5000000 -0.5000000 -0.18898224  0.8660254  0.5000000
[23,] -0.9449112  1.0000000 -0.7559289  0.7559289 -0.14285714 -0.6546537 -0.1889822
[24,]  0.5000000 -0.7559289  1.0000000 -1.0000000  0.75592895  0.0000000 -0.5000000
[25,] -0.5000000  0.7559289 -1.0000000  1.0000000 -0.75592895  0.0000000  0.5000000
[26,] -0.1889822 -0.1428571  0.7559289 -0.7559289  1.00000000 -0.6546537 -0.9449112
[27,]  0.8660254 -0.6546537  0.0000000  0.0000000 -0.65465367  1.0000000  0.8660254
[28,]  0.5000000 -0.1889822 -0.5000000  0.5000000 -0.94491118  0.8660254  1.0000000

Qual é a profundidade do pensamento aqui?

Precisamos de todos os padrões ou precisamos daquele que corresponde à situação atual e à última observação?

 
mytarmailS #:

Temos dados tridimensionais?

Uma linha é uma observação, uma coluna é uma característica.

A primeira linha é como os dados mais recentes.

Você pode calcular a correlação da última linha com cada uma das outras linhas.

E obtemos esse "padrão de similaridade" entre a última linha/atual e o histórico

Você pode fazer o agrupamento e obter algo parecido com isso também.


Mas não entendo por que precisamos calcular toda a matriz de correlação se precisamos apenas do estado das coisas com relação à linha atual/última.

Qual é a profundidade do pensamento aqui?

Será que encontraremos todos os padrões de uma só vez e precisamos de todos os padrões ou precisamos daquele que corresponde à situação atual e à última observação?

Não há nenhuma situação atual, é apenas uma pesquisa de histórico.

Em seguida, você classifica os padrões de acordo com suas métricas e, depois, insere os melhores no bot.

 
Maxim Dmitrievsky #:

não há nada atual, é apenas uma pesquisa de histórico

Bem, você pode pesquisar um padrão por vez quase de graça em termos de RAM, por que você gostaria de ver todos os padrões em todo o histórico se, a qualquer momento, você só pode estar em um padrão, não em todos eles....


Ou não estou entendendo alguma coisa?

 
mytarmailS #:

Bem, você pode pesquisar um padrão por vez quase de graça em termos de RAM. Por que você gostaria de ver todos os padrões em todo o histórico se, a qualquer momento, você só pode estar em um padrão, não em todos eles...


Ou não estou entendendo alguma coisa?

você ainda precisa examinar todos eles e escolher os melhores para verificar com os novos dados.

#32456
Машинное обучение в трейдинге: теория, модели, практика и алготорговля - Если объем добавок в позицию зависит от текущей просадки, тогда никакие ТС не работают.
Машинное обучение в трейдинге: теория, модели, практика и алготорговля - Если объем добавок в позицию зависит от текущей просадки, тогда никакие ТС не работают.
  • 2023.09.21
  • www.mql5.com
Корреляционная матрица между строками заданных признаков. берется статистика по всем строкам как было в будущем в среднем. в тестере ищем корреляцию текущих значений с эталоном. Но я делаю в питоне и считаю корреляцию сразу для всех возможных пар
Razão: