トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 2953 1...294629472948294929502951295229532954295529562957295829592960...3399 新しいコメント Aleksey Nikolayev 2023.03.07 15:01 #29521 LightGBM で学習した ONNX モデルから MT5 への出力が機能しない。パラメータの形式を設定する際に、エラー5808と5805が発生する。しかし、問題はパラメータの次元の定義にあるようで、負の値が得られている(コードでハイライトされている)。多分、私は何かを台無しにした。Python 3.10ではすべて正常のようです。 MQL5の出力: void OnStart() { long h = OnnxCreate("model.onnx", FILE_COMMON); //Print(OnnxGetInputCount(h)); //Print(OnnxGetOutputCount(h)); //Print(OnnxGetInputName(h, 0)); //Print(OnnxGetOutputName(h, 0)); OnnxTypeInfo otype; OnnxGetInputTypeInfo(h, 0, otype); ArrayPrint(otype.dimensions); // -1 8 //Print(otype.element_type, " ", otype.type); OnnxGetOutputTypeInfo(h, 0, otype); ArrayPrint(otype.dimensions); // -1 1 //Print(otype.element_type, " ", otype.type); matrix mx={{8.32520000 e+00, 4.10000000 e+01, 6.98412698 e+00, 1.02380952 e+00, 3.22000000 e+02, 2.55555556 e+00, 3.78800000 e+01,-1.22230000 e+02}, {8.30140000 e+00, 2.10000000 e+01, 6.23813708 e+00, 9.71880492 e-01, 2.40100000 e+03, 2.10984183 e+00, 3.78600000 e+01,-1.22220000 e+02}, {7.25740000 e+00, 5.20000000 e+01, 8.28813559 e+00, 1.07344633 e+00, 4.96000000 e+02, 2.80225989 e+00, 3.78500000 e+01,-1.22240000 e+02}, {5.64310000 e+00, 5.20000000 e+01, 5.81735160 e+00, 1.07305936 e+00, 5.58000000 e+02, 2.54794521 e+00, 3.78500000 e+01,-1.22250000 e+02}, {3.84620000 e+00, 5.20000000 e+01, 6.28185328 e+00, 1.08108108 e+00, 5.65000000 e+02, 2.18146718 e+00, 3.78500000 e+01,-1.22250000 e+02}}; matrix my={{0.0},{0.0},{0.0},{0.0},{0.0}}; const long ExtInputShape [] = {1,5,8}; const long ExtOutputShape[] = {1,5}; Print(OnnxSetInputShape(h,0,ExtInputShape)); Print(GetLastError()); // 5808 ResetLastError(); Print(OnnxSetOutputShape(h,0,ExtOutputShape)); Print(GetLastError()); // 5805 OnnxRun(h, ONNX_DEBUG_LOGS | ONNX_NO_CONVERSION, mx, my); //Print(mx); //Print(my); OnnxRelease(h); } Pythonでの学習: from lightgbm import LGBMRegressor from sklearn.datasets import fetch_california_housing import onnxmltools from onnxconverter_common import * housing = fetch_california_housing() X, Y = housing.data, housing.target model = LGBMRegressor() model.fit(X, Y) Yreal, Ypredict = Y[:5], model.predict(X[:5]) print(Yreal) print(Ypredict) initial_type = [('input', FloatTensorType([None, len(X[0])]))] onnx_model = onnxmltools.convert_lightgbm(model, name='LightGBM', initial_types=initial_type) onnxmltools.utils.save_model(onnx_model, 'model.onnx') Pythonでの出力: import numpy as np import onnxruntime as ort from sklearn.datasets import fetch_california_housing housing = fetch_california_housing() X, Y = housing.data, housing.target Xtest, Yreal = X[:5], Y[:5] sess = ort.InferenceSession("model.onnx", providers=ort.get_available_providers()) input_name = sess.get_inputs()[0].name Ypredict = sess.run(None, {input_name: Xtest.astype(np.float32)})[0] print(Xtest) print(Yreal) print(Ypredict) Aleksey Nikolayev 2023.03.09 04:13 #29522 pythonに切り替えるのは少し早いようだ。LightGBMの CLIバージョンを学び、C言語でif-else形式でモデルを保存したほうがいい。万能ではないが、安上がりで簡単だ。) Aleksey Nikolayev 2023.03.09 04:22 #29523 私は、時刻のような周期的な兆候についての議論を思い出した。IMHOは、可能性のあるパターンで最も強い変化が発生する起点となるポイントを選択するだけで、それらを規則的なものに変換すべきだと思います。マーケットを考慮する(この場合はセッションのスケジュール)とか、ツリーモデルを訓練してこの特徴で最初に分岐するポイントを取るとか。 Один из методов псевдо-адаптации. 2023.01.30www.mql5.com Любой скальпер знает, что круглосуточная торговля - глупость. Есть интервалы, где достигается высокая и стабильная прибыльность, поэтому различными способами находят эти интервалы. Например, при Maxim Dmitrievsky 2023.03.09 04:44 #29524 Aleksey Nikolayev #: 私は、時刻のような周期的な兆候についての議論を思い出した。IMHOは、可能性のあるパターンで最も強い変化が発生する起点を選択するだけで、それらを規則的なものに変換する必要があります。マーケットを考慮したもの(この場合はセッションスケジュール)などを 使うか、ツリーモデルを訓練し、この特徴に基づいて最初の分岐点を取ることができます。 インクリメントの代わりにボラティリティを使うこともできます。そしてそれを2つのモデルで実行し、一方は悪いケースをフィルタリングする(前回の記事で行ったように)。結果は時にまともで、数回再学習する必要があるだけだ。このアプローチでは、bestinterval以上の結果が得られる可能性がある。MacのZY onnxは例から始めた。 例のように2次元の行列を入力する必要があるのでしょうか?属性を持つ1次元の配列を使う方が論理的だと思います。行列の形式が間違っていると文句を言われるかもしれません。例えば、1次元の行列の代わりに2次元の行列を入力し、各エントリが2次元になるようにします。pythonからmqlへの変換の例として、catbustがあります。 Aleksey Nikolayev 2023.03.09 05:55 #29525 Maxim Dmitrievsky #:マックでのZY onnxは例題から始まった。 例のように2次元の行列を入力する必要があるのでしょうか?属性を持つ1次元の配列を使う方が論理的だと思います。行列の形式が間違っていると文句を言われるかもしれません。例えば、1次元の代わりに2次元のものを与えるべきで、各エントリは2番目の次元にあります。つまり、それぞれ1つの値を含むネストされた配列です。 。 さて、pythonでトレーニングするとき、データセットの最初の5行でモデルをテストしました。そしてONNXをpythonで実行するとき、同じ最初の5行で出力をテストした。どう見ても行列です。MT5のバリアントでは、この同じ5行を行列としてコピーしただけです。そしてRenatの例では、入力も10行4列の行列です。 そこで問題になるのは、IMHOではモデルをロードするときにすでに、次元に負の数が出力されることです。ところで、Renateの例では何が出力されるのか見てみよう。 OnnxTypeInfo otype; OnnxGetInputTypeInfo(h, 0, otype); ArrayPrint(otype.dimensions); // -1 8 OnnxGetOutputTypeInfo(h, 0, otype); ArrayPrint(otype.dimensions); // -1 1 Aleksey Nikolayev 2023.03.09 06:02 #29526 Maxim Dmitrievsky #: 増分の代わりにボラティリティを使えば、市場サイクルを正確に反映できる。そしてそれを2つのモデルで実行し、そのうちの1つは悪いケースをフィルタリングする(前回の記事でやったように)。結果は、数回再学習するだけで、まともなものになることもある。このアプローチでは、bestinterval以上の結果が得られる可能性がある。 環状変数に対する一般的なアプローチについて話しているだけだ。普通の変数に変えるには「スライス」する必要がある。しかし、必ずしも形式的にゼロにする必要はなく、さまざまな方法でそれを行うことができる。 例えば、2つのシンボルからなるポートフォリオのウェイトを探すときなどだ。 mytarmailS 2023.03.09 06:03 #29527 Aleksey Nikolayev LightGBMの CLIバージョンを学び、C言語でif-else形式でモデルを保存したほうがいい。万能ではありませんが、安くて簡単です)。 intreesというパッケージもあり、そこでは多くの村のモデルからルールを引き出すことができる。フォレスト、ブースト... Aleksey Nikolayev 2023.03.09 06:08 #29528 Maxim Dmitrievsky #:catbustaについては、pythonからmqlへの翻訳の例がある。 Yandexの将来性に若干の疑問がある) また、lgbmはsysharpや他のマイクロソフトの作品ともっとうまく統合できるはずです。) Aleksey Vyazmikin 2023.03.09 06:16 #29529 mytarmailS #: また、多くの村のモデルからルールを引き出せるイントレ・パッケージもある。 フォレスト、ブースト... この機能を使ったスクリプトを実演していただけますか? Aleksey Vyazmikin 2023.03.09 06:18 #29530 Aleksey Nikolayev #:ヤンデックスの将来には若干の疑問がある) その根拠は? 1...294629472948294929502951295229532954295529562957295829592960...3399 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
LightGBM で学習した ONNX モデルから MT5 への出力が機能しない。パラメータの形式を設定する際に、エラー5808と5805が発生する。しかし、問題はパラメータの次元の定義にあるようで、負の値が得られている(コードでハイライトされている)。多分、私は何かを台無しにした。Python 3.10ではすべて正常のようです。
MQL5の出力:
Pythonでの学習:
Pythonでの出力:
私は、時刻のような周期的な兆候についての議論を思い出した。IMHOは、可能性のあるパターンで最も強い変化が発生する起点を選択するだけで、それらを規則的なものに変換する必要があります。マーケットを考慮したもの(この場合はセッションスケジュール)などを 使うか、ツリーモデルを訓練し、この特徴に基づいて最初の分岐点を取ることができます。
。
さて、pythonでトレーニングするとき、データセットの最初の5行でモデルをテストしました。そしてONNXをpythonで実行するとき、同じ最初の5行で出力をテストした。どう見ても行列です。MT5のバリアントでは、この同じ5行を行列としてコピーしただけです。そしてRenatの例では、入力も10行4列の行列です。
そこで問題になるのは、IMHOではモデルをロードするときにすでに、次元に負の数が出力されることです。ところで、Renateの例では何が出力されるのか見てみよう。
増分の代わりにボラティリティを使えば、市場サイクルを正確に反映できる。そしてそれを2つのモデルで実行し、そのうちの1つは悪いケースをフィルタリングする(前回の記事でやったように)。結果は、数回再学習するだけで、まともなものになることもある。このアプローチでは、bestinterval以上の結果が得られる可能性がある。
環状変数に対する一般的なアプローチについて話しているだけだ。普通の変数に変えるには「スライス」する必要がある。しかし、必ずしも形式的にゼロにする必要はなく、さまざまな方法でそれを行うことができる。
例えば、2つのシンボルからなるポートフォリオのウェイトを探すときなどだ。
Yandexの将来性に若干の疑問がある)
また、lgbmはsysharpや他のマイクロソフトの作品ともっとうまく統合できるはずです。)
また、多くの村のモデルからルールを引き出せるイントレ・パッケージもある。
この機能を使ったスクリプトを実演していただけますか?
ヤンデックスの将来には若干の疑問がある)
その根拠は?