İşte herhangi bir DLL olmadan doğrudan MetaTrader 5 terminalinde OpenCL ile yapabilecekleriniz

 

Bu, yalnızca MQL5 kodundaki GPU üzerindeki hesaplamaların değil, aynı zamanda terminalin grafik yeteneklerinin bir gösterimidir:

Bir komut dosyası biçimindeki tam kaynak kodu ektedir. OpenCL 1.2'deki hata düzeltildi.

Dosyalar:
Seascape.mq5  39 kb
 
Renat Fatkhullin :

Bu, yalnızca MQL5 kodundaki GPU üzerindeki hesaplamaların değil, aynı zamanda terminalin grafik yeteneklerinin bir gösterimidir:

Bir komut dosyası biçimindeki tam kaynak kodu ektedir.

Aaaaaaaaaa... Dur ben ineceğim!
 

Matematik ve işleme için birkaç hafta sürecek yerel bir OpenCL kitaplığı hazırlıyoruz. İnanılmaz hızlı ve güzel olacak.

Bu arada, bilimsel grafikler oluşturmak için güncellenmiş grafik kitaplığına bir göz atın.

 

Ö! Çok yakında oyunlara gelecek)))

Ama neden ticaret platformunda? Eh, hesaplamalar açık, ancak her türlü güzellik sadece baştan çıkarır.

 
Vitalie Postolache :

Ö! Çok yakında oyunlara gelecek)))

Ama neden ticaret platformunda? Eh, hesaplamalar açık, ancak her türlü güzellik sadece baştan çıkarır.

OpenCL ile matematiksel hesaplamaları yüzlerce (birkaç yüz) kez hızlandırmak için binlerce GPU çekirdeği kullanabilirsiniz.

Bu, ticarette tam olarak ihtiyacınız olan şeydir ve büyüklük sıraları daha fazla hesaplama kaynağı gerektiren yöntemleri kullanmaya geçmenize izin verecektir.

MQL4'te kürekle kazıyorlar, OpenCL ile MQL5'te ise performans açısından traktör alıyorlar. GPU hesaplamalarını geniş kitlelere ulaştırmak için mevcut olanlara ek olarak yeni matematik kütüphaneleri hazırlıyoruz.

 

geçemedi, geçti

 
Renat Fatkhullin :

Bu, yalnızca MQL5 kodundaki GPU üzerindeki hesaplamaların değil, aynı zamanda terminalin grafik yeteneklerinin bir gösterimidir:

Bir komut dosyası biçimindeki tam kaynak kodu ektedir.

Derlendi, başlatıldı.

Çalışmıyor.

MT5 yapı 1491

W7 prof SP1 tr 64-bit


 
prostotrader :

Derlendi, başlatıldı.

Terminal günlüklerine ve uzman pencerelerine bakın.

Komut dosyası karmaşıktır, sadece yazılmıştır ve henüz hata ayıklanmamıştır. GPU olmadan, her yerde başlamaz.

 
Renat Fatkhullin :

Terminal günlüklerine ve uzman pencerelerine bakın.

Komut dosyası karmaşıktır, sadece yazılmıştır ve henüz hata ayıklanmamıştır. GPU olmadan, her yerde başlamaz.

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 )
 

Tamam, çözelim. Kod, kalemin bir testi gibiydi.

Her GPU cihazının kendi derleyicisi vardır ve neyin atlanacağına o karar verir. Intel, AMD ve Nvidia'nın OpenCL derleyicileri birbirinden farklıdır.

Çok daha fazla işlevselliğe sahip olan OpenCL 2.0 altında kendimizi test ediyoruz. OpenCL 1.2'de bu testi kontrol edip düzelteceğiz.

 

Daha fazla bilgi için MetaTrader 5'teki OpenCL hakkındaki makalelerimizi okumanızı tavsiye ederim: