2016.09.12 17:21:54.851 Test (RTS-9.16,H1) array out of range in 'Test.mq5' (56,13)
2016.09.12 17:21:54.851 Test (RTS-9.16,H1) ArraySize(Buf.Buffer) = 0
2016.09.12 17:21:54.828 Test (RTS-9.16,H1) ArraySize(Buf.Buffer) = 2067
#import ...
int send(SOCKET s, void &buf[], int len, int flags);
int send(SOCKET s, void &buf, int len, int flags);
#import
现在我们必须做出丑陋的东西。
#import ...
int send(SOCKET s, char &buf[], int len, int flags);
int send(SOCKET s, int &buf, int len, int flags);
int send(SOCKET s, char &buf, int len, int flags);
int send(SOCKET s, Cpoint &buf[], int len, int flags);
...
#import
如果在后代中也能做到不公开,那就更好了。为了更好地理解。简而言之,这不是问题所在。
它必须在后代中被召唤出来。)
整个问题的关键正是在于你不必这样做。请看我的例子。
指示器缓冲区 中的错误
结果记录在案
调试器顽固地说Buf.Buffer始终是动态数组[0],I.即是一个指标性的缓冲区。但事实证明,其规模为零。
结果发现,调试器写到日志中的内容比发布版要多。发布会上没有报告这样的事情
在MT5中是否可以只设置一次指标缓冲区?如果这不是一个秘密,为什么这么复杂?当然,除了研究的兴趣之外。
而不是这样(顺便说一下,这在原则上是错误的,因为在运行过程中可能需要重新初始化,而不仅仅是在启动时)。
就像这样。
如果这不是一个秘密,为什么这么复杂?当然,除了研究的兴趣之外。
我有这样的情况:一个固定为指标缓冲区的动态数组被删除。然后你必须再次创建一个动态数组,并将其指定为一个指标缓冲区。调试器显示它已被分配。但只有其大小为零。这是一个错误。
事实证明,这个问题是老问题了。
关于交易、自动交易系统和策略测试的论坛
如何隐藏 "指标缓冲区#x已分离 "信息
Konstantin Ivanov, 2015.02.17 21:18
在我的指标中,我将数组-缓冲区存储在对象的实例中。
当在OnDeinit()中删除一个对象时,对于所有与缓冲区相连的数组都会显示一个信息(SetIndexBuffer())。
"指示器缓冲区#x被分离"
如何从缓冲区中分离出一个数组而不出现这种信息?
或者如何隐藏这个信息?
找到了该分支http://forum.mql4.com/63975,但建议的在全局范围内保存缓冲区的选项对我来说不起作用。
在全局范围内保存缓冲区的选项对我也不起作用。有趣的是,它在MT4中也能发挥作用。
文章 在MQL5中为初学者编写EA的一步步指南 有代码。
难道没有必要在三位数上进行除法吗?
文章 在MQL5中为初学者编写EA的一步步指南 有代码。
难道没有必要在三位数上进行除法吗?
现在我们必须做出丑陋的东西。
我不建议对内部内联函数使用这种方法,但对导入的函数应该是安全的。