错误、漏洞、问题 - 页 651 1...644645646647648649650651652653654655656657658...3184 新评论 Anatoli Kazharski 2012.02.22 17:45 #6501 mql5: 不,这不仅仅是一个32位终端的问题。但是32位终端的解决方案今天已经准备好了,而在64位终端中,仍然有256Kb的堆栈限制。 但如果程序员没有使用属性手动指定所需的堆栈大小,终端中的EX5将以默认的堆栈大小(256Kb)工作。 关于大尺寸。 函数内部的每个变量声明(静态变量除外)都会在堆栈上分配空间,而为局部变量 分配堆栈空间则发生在每次调用时。 因此,如果一个函数有64Kb的局部变量,堆栈空间足够3次调用,堆栈溢出发生在4次调用时(因为堆栈的一部分被用于终端的内部需要)。因此,如果需要大量的本地数据,最好使用动态内存--当你进入函数时,本地需要的内存在系统中被分配(new, ArrayResize),当你退出函数时,内存被删除(delete, ArrayFree)。 谢谢你的详细解释。但这绝对不是我的问题。我将尝试写一个测试专家顾问来检测这个错误,因为已经找到了腿部生长的函数,而且没有这样的卷(64Kb - 256Kb)。那我晚上会派一个专家带着问题功能去服务台。 Vladimir Gomonov 2012.02.22 18:01 #6502 还有一个关于同一函数(CLBufferWrite())的工作的问题(并要求在帮助中解释)。如果我在设置了ArrayIsSeries标志(==true)的情况下,直接从指标缓冲区 写入信息,那么输入数组将以什么方向读取?我怀疑这个标志会被忽略,此外,也不清楚会从哪个地方读到它?移位是从阵列的物理端开始计算,还是根本就从开始计算?当然,为了以防万一 ,我会吹水(我会用ArrayIsSeries==false来工作),但还是 ? Ilyas 2012.02.23 07:30 #6503 与OpenCL 缓冲区一起工作的 功能目前还不完整,将被添加到/描述中。 offset - 这些函数实际上是以字节为单位从OpenCL缓冲区开始的偏移量,传递给函数的数组将从空项复制,而不考虑ArrayIsSeries标志。 Vladimir Gomonov 2012.02.23 11:53 #6504 mql5: 1) 目前,与OpenCL缓冲区一起工作的功能还不完善,将被添加/更新。 2. offset - 这些函数实际上是一个从OpenCL缓冲区开始的字节偏移量,而传入函数的数组将从零元素开始复制,不考虑ArrayIsSeries标志。1.我有点怀疑... :) 所以,没有办法直接从部分指标缓冲区 中写入(目前)。 当然,一个好的想法是,使源头和接收方的起始位置都可以移动。像这里。 int ArrayCopy( void dst_array[], // куда копируем void src_array[], // откуда копируем int dst_start=0, // с какого индекса пишем в приемник int src_start=0, // с какого индекса копируем из источника int cnt=WHOLE_ARRAY // сколько элементов ); 对于索引(方向和单位(字节/元素)),请在帮助中更加谨慎。:)))--谢谢你的答复,我真的很感谢你为改进功能所做的努力。我将期待着耐心等待宴会的继续。在此期间,我必须在匕首的边缘跳舞。:) OpenCL:MQL5中的内部实现测试 初学者的问题 MQL4 MT4 MetaTrader OpenCL: internal implementation tests Vladimir Gomonov 2012.02.23 17:46 #6505 Build 597 x64,刚刚安装。2012.02.23 21:43:24 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. 2012.02.23 21:43:13 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. 2012.02.23 21:43:12 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. 2012.02.23 21:43:10 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. 2012.02.23 21:43:09 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. 2012.02.23 21:43:08 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. 2012.02.23 21:43:07 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. 2012.02.23 21:43:06 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.这在以前从未发生过。// Win7 x64 Renat Fatkhullin 2012.02.23 18:15 #6506 MetaDriver: Build 597 x64,刚刚安装。 以前并不是这样的。// Win7 x64。 尝试重新编译该例子。我检查过了--它对我有用。 Vladimir Gomonov 2012.02.23 19:10 #6507 Renat: 试着重新编译这个例子。我检查过了--它对我有用。我已经重新编译了一百次,我要再重启一下。 Vladimir Gomonov 2012.02.23 19:20 #6508 MetaDriver:...我要再次重启。 没有,没有任何帮助。雷纳特。 ......我检查过了--它对我有效。这对我来说也很有效,但每隔十或四十个周期我就会收到同样的垃圾。2012.02.23 23 16:44 OpenCLTest (EURUSD,M30) SaveBitmapToFile错误,打开'Mandelbrot.bmp'。 2012.02.23 23 16:16:43 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. 2012.02.23 23 16:16:42 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. 2012.02.23 23 16:16:36 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'. Renat Fatkhullin 2012.02.23 20:04 #6509 MetaDriver:没有,没有任何帮助。这对我来说也很有效,但每隔十或四十个周期,我就会收到这种垃圾。还发现。 这是因为指定的文件在两个不同的线程中处理,没有同步,偶尔文件 会被锁定。脚本线程每秒覆盖文件10次(取决于卡的速度)。图表根据脚本的要求重新加载其线程中的图片因为用图像做例子只是为了演示用OpenCL工作的原理,所以这不是一个问题。 Документация по MQL5: Файловые операции / FileMove www.mql5.com Файловые операции / FileMove - Документация по MQL5 Vladimir Gomonov 2012.02.23 20:34 #6510 Renat:由于带图的例子只是为了演示使用OpenCL的工作原理,所以这并不是一个问题。 我同意,另外,反正现在是直接向GraphLabel对象的缓冲区进行转移的时候了。:) 1...644645646647648649650651652653654655656657658...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
不,这不仅仅是一个32位终端的问题。但是32位终端的解决方案今天已经准备好了,而在64位终端中,仍然有256Kb的堆栈限制。
但如果程序员没有使用属性手动指定所需的堆栈大小,终端中的EX5将以默认的堆栈大小(256Kb)工作。
关于大尺寸。
函数内部的每个变量声明(静态变量除外)都会在堆栈上分配空间,而为局部变量 分配堆栈空间则发生在每次调用时。
因此,如果一个函数有64Kb的局部变量,堆栈空间足够3次调用,堆栈溢出发生在4次调用时(因为堆栈的一部分被用于终端的内部需要)。因此,如果需要大量的本地数据,最好使用动态内存--当你进入函数时,本地需要的内存在系统中被分配(new, ArrayResize),当你退出函数时,内存被删除(delete, ArrayFree)。
谢谢你的详细解释。但这绝对不是我的问题。我将尝试写一个测试专家顾问来检测这个错误,因为已经找到了腿部生长的函数,而且没有这样的卷(64Kb - 256Kb)。那我晚上会派一个专家带着问题功能去服务台。
还有一个关于同一函数(CLBufferWrite())的工作的问题(并要求在帮助中解释)。
如果我在设置了ArrayIsSeries标志(==true)的情况下,直接从指标缓冲区 写入信息,那么输入数组将以什么方向读取?
我怀疑这个标志会被忽略,此外,也不清楚会从哪个地方读到它?移位是从阵列的物理端开始计算,还是根本就从开始计算?
当然,为了以防万一 ,我会吹水(我会用ArrayIsSeries==false来工作),但还是 ?
offset - 这些函数实际上是以字节为单位从OpenCL缓冲区开始的偏移量,传递给函数的数组将从空项复制,而不考虑ArrayIsSeries标志。
1) 目前,与OpenCL缓冲区一起工作的功能还不完善,将被添加/更新。
2. offset - 这些函数实际上是一个从OpenCL缓冲区开始的字节偏移量,而传入函数的数组将从零元素开始复制,不考虑ArrayIsSeries标志。
1.我有点怀疑... :)
所以,没有办法直接从部分指标缓冲区 中写入(目前)。
当然,一个好的想法是,使源头和接收方的起始位置都可以移动。像这里。
int ArrayCopy(
void dst_array[], // куда копируем
void src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
对于索引(方向和单位(字节/元素)),请在帮助中更加谨慎。:)))
--
谢谢你的答复,我真的很感谢你为改进功能所做的努力。
我将期待着耐心等待宴会的继续。在此期间,我必须在匕首的边缘跳舞。:)
Build 597 x64,刚刚安装。
2012.02.23 21:43:24 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:13 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:12 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:10 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:09 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:08 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:07 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:06 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
这在以前从未发生过。
// Win7 x64
Build 597 x64,刚刚安装。
以前并不是这样的。// Win7 x64。
试着重新编译这个例子。我检查过了--它对我有用。
我已经重新编译了一百次,我要再重启一下。
...我要再次重启。
没有,没有任何帮助。
雷纳特。
......我检查过了--它对我有效。
这对我来说也很有效,但每隔十或四十个周期我就会收到同样的垃圾。
2012.02.23 23 16:16:43 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 23 16:16:42 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 23 16:16:36 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
没有,没有任何帮助。
这对我来说也很有效,但每隔十或四十个周期,我就会收到这种垃圾。
还发现。
这是因为指定的文件在两个不同的线程中处理,没有同步,偶尔文件 会被锁定。
因为用图像做例子只是为了演示用OpenCL工作的原理,所以这不是一个问题。
由于带图的例子只是为了演示使用OpenCL的工作原理,所以这并不是一个问题。