LSTM Library
- 라이브러리
- Thalles Nascimento De Carvalho
- 버전: 4.12
- 활성화: 5
알고리즘 트레이딩을 위한 전문 신경망 라이브러리
LSTM Library는 MQL5 트레이딩 전략에 순환 신경망의 힘을 가져다줍니다. 이 전문적인 구현에는 일반적으로 특수 기계 학습 프레임워크에서만 볼 수 있는 고급 기능을 갖춘 LSTM, BiLSTM 및 GRU 네트워크가 포함되어 있습니다.
주요 기능
- LSTM, BiLSTM 및 GRU의 완전한 구현
- 더 나은 일반화를 위한 재귀 드롭아웃
- 다양한 최적화 알고리즘(Adam, AdamW, RAdam)
- 고급 정규화 기술
- 포괄적인 지표 평가 시스템
- 훈련 진행 시각화
- 클래스 가중치를 통한 불균형 데이터 지원
기술 사양
- 순수 MQL5 구현 - 외부 종속성 없음
- 트레이딩 애플리케이션에 최적화
- 포괄적인 오류 처리 및 검증
- 훈련된 모델의 저장/로딩 완전 지원
- 광범위한 문서
통합 지침
LSTM Library를 Expert Advisor에 통합하려면 다음 단계를 따르세요:
1. 라이브러리 전체 가져오기
#import "LSTM_Library.ex5" // 라이브러리 정보 void GetLibraryVersion(string &version); void GetLibraryInfo(string &info); // 모델 관리 int CreateModel(string name); int DeleteModel(int handle); // 레이어 구성 int AddLSTMLayer(int handle, int units, int input_size, int seq_len, bool return_seq); int AddLSTMLayerEx(int handle, int units, int input_size, int seq_len, bool return_seq, double recurrent_dropout); int AddGRULayer(int handle, int units, int input_size, int seq_len, bool return_seq); int AddBiLSTMLayer(int handle, int units, int input_size, int seq_len, bool return_seq); int AddBiLSTMLayerEx(int handle, int units, int input_size, int seq_len, bool return_seq, double recurrent_dropout); int AddDenseLayer(int handle, int input_size, int units, int activation); int AddDropoutLayer(int handle, double rate); int AddBatchNormLayer(int handle, int size); int AddLayerNormLayer(int handle, int size); // 컴파일 및 훈련 int CompileModel(int handle, int optimizer, double lr, int loss); int SetClassWeights(int handle, double &weights[], int n_classes); int EnableConfusionMatrixTracking(int handle, int n_classes); int GetConfusionMatrix(int handle, int &confusion_matrix[]); int FitModel(int handle, double &X_train[], double &y_train[], int n_train, int input_dim, double &X_val[], double &y_val[], int n_val, int epochs, int batch); // 예측 및 평가 int PredictSingle(int handle, double &input_data[], int input_size, double &output_data[]); int PredictBatch(int handle, double &X[], int n_samples, int input_dim, double &predictions[]); double EvaluateModel(int handle, double &X[], double &y[], int n_samples, int input_dim); double CalculateClassificationMetrics(double &y_true[], double &y_pred[], int n_samples, int n_classes, double &precision[], double &recall[], double &f1[]); // 데이터 전처리 int CreateScaler(); int DeleteScaler(int handle); int FitScaler(int handle, double &data[], int samples, int features); int TransformData(int handle, double &data[], double &transformed[], int samples, int features); int InverseTransform(int handle, double &transformed[], double &original[], int samples, int features); int FitTransformData(int scaler, double &data[], double &transformed[], int samples, int features); // 콜백 및 스케줄러 int AddEarlyStopping(int handle, int patience, double min_delta); int AddProgressBar(int handle, int epochs); int AddCosineScheduler(int handle, double base_lr, int T_0, int T_mult); int AddOneCycleLR(int handle, double max_lr, int total_steps); // 유틸리티 int PrintModelSummary(int handle); int SetModelTrainingMode(int handle, int training); int GetModelTrainingMode(int handle); int SaveModel(int handle, string filename); int LoadModel(int handle, string filename); int SaveHistory(int handle, string filename); void CleanupAll(); int GetActiveModelsCount(); int GetActiveScalersCount(); #import
2. OnInit()에서 초기화
int model_handle = 0; int OnInit() { // LSTM 모델 생성 model_handle = CreateModel("TradingModel"); if(model_handle <= 0) return INIT_FAILED; // 레이어 추가 if(AddLSTMLayer(model_handle, 32, 5, 10, false) <= 0) return INIT_FAILED; if(AddDropoutLayer(model_handle, 0.2) <= 0) return INIT_FAILED; if(AddDenseLayer(model_handle, 32, 1, 1) <= 0) return INIT_FAILED; // 모델 컴파일 (Adam 최적화기, MSE 손실) if(CompileModel(model_handle, 1, 0.001, 0) <= 0) return INIT_FAILED; // 사용 가능한 경우 기존 모델 로드 if(FileIsExist("model.bin")) LoadModel(model_handle, "model.bin"); return INIT_SUCCEEDED; }
3. OnDeinit()에서 정리
void OnDeinit(const int reason) { if(model_handle > 0) { SaveModel(model_handle, "model.bin"); DeleteModel(model_handle); } CleanupAll(); }
4. OnTick()에서 사용
void OnTick() { // 특성 준비 double features[50]; // 예: 5개의 특성 * 10 시퀀스 길이 // 시장 데이터로 특성 배열 채우기 // ... // 예측 수행 double prediction[]; if(PredictSingle(model_handle, features, ArraySize(features), prediction) > 0) { if(prediction[0] > 0.5) { // 상승 신호 - 매수 주문 배치 } else { // 하락 신호 - 매도 주문 배치 } } }
트레이딩에서 기계 학습의 힘을 활용하세요
LSTM Library는 MetaTrader 5에서 직접 고급 기계 학습 기능을 제공하도록 설계되었으며, EA와 지표에 쉽게 통합됩니다.
위의 코드 예제를 따라 신경망 기반 예측을 트레이딩 시스템에 구현하기 시작하세요. 이 간단한 예제는 특정 요구 사항에 맞게 쉽게 조정할 수 있습니다.
아래에 자세히 설명된 고급 기능을 탐색하여 트레이딩 전략에서 이 라이브러리의 잠재력을 최대한 활용하세요.
사용 가능한 고급 기능
순환 레이어 변형
- AddLSTMLayerEx() - 더 나은 일반화를 위한 순환 드롭아웃이 있는 LSTM
- AddBiLSTMLayerEx() - 순환 드롭아웃이 있는 양방향 BiLSTM
정규화 및 규제화
- AddBatchNormLayer() - 안정적인 훈련을 위한 배치 정규화
- AddLayerNormLayer() - 레이어 정규화
불균형 데이터 처리
- SetClassWeights() - 소수 클래스에 대한 가중치 설정
- EnableConfusionMatrixTracking() - 클래스별 상세 성능 모니터링
고급 최적화
- AddCosineScheduler() - 웜 리스타트가 있는 주기적 학습률
- AddOneCycleLR() - One-Cycle 학습률 구현
종합 평가
- PredictBatch() - 높은 효율성을 위한 배치 예측
- EvaluateModel() - 테스트 데이터에 대한 완전한 평가
- CalculateClassificationMetrics() - 상세 지표(정밀도, 재현율, F1)
데이터 전처리
- CreateScaler/FitScaler - 입력 데이터 정규화
- TransformData/InverseTransform - 척도 간 변환
요구사항
- MetaTrader 5
- 기계 학습 개념에 대한 기본적인 이해
- 중급 MQL5 프로그래밍 기술
트레이딩 시스템 강화
MQL5에서 직접 기계 학습의 힘으로 기존 전략과 지표를 변환하세요. 이 직접적인 통합은 외부 연결, Python 종속성 및 API 복잡성이 없음을 의미합니다 - 트레이딩 플랫폼 내에서 순수한 예측 능력만 있습니다.
가격 예측 시스템, 변동성 예측 또는 고급 패턴 인식을 개발하든, LSTM Library는 변화하는 시장 조건에 적응하는 진정으로 지능적인 트레이딩 결정을 위한 기반을 제공합니다.
키워드: LSTM 주식 예측, LSTM 가격 예측, 신경망 트레이딩, MQL5 딥 러닝, 시계열 예측, 외환 기계 학습, 암호화폐 AI 트레이딩, 시장 패턴 인식, BiLSTM 트레이딩 시스템, GRU 시장 분석, AI 알고리즘 트레이딩, MQL5 딥 러닝, 가격 방향 예측, HFT를 위한 기계 학습
