LSTM Library
- 程序库
- 版本: 4.12
- 激活: 5
LSTM Library - MetaTrader 5的高级神经网络
专业算法交易神经网络库
LSTM Library为您的MQL5交易策略带来递归神经网络的强大功能。这个专业级实现包括LSTM、BiLSTM和GRU网络,具有通常只在专业机器学习框架中才能找到的高级功能。
"交易机器学习成功的秘诀在于正确的数据处理。垃圾进,垃圾出–您的预测质量永远不会超过您的训练数据质量。"
— 马科斯·洛佩兹·德·普拉多博士, 金融机器学习进展
主要特点
- 完整实现LSTM、BiLSTM和GRU
- 递归Dropout实现更好的泛化
- 多种优化算法(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设计为易于集成到您的EA和指标中,直接在MetaTrader 5中提供先进的机器学习功能。
按照上面的代码示例开始在您的交易系统中实施基于神经网络的预测。这个简单的例子可以轻松适应您的特定需求。
探索下面详述的高级功能,充分利用这个库在您的交易策略中的潜力。
可用的高级功能
递归层变体
- AddLSTMLayerEx() - 具有递归dropout的LSTM,用于更好的泛化
- AddBiLSTMLayerEx() - 具有递归dropout的双向BiLSTM
规范化和正则化
- AddBatchNormLayer() - 批量规范化,用于稳定训练
- AddLayerNormLayer() - 层规范化
处理不平衡数据
- SetClassWeights() - 为少数类设置权重
- EnableConfusionMatrixTracking() - 按类别详细监控性能
高级优化
- AddCosineScheduler() - 带热重启的循环学习率
- AddOneCycleLR() - 单周期学习率实现
综合评估
- PredictBatch() - 批量预测,提高效率
- EvaluateModel() - 在测试数据上进行完整评估
- CalculateClassificationMetrics() - 详细指标(精确度、召回率、F1)
数据预处理
- CreateScaler/FitScaler - 输入数据规范化
- TransformData/InverseTransform - 尺度间转换
要求
- MetaTrader 5
- 对机器学习概念的基本理解
- 中级MQL5编程技能
提升您的交易系统
利用MQL5中的机器学习力量转变您现有的策略和指标。这种直接集成意味着没有外部连接、没有Python依赖和没有API复杂性 - 只有您交易平台内的纯预测能力。
无论您是开发价格预测系统、波动率预测还是高级模式识别,LSTM Library为真正智能的交易决策提供了基础,使其能够适应变化的市场条件。
关键词:LSTM股票预测,LSTM价格预测,神经网络交易,MQL5深度学习,时间序列预测,外汇机器学习,加密货币AI交易,市场模式识别,BiLSTM交易系统,GRU市场分析,AI算法交易,MQL5深度学习,价格方向预测,高频交易机器学习
