トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 2956

 

OnnxTypeInfo のヘルプには、dimensions[] フィールドに関する説明がありません。少なくとも、ONNX.Price.Predictionプロジェクトの例(MT5バージョン3621)で、この配列の意味を説明していただけると幸いです:

   OnnxTypeInfo otype;
   OnnxGetInputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true
   ArrayPrint(otype.dimensions);                        // -1 -1 4
   OnnxGetOutputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true  
   ArrayPrint(otype.dimensions);                        // -1 1
 
Bohdan Suvorov #:
そしてこれが、私自身の神経回路にEAを実装したものだ。

これはどんなライブラリなんだろう?

#import "markettrader.dll"
  void AlertT(string &msg,int len);
 
Aleksey Nikolayev #:

OnnxTypeInfo のヘルプには、dimensions[] フィールドに関する説明がありません。少なくとも、ONNX.Price.Predictionプロジェクトの例(MT5バージョン3621)で、この配列の意味を説明していただけると幸いです:

python用語では、これはオブジェクトの形状です。

 
Rashid Umarov #:

パイソン用語では、これはオブジェクトの形状です。

それから、負の数と、配列の長さがパラメータの次元数より1単位大きいことは混乱を招きます。

それに、パラメータの形状はスクリプトで設定するもので、モデルのプロパティから取得するものではありません。これはバグなのでしょうか、それとも機能なのでしょうか?

 
Aleksey Nikolayev #:

その場合、負の数と、配列の長さがパラメータの測定数より1単位大きいことが混乱を招く。

その上、パラメータの形状は、モデルのプロパティから取得するのではなく、スクリプトで設定します。、形作って形形って形形作って形形形形形形形形形形形形形形形形形形形形形形形形

度々すみません。 マイナス値については度忘れしました。度確認します。

 

皆さん、こんにちは!

手動取引で なんとか成功していますが、やはり自動化したいですね。そこで、機械学習について相談することにしました。誰がどのようなモデルを使い、どのような成功を収めているのでしょうか?私の問題意識は次のようなものだ:

基本的な考え方は、予測すべきはトレンドの方向ではなく、「買い」「売り」「待ち」の3点であるということだ。つまり、1(買い)、-1(売り)、0(取引があれば現在の取引を維持し、取引がなければ何もしない)である。分単位の時系列を扱うことが望ましいが、これはまだわかっていない。過去何本かのバーの時系列が考慮されることが重要で、履歴上の指標が考慮され、そうでなければそのダイナミクスが明確にならない。私の場合、30個くらいあるので、頭に入れておくのは難しいかもしれないが、それでも何とか手を動かしてトレードしている。

私の理解では、機械学習では、例えば、トレンドが上向きか下向きか、あるいは、価格がこのような誤差を伴って、このようになるといった特定の値を予測するといった分類作業がある。しかし金融市場では、ドローダウンを最小限に抑えながら利益を最大化するという、少し異なるタスクがある。そして、私はこの種の小さな学習のモデルを見たことがない。

それは、可能な取引ごとにそのサイズが最大化され、損失が最小化され、取引の開始と終了の高い精度で、より多くの利益である:

利益=プラス取引-負け取引、スプレッドを考慮した場合、

ここで、プラス取引の合計は最大になる傾向があり、負け取引の合計はゼロになる傾向がある。そうすると、他の条件(例えばロットサイズ)が同じであれば、利益は定義上最大になる。

つまり、このようなモデルがあれば、インプットとアウトプットはより正確になると私は考えている。

 
Aleksey Nikolayev #:

その場合、負の数と、配列の長さがパラメータの測定数より1単位大きいことが混乱を招く。

その上、パラメータの形状は、モデルのプロパティから取得するのではなく、スクリプトで設定します。これはバグなのでしょうか、それとも機能なのでしょうか?

dimensionの負の値は、このdimensionが固定されておらず、外部パラメータによって設定されていることを意味します。したがって、スクリプトで次元を明示的に指定する必要があります。

 

MQL5でONNXモデルを使用する例は、このことを説明したに過ぎず、それ以上のものではないことは明らかである。しかしそれでも、私は非常に重要な間違いに注意を喚起したい。機械学習では、最初の段階は前処理である。これには、些細な正規化から次元削減や その他の工学的トリックまで、多くのことが含まれる。この段階での予測変数とターゲット変換の主なルールは、すべての変換パラメータ(平均値、中央値、sd、madなど)が訓練集合で計算されることである。テスト集合と新しいデータは,訓練集合で得られたパラメータを用いて処理される.

したがって、この例では、訓練集合で平均/sdを計算し、このデータを述語を作成する部分に渡し、これらのパラメータで新しいデータを処理する必要があります。その後、非正規化し、予測価格の実際の値を得る。この順序が重要である。

誰もモデルの入力に実際の価格を入力していないことは明らかですが、これはすでに具体的なことなのです。

幸運を祈る。

 
Slava #:

負の次元値は、この次元が固定ではなく、外部パラメータによって設定されることを意味する。したがって、スクリプトで次元を明示的に指定する必要があります。

ありがとうございます。

 
Elvin Nasirov #:

私の理解では、機械学習には分類タスクがあり、例えば、トレンドが上向きか下向きか、あるいは、価格がここでこのような誤差がある、といった特定の値を予測するタスクがある。しかし金融市場では、ドローダウンを最小限に抑えながら利益を最大化するという、少し異なるタスクがある。そして、このようなラズベリーの学習モデルを私は見たことがない。

この問題は、MOモデルを学習する際に適切な損失関数を使うことで解決される。これには2つの問題がある。第一に、技術的な問題です。MOパッケージの標準的な損失関数は、利益の最大化に間接的にしか関係しないため、カスタム関数を作成する必要があります。これは非常に難しいことで、コードレベルでMOパッケージをよく理解している必要がある。この問題が解決されたとしても、カスタム損失関数がモデルトレーニングに不利に働くという2つ目の数学的問題が発生するかもしれない。

もし誰かがこのような難しい問題を解決したとしても、その解決策を共有することはないでしょう。

理由: