以下是你可以在MetaTrader 5中直接使用OpenCL而不需要任何DLLs的情况 - 页 16

 

我将检查演绎情况。

没有双重数学,在我们的领域就没有什么可做的。在2020年更应如此。

在OpenCL的早期,人们仍然可以寻找妥协,并被 "好吧,你可以用浮点运算 "的概念所欺骗,而今天却不是这样。

任何转换双数->英数->双数的尝试都会完全扼杀性能和利润,特别是在大尺寸上。

正确的选择是使用原生格式和带有新驱动程序的更现代的卡。

 

支持就在那里。

OpenCL device name: GeForce GTX 1050 Ti with Max-Q Design
OpenCL device ext: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64
                   cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_d3d10_sharing
                   cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_copy_opts cl_nv_create_buffer cl_khr_int64_base_atomics cl_khr_int64_extended_atomics


OpenCL device name: Intel(R) UHD Graphics 630
OpenCL device ext: cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_local_int32_base_atomics 
                   cl_khr_local_int32_extended_atomics cl_intel_subgroups cl_intel_required_subgroup_size cl_intel_subgroups_short cl_khr_spir cl_intel_accelerator 
                   cl_intel_driver_diagnostics cl_khr_priority_hints cl_khr_throttle_hints cl_khr_create_command_queue cl_intel_subgroups_char cl_intel_subgroups_long
                   cl_khr_fp64 cl_khr_subgroups cl_khr_il_progr
 
我不会争论IT业的现代货币化模式。购买一个新的硬件,比使用优化算法的效率高25%,不会导致全球变暖 :)

我们将把OpenCL和MT5的话题推迟到以后,当家庭预算中有一些购买台式电脑的闲钱时再谈。

我想请你帮个忙,雷纳特。在MQL5手册中(OpenCL部分)增加一个免责声明,说在图形卡/图形协处理器中使用双倍数据和计算之前,你必须确定这些设备支持它们。这样,MQL5的新手就不会对旧硬件产生任何幻想。

谢谢你的时间。
 
aim-1:

对你雷纳特的请求。请在MQL5手册(OpenCL部分)中增加一个免责声明,说明在图形卡/图形协处理器中使用双重数据和计算之前,你应该验证这些设备是否支持。这样,MQL5的新手就不会对旧硬件抱有任何幻想。

这已经写在自动地图测试中了,而且不能选择:在最新的版本中完成了

OpenCL  test compilation failed with error: use of type 'double' requires cl_khr_fp64 extension to be enabled 

可以说,对于没有双重支持的旧地图,它们对于数学计算是绝对无用的。

这就是现实。

 
Renat Fatkhullin:

这已经写在自动地图测试中了,而且不能选择:在最新的版本中完成了

我对MetaQuotes非常尊重。非常好的平台是由你开发和维护的。

如果你想跟踪声誉,Disclamer(系统要求)是合乎逻辑的。因为天真的初学者(像我一样:)会因为一个有趣的功能而感到兴奋,在启动MT5时失败了,可能会对一个新的平台冷静下来,因为他们得到的印象是在使用它时可能会有其他失败。例如,需要了解标准库中 的OOP,等等。

顺便说一下,如果有一个没有OOP的简单交易专家顾问的模板,那将是非常有用的(最好是直接在MT5网站上),这样即使是MQL4的婴儿也能很快适应MQL5,同时完全控制代码。从这个意义上说,一个新的MQL5教程(最好更短--不重复旧的)将是一个好主意。然后,交易社区(进步的主要引擎/阻止者)会更快地爬到一个新的平台。

再次感谢您的辛勤工作。
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
aim-1 : 我尊重MetaQuotes。非常好的平台是由你们开发和支持的。

如果你想监督你的声誉,免责声明(系统要求)是合乎逻辑的。因为天真的新手(像我一样:)在MT5推出时被网络上有趣的功能所吸引,并被打破,可以对新平台冷却很长一段时间,因为在使用它时,似乎有可能出现其他破绽。例如,需要了解 标准库中 的OOP 等等。

顺便说一下,有了OOP,最好能正式列出(最好是在MT5网站页面上)一个没有OOP的简单交易专家顾问的模板,这样即使是MQL4的婴儿也能迅速参与到MQL5中,同时完全控制代码的工作。从这个意义上说,一本关于MQL5的新教科书(最好是更短的--不重复旧的水)不会有什么问题。然后,交易社区(进步的主要引擎/阻止者)将更快地爬到新平台。

再次感谢您的辛勤工作。

一些例子与MQL5软件包一起出现。完全是面向程序的编程。我不确定MQL4的情况

 
不清楚
//test.mqh
void f( int ii )
{
        for ( int i = -ii; i <= ii; i++ )
        {
                int j = CLContextCreate( i );
                if ( j != -1 )
                {
                        CLContextFree( j );
                        Print( ii, ":", i, ":", j );
                }
        }
}
#include "test.mqh"
void OnStart() { f( 32765 ); }
结果。
32765:0:2147352576
32765:1:2147418112

而如果

#include "test.mqh"
void OnStart() { f( 32766 ); }

结果。

32766:0:2147418112

为什么一种情况下有一个输出(线),而另一种情况下有两个?

 
A100:
不清楚 结果。

而如果

结果。

为什么一种情况下有一个输出(行),而另一种情况下有两个输出?

谢谢你的信息。
固定的。

由于经常过度使用句柄,超过SHORT_MAX 次数,导致OpenCL句柄溢出。

 
显然,他们大幅度地解决了这个问题,现在它也不工作了
void OnStart()
{
        if ( CLContextCreate( 0 ) == -1 ) Print( GetLastError() ); //5114

}

而一周前它还工作得很好。如果不支持double,也不使用,为什么要禁用OpenCL?

 

是的,决定完全不使用没有双重支持的旧卡。

总的来说,旧卡非常糟糕,包括坏的未修复的驱动程序,经常崩溃,掉落终端。

现实情况是,你应该已经明确控制了驱动的版本,就像PC游戏的开发者那样。微软的默认驱动程序不会让你走得太远。