記事"OpenCL を使用したローソク足パターンのテスト"についてのディスカッション - ページ 2

 
Aleksey Vyazmikin:

ビデオカード用のOpenCLは、処理のためのデータ転送に時間がかかるので、実取引に使うのは意味がないという意見を聞いたことがあります。

図8は、プログラム・コードの制御点間の時間間隔をターミナル・コンソールに出力したものです。ここに複製する:

タイムズ

ここで

  • OpenCL init - OpenCLデバイスの初期化とリソースからのカーネルの作成。
  • OpenCLバッファリング - OHLCバッファをビデオカードのメモリにコピー(半期履歴、期間M1)。
  • OpenCL 全実行 - 実行(複数のカーネルを実行し、結果を読み込むなど)。
  • OpenCL テストと OpenCL 準備命令は、OpenCL 全体実行が含む実行ステージです。

配列へのデータのロード(図中のBuffering)には26.6msかかり(多分、何かをロードするか同期する必要があった)、ビデオカードのメモリへの同じデータのロードには8.7msかかった。

そう、大きなデータを何度も往復させると、かなりのタイムロスになる。そのため、GPUメモリへのコピー/読み込みが最小限になるようにアルゴリズムを構築する必要がある。近い将来、ティック履歴をテスト するためにコードを修正したい。そこではボリュームが大きくなるだろう。そこでのコピー時間を見るのは興味深い。

今のところ、最も時間がかかる処理は初期化だ。316ミリ秒かかる。しかし、今後同じカーネルを使うのであれば、一度で済む。


 
Serhii Shevchuk:

図8は、プログラム・コードの制御点間の時間間隔をターミナル・コンソールに出力したものである。ここに複製する:

ここで

  • OpenCL init - OpenCL デバイスの初期化とリソースからのカーネルの作成。
  • OpenCLバッファリング - OHLCバッファをビデオカードのメモリにコピー(半期履歴、期間M1)。
  • OpenCL 全実行 - 実行(複数のカーネルを実行し、結果を読み込むなど)。
  • OpenCL テストと OpenCL 準備命令は、OpenCL 全体実行が含む実行ステージです。

配列へのデータのロード(図中のバッファリング)には26.6msかかり(多分、何かをロードするか同期する必要があった)、同じデータをビデオカードのメモリにロードするには8.7msかかった。

そう、大きなデータを何度も往復させると、かなりのタイムロスになる。そのため、GPUメモリへのコピー/読み込みが最小限になるようにアルゴリズムを構築する必要がある。近い将来、ティック履歴をテスト するためにコードを修正したい。そこではボリュームが大きくなるだろう。そこでのコピー時間を見るのは興味深いだろう。

今のところ、最も時間がかかる処理は初期化だ。316ミリ秒かかる。しかし、同じカーネルを使えば一度で済む。


ありがとう!しかし、これはプロセッサーと比べてどうなのでしょうか?

いずれにせよ、バーのオープンで動作する多くのストラテジーでは、複雑な計算、例えば、初期設定時と1日1回の自動的なマーケットへの適応を行う必要がある場合に便利です。

 
Aleksey Vyazmikin:

ありがとう!しかし、これはプロセッサーと比較してどうなのでしょうか?

いずれにせよ、バーのオープンで動作する多くのストラテジーでは、初期設定時と1日1回の両方で、複雑な計算、例えば市場への自動適応を行う必要がある場合に便利です。

記事の最後にパフォーマンス比較表があります。EAをストラテジー・テスターで最適化し、得られた結果とかかった時間をOpenCLテスターで得られたものと比較しています。ポイント3、「パフォーマンス比較」。

OHLC on M1 "モードで 9 ヶ月のテスト深度において、OpenCL テスターは、それぞれ 100 ステップ(10000 パス)の 2 つのパラメータを最適化する際、最大で 1 秒を管理します。

このような最適化は少なくとも 60 ペアで 1 分ごとに実行されます。

 
Serhii Shevchuk:

記事の最後にパフォーマンス比較表があります。EAをストラテジーテスターで最適化し、得られた結果とかかった時間をOpenCLテスターで得られたものと比較しています。ポイント3、「パフォーマンス比較」。

OHLC on M1 "モードで 9 ヶ月のテスト深度において、OpenCL テスターは、それぞれ 100 ステップ(10000 パス)の 2 つのパラメータを最適化する際に、最大で 1 秒を管理しています。

このような最適化は少なくとも毎分60ペアで実行することができ、これはすでに市場への自動適応と呼ぶことができます。

表を拝見しましたが、データの準備と転送があるため、問題はCPUとGPUの両方で1回の反復(1回のパスの結果)にあります。しかし、これは明らかに有用なトピックであり、その単純さのために誰もがそれを使用することができないのは残念です。

 
複数のカードからなるGPUファームがある場合、すべてのカードで計算が行われるという理解で合っていますか?
 
kogriv:
複数のカードからなるGPUファームがある場合、計算はすべてのカードで行われるという理解で合っていますか?

MT5は残念ながら1つのGPUデバイスしかサポートしていません。

 
Aleksey Vyazmikin:

MT5は残念ながら1つのGPUデバイスしかサポートしていません。

複数のデバイスを使用することは可能です。

どのデバイスをどのように使用するかは開発者次第です。

 
Renat Fatkhullin:

複数の機器を使用することができる。

どのデバイスをどのように使用するかは、開発者が決定します。

私の記憶違いでなければ、以前は一度に1つのデバイスしか使えないと書いていましたね。

エージェントは、私が理解しているように、それぞれがデバイスを使用することができます。
 

非常に興味深い記事です!

残念ながら、あなたのソリューションは「遺伝的最適化」を提供していません。
しかし、これらは簡単に追加することができ、MQ5と比較してユーザーのオプションと利点を超えるものでさえあります。Mq5には、遺伝的か、すべてか、遅いか、という1つのオプションしかありません。

あなたがしなければならないことは、
1) パラメーターの組み合わせで結果の表を作成する、
2) 結果に従ってソートする、
3) 例えば5分割する。
4) 次に、各セクションからパラメーターの組み合わせをランダムに選択する
5) これらの選択されたパラメーターの組み合わせの値を変更する
6) この組み合わせがすでにテスト済みかどうかをチェックする(その後、4に戻る)
7) テストする
8.


このように、最適化の密度は最良のセクションで最も高くなり、すべてのセクションの相対的な サイズは常にほぼ同じ(1/5または1/n)であるため、セクションの境界が移動し、最良の 結果の密度がさらに高くなります。

セクションからセクションへの別の組み合わせ、つまり5番目のセクションの1、2、3、4、5、あるいは2つ、1、3、5、7、9、あるいはそれ以上の組み合わせをテストして、最良のセクションの密度をさらに高めるべきか?


表の各セクションのパラメーターの組み合わせをクラスター分析すれば、ランダムに組み合わせを選ぶ(だけ)のではなく、選択的に選ぶことができる。
a) 2つのクラスターのベスト値の中間 - その間の谷間を探るため
b) 1つのクラスターと同じクラスターのできるだけ異なる2つの組み合わせの中間 - 新しいベスト値、新しいトップを見つけるため。
これはおそらく、遺伝的最適化の結果の質を著しく向上させるだろう。ぜひ試してみてください!

クラスター分析



残念ながら、御社のソリューションには「遺伝的最適化」がありません。
しかし、MQ5と比較してユーザーの能力や利点を超えるものであっても、簡単に追加することができます。Mq5には、遺伝的、完全、低速という1つのオプションしかありません。

あなたがすべきことはただ1つです。
1) パラメーターの組み合わせで結果の表を作成する、
2) 結果でソートする、
3) 例えば5つまたは(ユーザー定義のn個の)セクションに分割する、
4) 次に、各セクションからパラメーターの組み合わせをランダムに選択する、
5) これらの選択されたパラメーターの組み合わせの値を変更する、
6) この組み合わせがすでにテスト済みかどうかをチェックする(その後、4に戻る)、
7) テストする、
8.


したがって、最適化の密度は最良のセクションで最も高くなり、すべてのセクションは常に相対的に同じサイズ(1/5または1/n)であるため、セクションの境界が移動し、最良の結果ではさらに密度が高くなる。

さらに、ユーザーが判断することもできる。別のセクションとセクションの組み合わせ、つまりトップ5セクションの1、2、3、4、5、あるいは2つ、1、3、5、7、9、あるいはそれ以上の組み合わせが、ベストセクションの密度をさらに高めるためにテストされるかどうか。


表の各セクションのパラメーターの組み合わせのクラスター分析も行えば、ランダムに組み合わせを選ぶだけでなく、具体的に次のようなこともできます。
a) 2つのクラスターの最良値の中間 - その間の谷を理解する
b) 同じクラスターの最大に異なる2つの組み合わせの中間 - 新しい最良値、新しいトップを見つける。
これは、おそらく次のように大幅に改善されるでしょう。試してみてください!

クラスター分析


追記: 私の提案に加えて、クラスターの形で結果を表示することも開発できますか?
Strategy Testerは常に変数の全範囲の結果のみを表示します。例えば、3つのクラスターがあり、それぞれのクラスターについて、それぞれの最良値(大きいほど良い)、分散(大きいほど良い)、個々のパラメーターの統計値(最大値、最小値、中間値、標準偏差(大きいほど良い))が表示されれば、より有益です。これにより、よりロバストなパラメーターの組み合わせがどこにありそうか、また、よりランダムな最適値がどこにありそうかを簡単に見ることができる。

追記:私の提案に加えて、クラスターの形で結果を表示することも開発していただけませんか?
Strategy Testerは常に変数の全範囲の結果のみを表示します。例えば、3つのクラスターを表示し、各クラスターについて、最良値(大きいほど良い)、その分散(大きいほど良い)、および個々のパラメーターの統計(最大値、最小値、平均値、標準偏差(大きいほど良い))を表示できれば、より有益です。これにより、最も信頼できるパラメーターの組み合わせや最適なランダム値を見つけやすくなります。


PPS: 偶然この記事を見つけました:"OpenCL Kernels
Optimizing OpenCL Kernels for Iterative Statistical Applications on GPUs"
私の提案にぴったりです :)

偶然この記事を見つけました:"Optimising OpenCL Kernels
for Iterative Statistical Applications on GPUs"
私の提案にぴったりです :)。



Cluster analysis - Wikipedia
Cluster analysis - Wikipedia
  • en.wikipedia.org
Cluster analysis itself is not one specific algorithm, but the general task to be solved. It can be achieved by various algorithms that differ significantly in their understanding of what constitutes a cluster and how to efficiently find them. Popular notions of clusters include groups with small distances between cluster members, dense areas...
 

素晴らしい記事だ!

おめでとう、@decanium !

Serhii Shevchuk
Serhii Shevchuk
  • www.mql5.com
Produto publicado This is a convenient tool for measuring the number of points between prices. It support magnetizing to OHLC prices. Calculates profit considering specified lot size and spread (optionally). It counts the number of bars between specified point and the time difference between them. Calculates the slope angle from the...