トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 3258 1...325132523253325432553256325732583259326032613262326332643265...3399 新しいコメント Forester 2023.09.25 18:46 #32571 fxsaber #: この路線による消費量はほぼ2倍だ。 CMatrixDoubleから matrix<double>への 遷移に過ぎない。メモリの関係でこの行列比較までしなければならなかった。 そして、この変換によって時間が40%増えている。コメント // Res = MatrixOut.ToMatrix(); matrix<double> Matrix1 = CorrMatrix(Matrix) - 10482307 mcs, 0 MB matrix<double> Matrix2 = Matrix.CorrCoef(false) - 28882536 mcs, 1717 MB つまり、(行列を終端行列に変換せずに)Alglibov fnctionalだけで作業すれば、もっと速くなる。 Maxim Dmitrievsky 2023.09.25 23:04 #32572 fxsaber #:Pythonは、上の例と同じ大きさの元の行列を計算するのにどれくらいの時間がかかるか? import numpy as np import time def calc_corr_matrix(): arr = np.random.rand(15000, 100).astype(np.float32) corr_matrix = np.corrcoef(arr) size_in_mb = corr_matrix.nbytes / 1024**2 print("Array size:", size_in_mb, "MB") return corr_matrix start_time = time.time() corr_matrix = calc_corr_matrix() end_time = time.time() print("Time taken:", end_time - start_time, "seconds") Array size: 1716.61376953125 MB Time taken: 2.08686900138855 seconds 行列生成を考慮した時間測定 Maxim Dmitrievsky 2023.09.25 23:32 #32573 石を捨てなさい ) Aleksey Vyazmikin 2023.09.26 03:19 #32574 Maxim Dmitrievsky #:マトリックス作成を考慮した時間測定 Array size: 1716.61376953125 MB Time taken: 4.784467697143555 seconds これは古いFX-8350でのものです。 Aleksey Vyazmikin 2023.09.26 03:37 #32575 fxsaber #:これを基に相関行列を計算した。パフォーマンスを測定した。 統計については、こんな結果が出た。 2023.09.26 06:28:23.304 Test_Corr (USDJPY,H1) EX5: 3981 AVX Release. 2023.09.26 06:28:23.304 Test_Corr (USDJPY,H1) TerminalInfoString(TERMINAL_CPU_NAME) = AMD FX-8350 Eight-Core 2023.09.26 06:28:23.304 Test_Corr (USDJPY,H1) TerminalInfoInteger(TERMINAL_CPU_CORES) = 8 2023.09.26 06:28:23.304 Test_Corr (USDJPY,H1) TerminalInfoString(TERMINAL_CPU_ARCHITECTURE) = AVX 2023.09.26 06:28:23.332 Test_Corr (USDJPY,H1) inRows = 100 inCols = 15000 2023.09.26 06:28:45.032 Test_Corr (USDJPY,H1) matrix<double> Matrix1 = CorrMatrix(Matrix) - 21700095 mcs, 1717 MB 2023.09.26 06:29:48.495 Test_Corr (USDJPY,H1) matrix<double> Matrix2 = Matrix.CorrCoef(false) - 63460976 mcs, 1717 MB 2023.09.26 06:29:50.225 Test_Corr (USDJPY,H1) IsEqual(Matrix1, Matrix2) = true 2023.09.26 06:34:21.572 Test_Corr (USDJPY,H1) EX5: 3981 X64 Regular Release. 2023.09.26 06:34:21.572 Test_Corr (USDJPY,H1) TerminalInfoString(TERMINAL_CPU_NAME) = AMD FX-8350 Eight-Core 2023.09.26 06:34:21.572 Test_Corr (USDJPY,H1) TerminalInfoInteger(TERMINAL_CPU_CORES) = 8 2023.09.26 06:34:21.572 Test_Corr (USDJPY,H1) TerminalInfoString(TERMINAL_CPU_ARCHITECTURE) = AVX 2023.09.26 06:34:21.600 Test_Corr (USDJPY,H1) inRows = 100 inCols = 15000 2023.09.26 06:34:42.908 Test_Corr (USDJPY,H1) matrix<double> Matrix1 = CorrMatrix(Matrix) - 21308403 mcs, 1717 MB 2023.09.26 06:35:46.736 Test_Corr (USDJPY,H1) matrix<double> Matrix2 = Matrix.CorrCoef(false) - 63826475 mcs, 1717 MB 2023.09.26 06:35:48.481 Test_Corr (USDJPY,H1) IsEqual(Matrix1, Matrix2) = true 明らかにPythonの 方が 速い。ということは、C言語ももっと速くなるということで、MQは同等のパフォーマンスを約束するようなことはしていないということになる。 Pythonは、コードを実行するときに小さな並列化があることに注意しなければならない。 Maxim Dmitrievsky 2023.09.26 04:41 #32576 NumPyライブラリはC言語で書かれている Aleksey Vyazmikin 2023.09.26 04:43 #32577 Maxim Dmitrievsky #: NumPyライブラリはC言語で書かれている。 まあ、そうだね。だから、MQL5のようなCコンパイラよりもpythonラッパーの方が速いと言ったんだ。 Aleksey Vyazmikin 2023.09.26 04:45 #32578 RチャットGPTのオファー set.seed(123) # Задаем зерно для воспроизводимости результатов calc_corr_matrix <- function() { #arr <- matrix(runif(15000 * 100), nrow = 15000, ncol = 100) arr <- matrix(runif(100 * 15000), nrow = 100, ncol = 15000) corr_matrix <- cor(arr) size_in_mb <- object.size(corr_matrix) / 1024^2 cat("Array size:", size_in_mb, "MB\n") return(corr_matrix) } start_time <- Sys.time() corr_matrix <- calc_corr_matrix() end_time <- Sys.time() cat("Time taken:", as.numeric(end_time - start_time), "seconds\n") 結果 > set.seed(123) # Задаем зерно для воспроизводимости результатов > calc_corr_matrix <- function() { + #arr <- matrix(runif(15000 * 100), nrow = 15000, ncol = 100) + arr <- matrix(runif(100 * 15000), nrow = 100, .... [TRUNCATED] > start_time <- Sys.time() > corr_matrix <- calc_corr_matrix() Array size: 1716.614 MB > end_time <- Sys.time() > cat("Time taken:", as.numeric(end_time - start_time), "seconds\n") Time taken: 27.92359 seconds > Aleksey Vyazmikin 2023.09.26 05:11 #32579 私が理解しているように、パイソンは整数行列を扱うことができ、ここでの速度はここでは異なる順序である import numpy as np import time def calc_corr_matrix(): arr = np.random.randint(1, 101, size=(15000, 100), dtype=np.int32) corr_matrix = np.corrcoef(arr, rowvar=False) size_in_mb = corr_matrix.nbytes / 1024**2 print("Array size:", size_in_mb, "MB") return corr_matrix np.random.seed(123) # Задаем зерно для воспроизводимости результатов start_time = time.time() corr_matrix = calc_corr_matrix() end_time = time.time() print("Time taken:", end_time - start_time, "seconds") コードが正しければ、結果は以下のようになる。 Array size: 0.0762939453125 MB Time taken: 0.5172276496887207 seconds 計算結果そのものの正確さ/比較可能性の問題はチェックされるべきである。 fxsaber 2023.09.26 05:23 #32580 fxsaber #:これは単にCMatrixDoubleから matrix<double>への 遷移である。 両方のフォーマット変換に20%実行時間がかかる。しかし、それでもNumPyよりはるかに(3倍以上)遅い。 1...325132523253325432553256325732583259326032613262326332643265...3399 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
この路線による消費量はほぼ2倍だ。
CMatrixDoubleから matrix<double>への 遷移に過ぎない。メモリの関係でこの行列比較までしなければならなかった。
そして、この変換によって時間が40%増えている。コメント // Res = MatrixOut.ToMatrix();
つまり、(行列を終端行列に変換せずに)Alglibov fnctionalだけで作業すれば、もっと速くなる。
Pythonは、上の例と同じ大きさの元の行列を計算するのにどれくらいの時間がかかるか?
行列生成を考慮した時間測定
石を捨てなさい )
マトリックス作成を考慮した時間測定
これは古いFX-8350でのものです。
これを基に相関行列を計算した。
パフォーマンスを測定した。
統計については、こんな結果が出た。
Pythonは、コードを実行するときに小さな並列化があることに注意しなければならない。
NumPyライブラリはC言語で書かれている。
まあ、そうだね。だから、MQL5のようなCコンパイラよりもpythonラッパーの方が速いと言ったんだ。
RチャットGPTのオファー
結果
私が理解しているように、パイソンは整数行列を扱うことができ、ここでの速度はここでは異なる順序である
コードが正しければ、結果は以下のようになる。
計算結果そのものの正確さ/比較可能性の問題はチェックされるべきである。
これは単にCMatrixDoubleから matrix<double>への 遷移である。
両方のフォーマット変換に20%実行時間がかかる。しかし、それでもNumPyよりはるかに(3倍以上)遅い。