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

 

MQL5コードのGPU計算だけでなく、ターミナルのグラフィカルな機能のデモも行っています。

スクリプトとしてのソースコード全文を添付します。OpenCL 1.2での不具合は修正されました。

ファイル:
Seascape.mq5  39 kb
 
Renat Fatkhullin:

MQL5コードのGPU計算だけでなく、ターミナルのグラフィカルな機能のデモも行っています。

スクリプトとしてのフルソースコードを添付します。

降りないでくれ!
 

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

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

 

О!もうすぐゲームになる ))))

トレーディング・プラットフォームに求められるものまあ、計算上は理解できるし、いろいろと美しいものだけに誘惑される。

 
Vitalie Postolache:

О!もうすぐゲームになる ))))

トレーディング・プラットフォームに求められるものまあ、計算がはっきりしているので、いろいろな美しいものが誘惑してくるだけなのですが。

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

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

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

 

通過することができず、通り過ぎてしまった

 
Renat Fatkhullin:

MQL5コードのGPU計算だけでなく、ターミナルのグラフィカルな機能のデモも行っています。

スクリプトとしてのソースコード全文を添付します。

コンパイルして、実行した。

動作しない。

MT5ビルド1491。

W7 prof SP1 eng 64bit


 
prostotrader:

それをコンパイルして、起動した。

ターミナルとエキスパートウィンドウのログを見る。

スクリプトは複雑で、書いたばかりで、まだデバッグしていない。GPUがなければどこでも動くわけではありません。

 
Renat Fatkhullin:

ターミナルとエキスパートウィンドウのログを見る。

スクリプトは複雑で、書いたばかりで、まだデバッグしていない。GPUがなければどこでも動くわけではありません。

2016.12.10 03:57:08.180 Seascape (GOLD-12.16,H1)        OpenCL: GPU device 'GeForce GTX 970' selected
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        <kernel>:188:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)           uint b=(uint)(res[2]*255);
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        <kernel>:189:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)           uint g=(uint)(res[1]*255);
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        <kernel>:190:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)           uint r=(uint)(res[0]*255);
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        
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

2016.12.10 03:57:06.729 OpenCL  Device #0: GPU NVIDIA Corporation GeForce GTX 970 with OpenCL 1.2 (13 units, 1367 MHz, 4096 Mb, version 372.90)
 

よし、なんとかなるさ。ペンのテストのようなコードでした。

GPUデバイスはそれぞれコンパイラを持っていて、何を飛ばすかを決めています。Intel、AMD、NvidiaのOpenCLコンパイラはそれぞれ異なるものです。

現在、より高機能なOpenCL 2.0でテストを行っています。OpenCL 1.2 でこのテストを確認し、修正する予定です。

理由: