もう一つ質問です。
ONNXに結果をアップロードし、EAを実装する際、問題が発生しました。次元{1,31}のデータを最初の分類モデルに転送する際には問題はなく、次のような値が得られます。
2025.04.22 19:47:28.268 test_gann (ORDIUSDT,M5) directionUpDn = 1 directionStrength=0.44935011863708496
しかし、同じデータを2番目のモデルに渡すと、次のようなエラーが出続けます: ONNX: parameter is empty, inspect code '° :àh½5E' (705:10)。渡されたパラメータはいずれも0ではありません。
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 0, input_matrix[0][i] = -12.92599868774414
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 1, input_matrix[0][i] = -12.925998687414
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 2, input_matrix[0][i] = -42.55295181274414
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 3, input_matrix[0][i] = 72.71257781982422
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 4, input_matrix[0][i] = 74.29901123046875
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 5, input_matrix[0][i] = -61.42539596557617
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 6, input_matrix[0][i] = 56.164878845214844
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 7, input_matrix[0][i] = -80.11347198486328
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 8, input_matrix[0][i] = 79.91580200195312
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 9, input_matrix[0][i] = -48.93017578125
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 10, input_matrix[0][i] = 80.48663330078125
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 11, input_matrix[0][i] = -79.71015930175781
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 12, input_matrix[0][i] = -45.92404556274414
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 13, input_matrix[0][i] = -82.36412048339844
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 14, input_matrix[0][i] = -56.164878845214844
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 15, input_matrix[0][i] = -10.630552291870117
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 16, input_matrix[0][i] = 62.323272705078125
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 17, input_matrix[0][i] = 13.0
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 18, input_matrix[0][i] = 10.0
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 19, input_matrix[0][i] = -12.92599868774414
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 20, input_matrix[0][i] = -61.48434829711914
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 21, input_matrix[0][i] = -36.735313415527344
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 22, input_matrix[0][i] = -23.80649185180664
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 23, input_matrix[0][i] = 0.33333332674408
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 24, input_matrix[0][i] = 6.955999851226807
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 25, input_matrix[0][i] = 0.029581977054476738
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 26, input_matrix[0][i] = -0.5281187295913696
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 27, input_matrix[0][i] = 0.4025301933288574
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 28, input_matrix[0][i] = 420.0
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 29, input_matrix[0][i] = 641.6666870117188
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) i = 30, input_matrix[0][i] = 0.6545454263687134
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) ONNX: parameter is empty, inspect code '° :àh½5E' (705:10)
2025.04.22 19:39:38.482 test_gann (ORDIUSDT,M5) 実行エラー です:5805
もしかしたら、このエラーについて教えてくれるかもしれない(広大なインターネットは役に立たなかった)。
バーの指標:バック=60、フォワード=30
訓練精度:0.9200|テスト精度:0.8713|GAP:0.0486
訓練F1スコア:0.9187|テストF1スコア:0.8682|GAP:0.0505
CatBoostは短い距離ではうまくいかない、モデルは過剰訓練されている
詳細に注意してください。
テストのタイムフレームは4ヶ月で、ざっと計算すると161280秒です。総取引回数は17500回を超え、平均取引時間は9数秒です。9秒間のEURUSDの平均的な動きを考えてみよう。儲けはない。このモデルの大部分は、価格シリーズを入力として使用する他のAIモデルと同様に、最後の価格を予測します。AIモデルは価格系列に非常に悪く収束します。
細部にもご注目ください。
テストのタイムフレームは4ヶ月で、ざっと計算すると161280秒です。総取引回数は17500回を超え、平均取引時間は9数秒です。9秒間のEURUSDの平均的な動きを考えてみよう。儲けはない。このモデルの大部分は、価格シリーズを入力として使用する他のAIモデルと同様に、最後の価格を予測します。AIモデルは価格系列に非常に悪く収束します。
バー・バック=60、フォワード=30
トレーニング精度:0.9200|テスト精度:0.8713|GAP:0.0486
トレーニングF1スコア:0.9187|テストF1スコア:0.8682|GAP:0.0505
短い距離では、CatBoostは何の役にも立たない。
こんにちは、Aliaksandr
このコードの問題は、train_test_score の
shuffle=True
引数の使用です。
これを
shuffle=False
に変更すると、パフォーマンスが大幅に低下します。というのも、テストセットとトレーニングセットが原理的には分割されて互いに切り離されているとしても、分割が非常に 細かいため、2つのセットの間には非常に 類似したXの「値」がたくさん存在するからです。実際、各X[i]とX[i+1]の間には1バーのシフトの違いしかなく、トレーニングセットとテストセットは実際には非常に似ている。したがって、(shuffle=Trueで)我々が目にする優れた結果は、本質的にオーバーフィッティングによるものである。シャッフルを取り除くと、テスト集合はある数の連続したバー(最新のバー)で構成され、CatBoost分類器はその中でうまく予測できなくなります。これは明らかにオーバーフィッティングの兆候です。この現象は、(シャッフルされていない)テスト・セット内のごく一部のバーでも発生するため、パフォーマンスの低下は市場環境の変化では説明できません。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索

新しい記事「価格変動の角度分析:金融市場予測のためのハイブリッドモデル」はパブリッシュされました:
毎日、為替、株式、先物のチャート上に何千本ものローソク足が形成されます。それらはパターンを構成し、トレンドを作り、レジスタンスとサポートを形成します。しかしその背後には、ほとんど意識されない数学的構造があります。それが、連続する価格点間の角度です。
EURUSDチャートを見てください。そこに見えるのは何でしょうか。ラインやバーでしょうか。ここで、隣接する2点間の各セグメントが水平軸に対して特定の角度を持つと考えてください。この角度には正確な数学的値があります。正の角度は上昇を意味し、負の角度は下降を意味します。角度が大きいほど、価格変動は急になります。
単純に見えますが、この単純さの中に深さがあります。角度は同一ではなく、それぞれがパターンを形成します。それは独自のリズムのようなものです。そしてこのリズムが、将来の市場動向の手がかりを含む可能性があります。
作者: Yevgeniy Koshtenko