以下是你可以在MetaTrader 5中直接使用OpenCL而不需要任何DLLs的情况 - 页 11 1...456789101112131415161718 新评论 [删除] 2017.04.15 00:37 #101 fxsaber:显然,algotrader的编程目标就是你所说的这样的东西--所有的交易逻辑都在几行中。在这个例子中,为了让信号显示出积极的趋势,整个自动交易的目标实际上只包含在一条线上这与秩序逻辑无关,但对TS的结果有决定性作用。"完全一样的线 "是在任何有能力的专家顾问。而这是由algotraders编写的。 那么它在实际交易中显示了什么呢?你的心情不好。当然,问题(如果有的话)在于一些与实际工作有关的、无法解释的小事(一些跳跃性的ping,数据包丢失,或网络中的电压波动,由于这些原因,roba出现了问题。顺便说一下,这也是我的主题,我正在慢慢地建造一个机器人。 Konstantin 2017.04.15 03:50 #102 Alexey Oreshkin: 为什么? 我根本就没有为机器人做过gui,我不认为有必要在上面浪费时间。我也不明白你如何能直观地分析统计套利策略))。所有的分析都只是计算数据,但在调试阶段有足够的日志可供分析。例如,这样的数据被用于策略的调试 阶段,但其可视化不会告诉我们任何东西。 附加的文件: test_Cointegration.zip 2823 kb [删除] 2017.04.15 04:06 #103 fxsaber:显然,algotrader的编程目标就是你所说的这样的东西--所有的交易逻辑都在几行中。在这个例子中,为了让信号显示出积极的趋势,整个自动交易的目标实际上只包含在一条线上这与秩序逻辑无关,但对TS的结果有决定性作用。"完全一样的线 "是在任何有能力的专家顾问。而这是由algotraders编写的。 蜱虫只适合用于剥头皮。他们甚至不能相信封闭式算法的短期策略,因为一半的头寸会被卡在平盘中,因为没有技术分析,无法正确入场。你将随机进入,结果将是适当的。正如有识之士告诉我的那样,刻度线对策略测试很有帮助,而且它们使我的股票工作更加有效。 但什么样的刻度线条目可能是--只是为了剥头皮,比如进场-出场和5-10镑的利润。这是纯粹的迭代,没有任何信息。 再一次,你知道他们过去的状态,但你永远不会知道他们未来的状态。这就是外汇的本质。 在你的专家顾问上附加几个指标,它们会分析图表,并以超过0.5的概率确定价格进一步移动的矢量,而不是这种可视化的废话。) Vladimir Karputov 2017.04.15 13:46 #104 与本主题无关的评论已被移至"GUI概念"。 Stanislav Dray 2017.04.15 13:47 #105 我再次来到这个话题,想知道在没有任何DLL的情况下,可以 在 MetaTrader 5终端 中直接使用OpenCL做什么。我必须要读狗屁的喧嚣......拜托,如果你对这个问题没有什么可写的,就不要写...... Marat Sultanov 2017.04.18 21:49 #106 非常奇怪。 看起来正是终端的内存泄漏。我写了一个脚本来演示它。我想确保我没有遗漏任何东西,而且这真的是一个错误。//+------------------------------------------------------------------+ //| OpenCL_MemoryLeak.mq5 | //| Copyright 2017, Progid | //| http://www.mql5.com/en/users/progid/ | //| 18.04.2017 | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, Progid" #property link "http://www.mql5.com/en/users/progid/" #property version "1.00" //+------------------------------------------------------------------+ //| define //+------------------------------------------------------------------+ #ifndef _Error_ #define _Error_(info) { Print("Error: ",info," line: "+(string)__LINE__+" file: "+__FILE__+" function: "+__FUNCTION__+"; GetLastError: "+(string)GetLastError()); } #endif #ifndef _ErrorDefault_ #define _ErrorDefault_(info,r) { _Error_(info) r; } #endif #define _RAM_Print_ Print("RAM used: Program(",MQLInfoInteger(MQL_MEMORY_USED)," MB) Terminal(",TerminalInfoInteger(TERMINAL_MEMORY_USED)," MB)"); //+------------------------------------------------------------------+ //| resource //+------------------------------------------------------------------+ //#resource "Gpu_Code_0.cl" as string _CL_GpuCode_0 string _CL_GpuCode_0 = "" "__kernel void GPU_Test (global int * buf_0," " global int * buf_1," " global int * buf_r," " " " local int * l_buf_1)" "{" " const int id = get_global_id(0);" " " " buf_r[id] = 0;" " " " l_buf_1[id] = buf_0[id] * buf_1[id];" " " " buf_r[id] = l_buf_1[id];" "}"; //+------------------------------------------------------------------+ //| include //+------------------------------------------------------------------+ #include <OpenCL\OpenCL.mqh> //+------------------------------------------------------------------+ //| global var //+------------------------------------------------------------------+ COpenCL _OpenCL; const int _Size = 5000; int _Buf_0[]; int _Buf_1[]; int _Buf_r[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart() { if (ArrayResize(_Buf_0, _Size) != _Size) _ErrorDefault_("", return) if (ArrayResize(_Buf_1, _Size) != _Size) _ErrorDefault_("", return) if (ArrayResize(_Buf_r, _Size) != _Size) _ErrorDefault_("", return) for (int i=0; i<_Size; ++i) { _Buf_0[i] = i; _Buf_1[i] = i; } if (!GPU_Init()) _ErrorDefault_("", return) while(!_StopFlag) { if (!GPU_Test()) _ErrorDefault_("", break) } _OpenCL.Shutdown(); Print("Completed!"); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool GPU_Init() { #define _gpu_error_ _OpenCL.Shutdown(); return false //---init if (!_OpenCL.Initialize(_CL_GpuCode_0, true)) _ErrorDefault_("", _gpu_error_) //---kernels if (!_OpenCL.SetKernelsCount(1)) _ErrorDefault_("", _gpu_error_) if (!_OpenCL.KernelCreate(0, "GPU_Test")) _ErrorDefault_("", _gpu_error_) //---buffers if (!_OpenCL.SetBuffersCount(3)) _ErrorDefault_("", _gpu_error_) //buf_0 if (!_OpenCL.BufferCreate(0, _Size*sizeof(int), CL_MEM_READ_ONLY)) _ErrorDefault_("", _gpu_error_) //buf_1 if (!_OpenCL.BufferCreate(1, _Size*sizeof(int), CL_MEM_READ_ONLY)) _ErrorDefault_("", _gpu_error_) //buf_r if (!_OpenCL.BufferCreate(2, _Size*sizeof(int), CL_MEM_WRITE_ONLY)) _ErrorDefault_("", _gpu_error_) //---args if (!_OpenCL.SetArgumentBuffer(0, 0, 0)) _ErrorDefault_("", _gpu_error_) if (!_OpenCL.SetArgumentBuffer(0, 1, 1)) _ErrorDefault_("", _gpu_error_) if (!_OpenCL.SetArgumentBuffer(0, 2, 2)) _ErrorDefault_("", _gpu_error_) if (!_OpenCL.SetArgumentLocalMemory(0, 3, _Size*sizeof(int))) _ErrorDefault_("", _gpu_error_) //---write to GPU if (!_OpenCL.BufferWrite(0, _Buf_0, 0, 0, _Size)) _ErrorDefault_("", return false) if (!_OpenCL.BufferWrite(1, _Buf_1, 0, 0, _Size)) _ErrorDefault_("", return false) //--- #undef _gpu_error_ return true; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool GPU_Test() { for (int c=0; c<100; ++c) { //---Execute uint GlobalWorkOffset[1] = {0}; uint GlobalWorkSize[1] = {0}; GlobalWorkSize[0] = _Size; if(!_OpenCL.Execute(0, 1, GlobalWorkOffset, GlobalWorkSize)) _ErrorDefault_("", return false) if(!_OpenCL.BufferRead(2, _Buf_r, 0, 0, _Size)) _ErrorDefault_("", return false) } //---RAM int RAM_Used = TerminalInfoInteger(TERMINAL_MEMORY_USED); if (RAM_Used > 3024) _ErrorDefault_("RAM used: "+(string)RAM_Used+" > 3024 MB", return false) static ulong LastMSC = 0; if (GetMicrosecondCount() - LastMSC >= 3000000) { _RAM_Print_ LastMSC = GetMicrosecondCount(); } //--- return true; }内存正在泄漏,相当明显。每分钟一百MB。由于MQLInfoInteger(MQL_MEMORY_USED) 将其排除在外,所以程序中的泄漏被排除。这真的是一个错误,我应该去找服务台吗?脚本在日志中打印出程序本身和终端所消耗的RAM数量。 Konstantin 2017.04.19 02:29 #107 Marat Sultanov:非常奇怪。 看起来正是终端的内存泄漏。我写了一个脚本来演示它。我想确保我没有遗漏任何东西,而且这真的是一个错误。内存正在泄漏,相当明显。每分钟一百MB。由于MQLInfoInteger(MQL_MEMORY_USED) 将其排除在外,所以程序中的泄漏被排除。这真的是一个bug吗,值得去找servicedesk吗? 请以后在这里公布有关这一问题的研究结果,以便我们知道狗被埋在哪里 )) Marat Sultanov 2017.04.19 11:55 #108 难道没有人在实际任务中使用OpenCL吗?:)Konstantin: 请在这里公布你对这个问题的研究结果,以便你知道狗被埋在哪里 ))好的。对不起,你是否像我一样,因为这个问题而卡住了,或者你只是想知道一般的发展? Igor Volodin 2017.04.19 12:15 #109 Marat Sultanov:难道没有人在实际任务中使用OpenCL吗?:) 我有,但我还没来得及看你的例子 Marat Sultanov 2017.04.19 13:04 #110 Igor Volodin: 我有,但我还没来得及看你的例子很好。该脚本在日志中打印出程序本身和终端所消耗的RAM量。如果你运行这个脚本,你会立即在日志中看到终端消耗了多少MB的RAM。你在你的程序中使用密集计算吗? 1...456789101112131415161718 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
显然,algotrader的编程目标就是你所说的这样的东西--所有的交易逻辑都在几行中。
在这个例子中,为了让信号显示出积极的趋势,整个自动交易的目标实际上只包含在一条线上
这与秩序逻辑无关,但对TS的结果有决定性作用。
"完全一样的线 "是在任何有能力的专家顾问。而这是由algotraders编写的。
那么它在实际交易中显示了什么呢?你的心情不好。当然,问题(如果有的话)在于一些与实际工作有关的、无法解释的小事(一些跳跃性的ping,数据包丢失,或网络中的电压波动,由于这些原因,roba出现了问题。顺便说一下,这也是我的主题,我正在慢慢地建造一个机器人。
为什么?
我根本就没有为机器人做过gui,我不认为有必要在上面浪费时间。
我也不明白你如何能直观地分析统计套利策略))。所有的分析都只是计算数据,但在调试阶段有足够的日志可供分析。例如,这样的数据被用于策略的调试 阶段,但其可视化不会告诉我们任何东西。
显然,algotrader的编程目标就是你所说的这样的东西--所有的交易逻辑都在几行中。
在这个例子中,为了让信号显示出积极的趋势,整个自动交易的目标实际上只包含在一条线上
这与秩序逻辑无关,但对TS的结果有决定性作用。
"完全一样的线 "是在任何有能力的专家顾问。而这是由algotraders编写的。
蜱虫只适合用于剥头皮。他们甚至不能相信封闭式算法的短期策略,因为一半的头寸会被卡在平盘中,因为没有技术分析,无法正确入场。你将随机进入,结果将是适当的。正如有识之士告诉我的那样,刻度线对策略测试很有帮助,而且它们使我的股票工作更加有效。 但什么样的刻度线条目可能是--只是为了剥头皮,比如进场-出场和5-10镑的利润。这是纯粹的迭代,没有任何信息。 再一次,你知道他们过去的状态,但你永远不会知道他们未来的状态。这就是外汇的本质。 在你的专家顾问上附加几个指标,它们会分析图表,并以超过0.5的概率确定价格进一步移动的矢量,而不是这种可视化的废话。)
我再次来到这个话题,想知道在没有任何DLL的情况下,可以 在 MetaTrader 5终端 中直接使用OpenCL做什么。
我必须要读狗屁的喧嚣......拜托,如果你对这个问题没有什么可写的,就不要写......
非常奇怪。
看起来正是终端的内存泄漏。
我写了一个脚本来演示它。我想确保我没有遗漏任何东西,而且这真的是一个错误。
内存正在泄漏,相当明显。每分钟一百MB。
由于MQLInfoInteger(MQL_MEMORY_USED) 将其排除在外,所以程序中的泄漏被排除。
这真的是一个错误,我应该去找服务台吗?
脚本在日志中打印出程序本身和终端所消耗的RAM数量。
非常奇怪。
看起来正是终端的内存泄漏。
我写了一个脚本来演示它。我想确保我没有遗漏任何东西,而且这真的是一个错误。
内存正在泄漏,相当明显。每分钟一百MB。
由于MQLInfoInteger(MQL_MEMORY_USED) 将其排除在外,所以程序中的泄漏被排除。
这真的是一个bug吗,值得去找servicedesk吗?
请以后在这里公布有关这一问题的研究结果,以便我们知道狗被埋在哪里 ))
难道没有人在实际任务中使用OpenCL吗?:)
请在这里公布你对这个问题的研究结果,以便你知道狗被埋在哪里 ))
好的。对不起,你是否像我一样,因为这个问题而卡住了,或者你只是想知道一般的发展?
难道没有人在实际任务中使用OpenCL吗?:)
我有,但我还没来得及看你的例子
我有,但我还没来得及看你的例子
很好。该脚本在日志中打印出程序本身和终端所消耗的RAM量。如果你运行这个脚本,你会立即在日志中看到终端消耗了多少MB的RAM。
你在你的程序中使用密集计算吗?