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

 

OnnxTypeInfo 도움말에는 차원[] 필드에 대한 설명이 부족합니다. 이 배열의 의미를 최소한 (MT5 버전 3621) 다음과 같이 표시되는 ONNX.Price.Prediction 프로젝트의 예제에서 설명하는 것이 좋을 것 같습니다:

   OnnxTypeInfo otype;
   OnnxGetInputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true
   ArrayPrint(otype.dimensions);                        // -1 -1 4
   OnnxGetOutputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true  
   ArrayPrint(otype.dimensions);                        // -1 1
 
Bohdan Suvorov #:
다음은 제가 직접 만든 뉴로닉스에서 구현한 EA입니다.

어떤 종류의 라이브러리인지 궁금합니다.

#import "markettrader.dll"
  void AlertT(string &msg,int len);
 
Aleksey Nikolayev #:

OnnxTypeInfo 도움말에는 차원[] 필드에 대한 설명이 부족합니다. 이 배열의 의미를 최소한 (MT5 버전 3621) 다음과 같이 표시되는 ONNX.Price.Prediction 프로젝트의 예제에서 설명하는 것이 좋을 것 같습니다:

파이썬 용어로 이것은 객체의 모양입니다.

 
Rashid Umarov #:

파이썬 용어로 이것은 객체의 모양입니다.

그러면 음수와 배열의 길이가 매개변수의 차원 수보다 한 단위 더 크다는 사실이 혼란스러워집니다.

게다가 매개 변수의 모양은 모델 속성에서 가져온 것이 아니라 스크립트에서 설정됩니다. 이것이 버그인가요, 아니면 기능인가요?

 
Aleksey Nikolayev #:

그러면 음수와 배열의 길이가 매개변수 측정 횟수보다 한 단위 더 크다는 사실이 혼란스러워집니다.

게다가 매개변수의 모양은 모델 속성에서 가져온 것이 아니라 스크립트에서 설정됩니다. 이것이 버그인가요, 아니면 기능인가요?

네, 음수 값에 대해 깜빡했습니다. 확인해 보겠습니다.

 

안녕하세요, 여러분!

수동 거래 모드에서 어느 정도 성공적으로 거래할 수 있었지만 프로세스를 자동화하고 싶습니다. 그래서 고민하다가 머신러닝에 대한 상담을 받아보기로 했습니다. 누가 어떤 모델을 사용하고 어떤 성공을 거두었습니까? 제가 문제를 보는 방식은 다음과 같습니다:

예측해야 하는 것은 추세의 방향이 아니라 매수, 매도, 기다림이라는 세 가지 포인트입니다. 즉, 1(매수), -1(매도), 0(거래가 있으면 현재 거래 보유, 거래가 없으면 아무것도 하지 않음)입니다. 분 단위의 시계열로 작업하는 것이 바람직하지만 아직 파악하지 못했습니다. 과거 막대의 일부에 대한 시계열을 고려하여 기록의 지표가 고려되도록하는 것이 중요합니다. 그렇지 않으면 역학 관계가 명확하지 않습니다. 나는 그들 중 약 30 개를 가지고 있는데, 아마도 내 마음에 유지하기는 어렵지만 여전히 어떻게 든 내 손으로 거래 할 수 있습니다.

제가 이해했듯이 기계 학습에는 추세가 상승할지 하락할지 또는 가격과 같은 특정 값이 여기에 오차가있을지 예측하는 것과 같은 분류 작업이 있습니다. 하지만 금융 시장에서는 손실을 최소화하면서 수익을 극대화하는 작업이 조금 다릅니다. 그리고 저는 이런 종류의 소규모 학습 모델을 본 적이 없습니다.

즉, 가능한 각 거래에 대해 그 규모가 최대화되고 손실이 최소화될 때 더 많은 수익이 발생하며, 거래 진입 및 종료의 정확도가 높습니다:

스프레드를 고려할 때 수익 = 플러스 거래 - 손실 거래,

여기서 수익 거래의 합계는 최대가 되고 손실 거래의 합계는 0이 되어야 합니다. 그러면 정의상 이익은 최대가 되는 경향이 있고 다른 조건(예: 랏 크기)은 동일합니다.

즉, 제 생각에는 이러한 모델이 있어야 입력과 출력이 더 정확해질 것입니다.

 
Aleksey Nikolayev #:

그러면 음수와 배열의 길이가 매개변수 측정 횟수보다 한 단위 더 크다는 사실이 혼란스러워집니다.

게다가 매개변수의 모양은 모델 속성에서 가져온 것이 아니라 스크립트에서 설정됩니다. 이것이 버그인가요, 아니면 기능인가요?

차원 값이 음수이면 이 차원이 고정되어 있지 않고 외부 매개 변수를 통해 설정되었음을 의미합니다. 따라서 스크립트에서 차원을 명시적으로 지정해야 합니다.

 

MQL5에서 ONNX 모델을 사용하는 예는 이에 대한 예시일 뿐 그 이상은 아닙니다. 그러나 여전히 매우 중요한 실수에 주목하고 싶습니다. 머신 러닝에서 첫 번째 단계는 전처리입니다. 여기에는 사소한 정규화부터 차원 축소 및 기타 엔지니어링 트릭에 이르기까지 많은 것들이 포함됩니다. 이 단계에서 모든 예측자 및 대상 변환의 주된 규칙은 모든 변환 매개변수(평균, 중앙값, SD, 매드 등)가 훈련 세트에서 계산된다는 것입니다. 테스트 세트와 새 데이터는 훈련 세트에서 얻은 파라미터를 사용하여 처리됩니다.

따라서 예제에서는 훈련에서 평균/평균을 계산하고, 이 데이터를 술어가 만들어지는 부분으로 전달하고, 이 파라미터로 새 데이터를 처리해야 했습니다. 그런 다음 예측된 가격의 실제 값을 비정규화하여 얻습니다. 이 순서가 중요합니다.

아무도 모델 입력에 실제 가격을 제공하지 않는다는 것은 분명하지만 이것은 이미 구체적입니다.

행운을 빕니다.

 
Slava #:

차원 값이 음수이면 이 차원이 고정되어 있지 않고 외부 매개변수를 통해 설정되었음을 의미합니다. 따라서 스크립트에서 차원을 명시적으로 지정해야 합니다.

이제 더 명확해졌습니다.

 
Elvin Nasirov #:

제가 알기로 머신러닝에는 추세가 상승할지 하락할지 또는 가격과 같은 특정 값을 예측할 때 오차가 어느 정도 발생할지 등 분류 작업이 있습니다. 하지만 금융 시장에서는 손실을 최소화하면서 수익을 극대화하는 것이 조금 다른 과제입니다. 그리고 저는 이런 종류의 라즈베리 학습 모델을 본 적이 없습니다.

이 문제는 MO 모델을 학습할 때 적절한 손실 함수를 사용하면 해결할 수 있습니다. 이와 관련된 두 가지 문제가 있습니다. 첫째, 기술적인 문제 - MO 패키지의 표준 손실 함수는 수익 극대화와 간접적으로만 관련이 있으므로 사용자 정의 함수를 만들어야 합니다. 이는 매우 어려운 작업으로, 코드 수준에서 MO 패키지를 잘 이해해야 합니다. 이 문제가 해결되면 사용자 지정 손실 함수가 모델 학습에 좋지 않은 두 번째 수학적 문제가 발생할 수 있습니다.

이렇게 어려운 문제를 해결한 사람이 있다면 그 해결책을 공유하지 않을 가능성이 높습니다.

사유: