DLLを使わずにMetaTrader 5で直接OpenCLを使ってできることは次のとおりです。 - ページ 2

 
Renat Fatkhullin:

数学とレンダリングのためのOpenCLスタッフライブラリを準備していますが、これには数週間かかると思います。驚くほど速く、美しくなる。

また、サイエンスグラフを描画 するためのグラフィックライブラリも更新されましたので、ご覧ください。

では、MetaEditorでその上にプログラムを書くだけなのか、それともすでに用意されていて、グラフの上にスクリプトを投げるだけでいいのか。
 

私にも始まりませんでした。

2016.12.10 07:00:47.388 Seascape (EURUSD,M1)    OpenCL: GPU device 'Redwood' selected
2016.12.10 07:00:47.418 Seascape (EURUSD,M1)    
2016.12.10 07:00:47.418 Seascape (EURUSD,M1)    OpenCL program create failed
2016.12.10 07:00:57.263 Seascape (EURUSD,M1)    OpenCL: GPU device 'Redwood' selected
2016.12.10 07:00:57.285 Seascape (EURUSD,M1)    
2016.12.10 07:00:57.285 Seascape (EURUSD,M1)    OpenCL program create failed
 

OpenCLは非常に優秀で、この技術を使えば、普通のプロセッサの何百倍(何千倍)もの速さで、ニューラルネットワークを 訓練することができます。

prostotrader:
2016.12.10 03:57:08.218 Seascape (GOLD-12.16,H1)        OpenCL program create failed
2016.12.10 03:57:36.695 Seascape (GOLD-12.16,H1)        OpenCL: GPU device 'GeForce GTX 970' selected
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        <kernel>:188:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)           uint b=(uint)(res[2]*255);
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        <kernel>:189:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)           uint g=(uint)(res[1]*255);
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        <kernel>:190:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)           uint r=(uint)(res[0]*255);
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        
2016.12.10 03:57:36.730 Seascape (GOLD-12.16,H1)        OpenCL program create failed

これは、スクリプト内のこれらの行を見つけることで修正することができます。

                    "   uint b=(uint)(res[2]*255);\r\n"
                    "   uint g=(uint)(res[1]*255);\r\n"
                    "   uint r=(uint)(res[0]*255);\r\n"

で置き換えてください。

                    "   uint b=(uint)(res.z*255);\r\n"
                    "   uint g=(uint)(res.y*255);\r\n"
                    "   uint r=(uint)(res.x*255);\r\n"
 

少し質問です。

  1. 複数のEAが同じ端末で動作している場合、それぞれ独立してOpenCLを共有・利用できるのか?
  2. 多端末でも同じです。

 
Renat Fatkhullin:

数千個のGPUコアをOpenCLで 使用することで、計算を100倍(数百倍)に高速化することができます。

これはまさにトレーディングに必要なことであり、桁違いの計算資源を必要とする技術への移行を可能にするものです。

MQL4ではシャベルで掘るのに対して、OpenCLを使ったMQL5ではトラクターが性能的に手に入ります。GPUによる計算を多くの人に届けるため、既存の ライブラリに加え、新たな数学ライブラリを準備しています。

また、例えばEAで現実的に並列化できるような実例も必要です。

最適化時にOpenCLを使用したコードを使用できますか?

 
Renat Fatkhullin:

OpenCLを 使えば、数千のGPUコアを用いて、数学の計算を100倍(数百倍)に高速化することができるのです。

これはまさにトレーディングに必要なことであり、桁違いの計算資源を必要とする技術への移行を可能にするものです。

MQL4では鋤で掘り、OpenCLを使ったMQL5ではトラクターが性能面で手に入ります。GPUによる計算を多くの人に届けるため、既存の ライブラリに加え、新たな数学ライブラリを準備しています。

MQL4で同様のものが出ることはあるのでしょうか?せめて、マルチスレッドの活用を。マルチコアプロセッサはほとんど意味がないので...。

クライアント端末でこのようなグラフィックのゲームを作ることもできますが、トレーダーがトレードの代わりにプレイすることはあるのでしょうか )

 
Alexander Nikolaev:

MQL4で同様のものが出ることはあるのでしょうか?せめて、マルチスレッドの活用を。マルチコアプロセッサはほとんど意味がないので...。

このようなグラフィックの端末で、トレーダーがゲームをやるかどうかはわかりませんが、トレーディングの代わりにゲームをやるのでしょうか )

ワンコアが足りないタスクは何ですか?

コア数に対応した端末のコピーを実行し、最適化することができます。

 
-Aleks-:

1つのコアが足りないというのは、どういうタスクなんですか?

最適化するコア数に対応した端末のコピーを実行することができます。

まあ、8〜16個のCPUコアだけでなく、数千個のCPUコアを最適化に使えば、性能爆発になるでしょうね。もちろん、そのような可能性が実行されればの話ですが。
 
Vitalie Postolache:
まあ、8〜16個のCPUコアだけでなく、数千個のCPUコアが最適化に使われれば、性能爆発になるでしょうね。もちろん、そのような可能性が実現されればの話ですが。
レナートは以前から、MT5のテスターではOpenCLが動作するが、クラウドではなくローカルマシン上でのみ動作すると言っていました。だから今からでも使ってください。
 

美しい!!!

チャート上に直接ライブニュースを表示したり、独自のチャンネルで分析やトレーニング(ウェビナー)を行うなど、後々の活用法も考えていました。

開発者 よくやった。