트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 3265

 
Maxim Dmitrievsky #:

국방부입니다.

원본 EA의 패턴이 동일하다면 아무런 차이가 없습니다: 패턴을 보고 열어보세요.

 
fxsaber #:

MQL5에서는 이러한 행렬의 요소를 이전 컴퓨터에서 약 55시간 만에 계산할 수 있습니다. 메모리 소비가 최소화됩니다.

행 길이는 100입니다.

백만 분의 1인가요, 100인가요? 이것이 입력 행렬인가요?
그리고 출력은 1000000*1000000인가요? 1테라바이트입니다. 한 줄씩 읽어서 디스크에 덤프했나요?
어떤 함수를 사용하셨나요? 피어슨코어엠, 피어슨코어엠2, 피어슨코어2 또는 표준?

 
fxsaber #:

원본 EA의 패턴이 동일한 경우 패턴을 보고 열어도 아무런 차이가 없습니다.

하지만 패턴이 다르면 EA가 스스로 신호를 생성합니다.

그리고 패턴 세트는 논리로 묶여 있어야합니다. 방향성 거래와 최소 반전을 시도했는데 두 가지 모두에 대한 패턴이 있으며 상대적으로 좋은 패턴이 있습니다.

 
Forester #:

백만 분의 1인가요, 100인가요? 입력 행렬인가요?

입력은 100x1000000입니다.

출력은 1000000*1000000인가요? 1테라바이트입니다. 한 줄씩 세어서 디스크에 버린 건가요?

한 줄씩요. 아무것도 버리지 않았어요. 패턴 검색을 논의하는 맥락에서 대략적으로 말하면, 각 행에서 Abs(Corr[i])가 0.9 이상인 상황만 찾아야 합니다. 이를 위해 행렬을 작성할 필요 없이 행을 세기만 하면 됩니다.

행을 계산하는 데 어떤 함수를 사용하셨나요? PearsonCorrM, PearsonCorrM2, PearsonCorr2 또는 표준 함수인가요?

줄 단위 계산을 위한 자체 함수를 찾을 수 없었습니다. Alglib은 느린 것 같았습니다. 저만의 버전을 사용해 보려고 합니다.

 
Maxim Dmitrievsky #:

NS는 자체적으로 신호를 생성합니다.

그리고 패턴 세트는 논리로 묶여 있어야합니다. 방향성 거래와 최소 반전을 시도했는데 두 가지 모두에 대한 패턴이 있으며 상대적으로 좋은 패턴이 있습니다.

좋은 것 같네요.

 
Maxim Dmitrievsky #:

지금은 제쳐두었지만 결과는 MO보다 나쁘지 않지만 MO는 균형의 부드러움 측면에서도 절름발이입니다.

5분, 하프 트레이닝


위험을 더 많이 보는 것이 흥미 롭습니다.
 
fxsaber #:

한 줄 한 줄. 저는 아무것도 할인하지 않았습니다. 패턴 검색을 논의하는 맥락에서 대략적으로 말하면, 각 행에서 Abs(Corr[i])가 0.9 이상인 상황만 찾으면 됩니다. 이를 위해 행렬을 작성할 필요 없이 행을 세기만 하면 됩니다.

A는 정확합니다. 각 행에 대해 1~5천 개의 상관 행만 있을 수 있으며, 필요한 경우 저장할 수 있습니다.

fxsaber #: 행 단위 계산을 위한 표준을 찾지 못했습니다. 알글리브는 느려 보였습니다. 저만의 변형을 시도하고 있습니다.

PearsonCorrM2가 빠르게 작동 할 것 같습니다. 하나의 행렬을 가득 채우고 두 번째 행렬을 한 행에서 확인합니다. 그리고 끝에서 이동하면 첫 번째 행렬의 크기를 다음 행의 수로 지정하여 테스트중인 행 아래의 행에 대해 상관 관계를 반복적으로 다시 계산하지 않도록 할 수 있습니다.

 
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);
}

하이라이트만 측정하는 이 중 하나를 사용해 보았습니다. 뭔가 느려서 직접 만들고 있습니다.

 

저 말고는 아무도 몰랐던 것이 아닙니다.


피어슨은 곱셈과 덧셈의 연산에 변함이 없습니다.

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 #:

피어슨은 곱셈과 덧셈의 연산에 대해 불변합니다.

가격 데이터에는 적합하지 않을 수 있습니다.

사유: