LSTM Library
- ライブラリ
- バージョン: 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用機械学習
