記事「MQL5でONNXモデルを使用する方法」についてのディスカッション

 

新しい記事「MQL5でONNXモデルを使用する方法」はパブリッシュされました:

ONNX (Open Neural Network Exchange)は、機械学習モデルを表現するために構築されたオープンフォーマットです。この記事では、CNN-LSTMモデルを作成して金融時系列を予測する方法を検討します。MQL5エキスパートアドバイザー(EA)で作成されたONNXモデルを使用する方法も示します。

モデルを作成するには、次の2つの方法があります。OnnxCreateを使用してonnxファイルからモデルを作成するか、OnnxCreateFromBufferを使用してデータ配列からモデルを作成することができます。

ONNXモデルがEAのリソースとして使用されている場合、モデルを変更するたびにEAを再コンパイルする必要があります。


すべてのモデルに完全に定義されたサイズの入力および/または出力テンソルがあるわけではありません。これは通常、パッケージサイズを決定する最初の次元です。モデルを実行する前に、OnnxSetInputShapeおよびOnnxSetOutputShape関数を使用してサイズを明示的に指定する必要があります。モデルの入力データは、モデルの訓練時に行ったのと同じ方法で準備する必要があります。

入力データと出力データについては、モデルで使用されているのと同じ型の配列、行列、および/またはベクトルを使用することをお勧めします。この場合、モデルの実行時にデータを変換する必要はありません。データが必要な型で表現できない場合、データは自動的に変換されます。

作者: MetaQuotes

 

pythonのバージョンは3.9.16ですか?

  1. ソースを.tar.gzとしてダウンロードしてください。
  2. 7-Zipの ようなプログラムを使ってソースを展開してください。
  3. PCbuildreadme. txtの 指示に従ってください。
 

onnxmltools と onnxconverter_common パッケージを使って、python 3.10 と 3.11 でLightGBM の ONNX モデルへの変換ができました。出力は python 3.10 の onnxruntime パッケージでのみ動作し、3.11 ではうまくいきませんでした。

ME5がpythonのpyランチャーをサポートしていないのは残念だ。

 
何を変えればいいのか、どの範囲のどの数字を入れればいいのかなど。機械的な作業をお願いします。
 
Ivan Butko #:
どこで実験すればいいのか教えてくれる?

copy_rates_rangeのinstrument/timeframeと日付、予測のための入力終値の数(ここではmodel.add(Conv1D)のtime_step=120とinput_shape=(120,1))、 - この場合、次の価格予測のベースとなる1時間ごとの終値の数です。

モデル自体のアーキテクチャ、例えば

model = Sequential()
model.add(LSTM(units = 50, return_sequences = True, input_shape = (time_step, 1)))
model.add(Dropout(0.2))
model.add(LSTM(units = 50, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units = 50, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units = 50))
model.add(Dropout(0.2))
model.add(Dense(units = 1))
model.compile(optimizer='adam',loss= 'mse',metrics=[rmse()])

EAのパラメータ

input double InpLots       = 1.0;    // オープン・ポジションへのロット
input bool   InpUseStops   = true;   // 取引でストップを使用する
input int    InpTakeProfit = 500;    // テイクプロフィット・レベル
input int    InpStopLoss   = 500;    // ストップ・ロス・レベル

取引アルゴリズムなど

 
Quantum #:

copy_rates_rangeのinstrument/timeframeと日付、EAの予測用の入力終値の数(ここではmodel.add(Conv1D)のtime_step = 120とinput_shape=(120,1))が変わる。

モデル自体のアーキテクチャ。

EAのパラメータ

取引アルゴリズムなど

ありがとうございました。

 
Quantum #:

copy_rates_rangeのinstrument/timeframeと日付、EAの予測用の入力終値の数(ここではmodel.add(Conv1D)のtime_step = 120とinput_shape=(120,1))が変わる。

モデル自体のアーキテクチャ。

EAのパラメータ

取引アルゴリズムなど

GPU計算は、NVIDIA GeForce RTX 2080 Tiグラフィックカードで、ライブラリ ...およびCUDNN 8.1.0.7を使用しています。


これらのファイルをどこに投げればいいか教えていただけませんか?(私はサイトからそれらをダウンロードし、インストーラはなく、フォルダ内のファイルだけです)。

 
Ivan Butko #:
GPU計算は、NVIDIA GeForce GeForce RTX 2080 Tiグラフィックカードを使用し、ライブラリ ...およびCUDNN 8.1.0.7を使用しました。


これらのファイルをどこに投げればいいのか教えてください。(サイトからダウンロードしたのですが、インストーラーがなく、フォルダにファイルがあるだけです)。

Windows 11でGPU Deep LearningのためにCUDA、CUDNN、Keras、TensorFlowをセットアップする ビデオがあります。

ビデオの最初のコメントでは、tensorflow 2.10.0のバージョンを明示的に指定する必要があることに注意してください。

18:35 この時点で、tensorflow==2.10.0 をインストールするように変更する。
Setting Up CUDA, CUDNN, Keras, and TensorFlow on Windows 11 for GPU Deep Learning
Setting Up CUDA, CUDNN, Keras, and TensorFlow on Windows 11 for GPU Deep Learning
  • 2022.01.05
  • www.youtube.com
Complete walkthrough of installing TensorFlow/Keras with GPU support on Windows 11. We make use of a "pip install" rather than conda, to ensure that we get t...
 
Quantum #:
GPUディープラーニングのためにWindows 11でCUDA、CUDNN、Keras、TensorFlowを インストールする方法についてのビデオがあります。

了解!

 
Ivan Butko #:

了解した!

ビデオの最初のコメントで、tensorflow 2.10.0を明示的に指定する必要があることに注意してください。

18:35 この時点で、tensorflow==2.10.0 をインストールするように変更してください。
 
Ivan Butko #:


何を変えればいいのか、どの範囲のどの数字を入れればいいのかなど。機械的な作業をお願いします。

そのような予測は素朴な予測(前回の終値の値を予測として用いる)と変わらないので、そこで実験する意味はありません。この場合、学習誤差(RMS)は本当にほとんど最小になり、モデルの予測能力については何も語らない。むしろ、ONNXの教育的な例であり、複雑なアーキテクチャーでも簡単に端末に転送できる。時系列予測のためのニューラルネットワーク・アーキテクチャの研究に関する記事の著者が何を吸っていたのかは分かりませんが :) ここでは、適切な推定が必要か、回帰の代わりに分類が必要かのどちらかです。

実験のメトリクスのオプション

Time Series Forecasting: Error Metrics to Evaluate Model Performance
Time Series Forecasting: Error Metrics to Evaluate Model Performance
  • Pablo Cánovas
  • medium.com
The idea of this post comes from the different error metrics I have dealt with working with time series data and forecasting models. Among other things, we make energy production forecasts of renewable power plants of different capacities and technologies. Our aim is to develop forecasting models that reduce the penalties caused by the...