메타트레이더 5 . ONNX 모델 직접 지원 .
ONNX 처리 가능한 함수 전체
MQL5 provides the following functions for working with ONNX:
FunctionAction
OnnxCreate | Create an ONNX session, loading a model from an *.onnx file |
OnnxCreateFromBuffer | Create an ONNX session, loading a model from a data array |
OnnxRelease | Close an ONNX session |
OnnxRun | Run an ONNX model |
OnnxGetInputCount | Get the number of inputs in an ONNX model |
OnnxGetOutputCount | Get the number of outputs in an ONNX model |
OnnxGetInputName | Get the name of a model's input by index |
OnnxGetOutputName | Get the name of a model's output by index |
OnnxGetInputTypeInfo | Get the description of the input type from the model |
OnnxGetOutputTypeInfo | Get the description of the output type from the model |
OnnxSetInputShape | Set the shape of a model's input data by index |
OnnxSetOutputShape | Set the shape of a model's output data by index |
MQL5에서 ONNX 모델 사용 개요
MQL5는 ONNX(Open Neural Network Exchange) 모델을 지원함. 이를 통해 MetaTrader 5에서 딥러닝 모델을 사용해서 예측이나 분석 작업을 수행할 수 있음.
주요 기능
- ONNX 모델 로드:
- MQL5에서 OnnxCreate, OnnxPredict, OnnxFree 함수 사용해서 ONNX 모델을 로드하고 예측을 수행함.
- 모델 추론:
- 로드한 ONNX 모델로 입력 데이터에 대해 예측을 수행할 수 있음.
예제 코드
//+------------------------------------------------------------------+
//| OnnxExample.mq5 |
//| Copyright 2023, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2023, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
input string onnx_model_path = "model.onnx"; // ONNX 모델 파일 경로
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// ONNX 모델 로드
int handle = OnnxCreate(onnx_model_path);
if(handle == -1)
{
Print("모델 로드 실패");
return INIT_FAILED;
}
// 예측에 사용할 입력 데이터 설정 (예: 크기 [1, 10])
double inputs[10] = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0};
double outputs[5]; // 출력 크기 설정 (모델에 따라 다름)
// ONNX 모델을 사용하여 예측 수행
if(!OnnxPredict(handle, inputs, outputs))
{
Print("예측 실패");
OnnxFree(handle);
return INIT_FAILED;
}
// 예측 결과 출력
Print("예측 결과: ", outputs[0]);
// ONNX 모델 리소스 해제
OnnxFree(handle);
return INIT_SUCCEEDED;
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// 필요시 리소스 정리 코드 추가
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// 매틱마다 실행할 코드 추가 가능
}
//+------------------------------------------------------------------+
코드 설명
- input string onnx_model_path = "model.onnx";:
- ONNX 모델 파일 경로 지정. MetaTrader 5의 MQL5/Files 디렉토리에 위치해야 함.
- int OnInit():
- ONNX 모델 로드: OnnxCreate(onnx_model_path) 호출해서 ONNX 모델을 로드. 실패 시 에러 메시지 출력.
- 입력 데이터 설정: 모델 입력에 맞는 데이터 설정.
- 예측 수행: OnnxPredict(handle, inputs, outputs) 호출해서 예측 수행. 예측 실패 시 에러 메시지 출력.
- 결과 출력: 예측 결과 출력.
- 리소스 해제: OnnxFree(handle) 호출해서 모델 핸들 해제 및 메모리 정리.
- void OnDeinit(const int reason):
- 필요 시 리소스 정리 코드 추가.
- void OnTick():
- 매틱마다 실행할 코드 추가 가능.
연관
첫 등록 : 2024.08.29
최종 수정 :
단축 주소 : https://igotit.tistory.com/5800
'트레이딩 > 메타트레이더 코딩' 카테고리의 다른 글
bybit MT5 통신 속도 확인 . AWS 일본 , 싱가포르 (1) | 2024.10.09 |
---|---|
MQL5. 외부 프로그램으로 실시간 데이터 송신 . SendMessage, PostMessage, WM_COPYDATA (0) | 2024.09.06 |
MQL5 . 메타 시간을 UTC 로 변환하기 . 일광절약 시간제 (DST) 고려 (0) | 2024.08.28 |
MQL5 . 기본 자료형 바이트 크기 및 표준 자료형 대응표 (0) | 2024.08.28 |
메타트레이더 . VSCode 에서 MQL Tools 기반 쾌적 코딩 환경 구축 (2) | 2024.05.27 |
댓글