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

 
막심 드미트리예프스키 :

예, 커널이 아닌 cos 및 임의의 차수를 사용하는 내 변환 함수입니다.

RDF는 파일인 경우 자체 구조를 저장하므로 샘플이나 기능이 너무 많으면 파일이 너무 클 수 있습니다. 에이전트가 백만 개인지는 잘 모르겠습니다. :) 하지만 다양한 기능으로 에이전트 수를 늘려 분류 오류를 줄이고 모델 안정성을 높일 수 있습니다.

다음 순간 - 내 경험상 더 큰 데이터 != 새로운 데이터에 대한 더 나은 정확도. 예측 변수가 나쁘면 결과는 동일합니다.

또한 gdmh는 매우 작은 데이터 세트로 작업할 수 있으며 향후 데이터에 적합합니다.

그러나 .. 우리는 로지스틱 회귀 + gdmh(RDF 대신)와 같은 간단한 모델을 적용할 수 있으므로 학습 프로세스는 매우 빠르지만 정확도에 대해서는 모릅니다.

GMDH와 관련하여 GMDH에 대해 처음 언급했을 때 알려드린 내용입니다. GMDH 자체가 신경망 역할을 하므로 여기서는 RDF를 사용하지 않습니다.

 
막심 드미트리예프스키 :

예, 차이점이 있습니다. RDF로 결정을 내리려면 모든 노드와 나뭇잎을 거쳐야 합니다. 따라서 RDF 구조가 크면 모든 결정에 더 많은 시간이 소요됩니다.

이 방법을 사용하려면 빠른 응답으로 매우 빠른 모델(빠른 학습된 NN)을 사용하는 것이 좋습니다. 또는 GPU를 포함한 더 나은 하드웨어

또 다른 문제 - RDF는 데이터의 노이즈에 민감하므로 거의 항상 과대적합됩니다. 이러한 노이즈의 영향을 줄이기 위해 알고리즘에 LDA 또는 PCA 레이어를 삽입하는 것이 좋습니다.

따라서 이것은 언뜻보기에 그렇게 사소한 작업이 아닙니다.

현재 구현된 RDF와 이전 버전의 RDF가 완전히 다르다는 말입니까? 이 RDF 버전은 정책이나 다른 것을 사용합니까? ".rl" 파일에 대해 잘 모르겠습니다. 이전 버전의 "Mtrees" 파일과 비슷하다고 생각했습니다.

훈련과 시험에 무슨 일이 일어나는지 봅시다. 모델과 에이전트가 매우 큰 값으로 제대로 실행되지 않는 것으로 나타났습니다. 예를 들어 에이전트를 100으로, 모델을 100으로 설정했습니다. 에이전트는 작동했지만 모델은 각 에이전트에 대해 50에서 작동을 멈췄습니다. 무슨 이유인지 모르겠습니다.

그건 그렇고, 나는 당신이 이미 기본 코드를 구현했기 때문에 RDF로 내 알고리즘을 테스트하고 있습니다. 왜냐하면 저는 이전 버전에서 수천 가지의 다양한 최적화 및 테스트 조합을 수행했기 때문에 이전 버전을 완전히 이해하고 있기 때문입니다. RDF 버전 . 그렇지 않으면 "ALPHA ZERO"에 사용된 "Monte carlo" 알고리즘에 대한 전체 코드를 작성하여 내 알고리즘에 통합해야 합니다. 이 작업은 전문 프로그래머가 아니기 때문에 시간이 꽤 걸릴 수 있습니다.

 
막심 드미트리예프스키 :

안녕하세요, 시작을 위해 이 코드를 알아내십시오.

여기에서 우리는 1개의 기능(1개의 입력)마다 RDF를 배우고 정렬된 배열(모델)에 최상의 기능 번호를 저장합니다. 다음으로 몇 가지 가장 좋은 것을 선택할 수 있습니다.

다음 단계 - 우리는 다른 모든 최고의 예측 변수를 결합하고 다시 오류를 확인하고 결과를 저장해야 합니다. 이 단계에서 몇 가지 다항식 방정식을 적용할 수 있습니다.

자, 이제 이 코드로 GMDH를 구현하는 방법을 살펴보겠습니다.

코드를 자세히 설명할수록 다리를 더 빨리 찾을 수 있습니다. 사실, 내 문제는 내가 클래스, 개체, 배열 등과 같은 일부 기본 C++ 개념의 구문에 약간 약하므로 이러한 개념 구현을 이해하는 데 더 많은 시간이 걸립니다. 그렇지 않으면 GMDH의 클래스 파일을 직접 작성하고 주어진 당신에게.

어쨋든 보자..

이 3줄을 제대로 설명해주세요. 여기에서 GMDH를 적용해야 한다고 생각합니다.

        m[i].Set( 0 ,RDFpolicyMatrix[i][bf]); 
        m[i].Set( 1 ,RDFpolicyMatrix[i][bf+ 1 ]);
        m[i].Set( 2 ,RDFpolicyMatrix[i][bf+ 2 ]);

이 3줄을 댓글 로 달아주세요

이전 코드에서 루프에서 약간의 실수를 저질렀다고 생각합니다. 따라서 RDF에 대해 작성한 내용을 정확히 알고 있다면 여기에 다리가 있다고 생각합니다. :))...매트릭스 구현에 대해 잘 모르기 때문에...

 ///---Remaining values of Y starting from Y_1
   for ( int i= 1 ;i< 3 ;i++)
  m[i]=CalculateNeuron(a); ///---Calculate individual value of Y_1,Y_2,Y_3,...to feed to RDF inputs
 
 
막심 드미트리예프스키 :

이것은 2차원 배열(행렬), "alglib" 라이브러리 형식입니다. 예측자(bf)의 수(행렬의 인덱스 0)로 채우고 다음(1,2)은 출력 값입니다. 여기에 오류가 있습니다. :) 설정해야 합니다. 인덱스 "features" 및 "features-1"이 있는 값

m - 1개의 기능과 2개의 출력이 있는 현재 행렬이지만 RDFpolicyMatrix에는 모든 기능 + 출력이 포함됩니다 .

결정된

여기에 대해 읽을 수 있습니다 http://www.alglib.net/dataanalysis/generalprinciples.php#header0

자, 오해가 있는 부분이 있어서... GMDH에 연결하는 방법을 다시 한번 코드를 확인해 보겠습니다...

아이디어를 얻으면 생각하는 데 시간을 낭비하지 않도록 저를 업데이트하십시오. :))

RDF와 GMDH가 비슷해서 서로 통합하기 어려워지는 것 같아요...

다시 생각해보게....

 
막심 드미트리예프스키 :

아니요, 통합하기 쉽습니다. gdmh로 입력 벡터만 변경하고 일부 변환만 변경합니다.

다음 단계에서 우리는 예측 변수 그룹을 확인하고 어떤 다른 변수와 결합할지 확인합니다(이전 선택 항목에서 몇 개만).

그런 다음 이 루프는 다음과 같은 기능 변환에 대해 모든 작업을 수행할 수 있습니다.

다음은 Neuron을 계산하는 함수 입니다.

다음으로 Y_Final=Y_All+Y_0;

이제 입력을 3개로 나누었으며 필요한 경우 원하는 수로 확장할 수 있습니다.

여기에서 입력은 기능 또는 예측 변수이고 가중치는 임의 가중치입니다... 처음에는 임의 함수에서 입력을 가져올 수 있으며 나중에 학습 후 RDF 내부에 저장됩니다.

 
막심 드미트리예프스키 :

지금 매트릭스용으로 다시 만들어 보세요))

하지만.. 여기에 합계가 필요하지 않습니다. 각 단계마다 별도의 예측자가 필요합니다. 추가 기능에 대한 행렬을 확장하고 추가하고 오류를 다시 확인하기만 하면 됩니다.

좋아, 시간을 갖고 곧 준비하게 해줘

자, 여기에서는 문제가 없습니다. 별도의 예측 변수에 대해 "+" 기호를 제거하면 개별 예측 변수를 얻을 수 있습니다.

 /// --- Remaining values ​​of Y starting from Y_1 
   for ( int a = 1 ; a < 3 ; a ++) 
  Y_All [a]=CalculateNeuron (a); /// --- Calculate the individual value of Y_1, Y_2, Y_3, ... to feed to RDF inputs...Here feature transformation done

그러나 더 나은 방법이 있다면 그것도 좋습니다.

이 코드를 한 시간 만에 작성해서 이 코드가 마음에 들지도 않습니다. :))

매트릭스가 내 두뇌에 입력되지 않습니다 :))))))))))))))))))))))))))))))))))))
 
막심 드미트리예프스키 :

헤헤.. 2차원 행렬을 정렬하는 건 어때? :)

또한 EA의 최종 버전에서 최소한 몇 가지 종류의 예측 변수를 더 구현해 달라고 요청합니다.

1. 일부 오실레이터 표시기

2. 일부 추세 지표

3. 일부 볼륨 표시기

4. 더 높은 시간 프레임의 일부 표시기(노이즈 신호에 적합한 필터)

5.일부 직접 종가

그렇지 않으면 내가 뭔가를 추가해야 할 때 계속 물어야합니다 :)))...

시장 변화에 따라 한 시스템에서 다른 시스템으로 한 시스템에서 다른 시스템으로 즉시 전환할 수 있다면 정말 대단할 것입니다!!..사실 스플라인, 기능 변환에 대해 언급했을 때 이 버전에서 내가 기대했던 원래 목표였습니다. 커널 트릭 등...커널 트릭은 대용량 데이터에 대한 일반 서버에서도 훨씬 빠르게 계산하는 데 도움이 되었을 것입니다. 이제 완벽하게 훈련된 모델과 빠른 변환에만 의존해야 합니다...

그건 그렇고, 지난 2일의 순방향 테스트에서 나는 이 버전의 RDF가 이전 버전의 RDF에 비해 조금 더 안정적이고 신뢰할 수 있는 것 같다고 말해야 합니다. 순방향 테스트는 백 테스팅과 다소 일치하지만 이전 버전은 대부분 최적화 데이터에 과적합

 
막심 드미트리예프스키 :

이전 버전은 기본 아이디어가 있는 개념일 뿐입니다.

가격을 마감하는 대신 지표 자체를 추가할 수 있습니다.

아니, 하나의 지표가 아닙니다. "ag1.agent"의 배열 루프에서 동시에 여러 지표를 적용하면 혼란 스럽습니다.

총 100개의 기능을 사용할 때 " ArraySize ( ag1.agent )" 대신 무엇을 사용해야 하나요? 하지만 닫기에는 50개, 높음에는 50개

 for ( int i= 0 ;i< ArraySize (ag1.agent);i++)///---here
     {   
       CopyClose ( _Symbol , 0 , 0 ,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for ( int i= 0 ;i< ArraySize (ag1.agent);i++)///---here
     {   
       CopyHigh ( _Symbol , 0 , 0 ,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }

그럼 아래와 같은 에이전트 선언에 위의 코드가 맞는 걸까요?

CRLAgents *ag1= new CRLAgents( "RlExp1iter" , 5 , 100 , 50 ,regularize,learn); ///----Here

글쎄, 나는 당신의 영어 포럼에 댓글을 단 첫 번째 사람이었습니다:)))....그 날부터 저는 제 모든 서버와 모든 유형의 설정 조합에서 최소 20,000개 이상의 다양한 테스트와 최적화를 실행했습니다. 전반적인 개념을 더 잘 이해하고 있지만...제 주요 문제는 때때로 간단한 코드에 갇히기도 한다는 것입니다....

그리고 이 알고리즘이 시간이 지남에 따라 어느 정도 수렴되기 시작하더라도 귀하가 게시할 것보다 최소 2~3배 더 나은 성능을 발휘하도록 코드를 최적화할 수 있다고 약속할 수 있습니다. :))..모두 내 경험과 관찰 :)))).

아니면 아래 코드가 맞습니까?

Or

for ( int i= 0 ;i< 50 ;i++) ///---here
     {   
       CopyClose ( _Symbol , 0 , 0 , 50 ,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for ( int i= 50 ;i< 100 ;i++) ///---here
     {   
       CopyHigh ( _Symbol , 0 , 0 , 50 ,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
 
막심 드미트리예프스키 :

정말 감사합니다...이제 더 많은 지표를 할 수 있을 것 같아요 :)))))))))

 
막심 드미트리예프스키 :

아니면 여기처럼 더 간단하게

예, 저는 이것을 좋아합니다. 이것은 내 유형입니다 :))

이전 예는 매우 조건부이며 더 많은 예측 변수를 늘릴 수 없습니다 ....

그건 그렇고, 나는이 방법을 임의의 양초 시뮬레이션에 사용했습니다 ... 그러나 훈련을 위해 거래 진입 및 종료 가격도 변경해야하므로 혼란 스럽습니다 ...

지금은 이러한 지표 방법을 시도하고 테스트한 다음 나중에 양초 시뮬레이션 방법을 시도할 것입니다. 성공할 경우 forex 시장에서 생성된 모든 기계 학습 EA의 마지막 버전이 될 것이기 때문입니다. :) )))

사유: