下载MetaTrader 5
要添加评论,请登录注册
为什么要在MetaTrader应用商店出售产品?通过该文章找出答案!
gmxgmx
67
gmxgmx 2014.10.15 11:28 
mql4使用 ArrayInitialize函数为数组初始化为0,但得到的初始值为 2147483647.0!!!正常吗?
okwh
1629
okwh 2014.10.16 09:05  

怎么初始化的?

null是0, EMPTY是一1, EMPTY_VALUE是2147483647

gmxgmx
67
gmxgmx 2014.10.16 12:03  

谢谢答复! 

 

double a[];

int init()

  {

   ArrayInitialize(a,0);

 }

以上是部分语句,在调试时,单步运行,发现数组a[i]第一次出现的值就是 2147483647.0。

我想要在指标初始化时,让a[]的初始值为0, 该怎么做?

okwh
1629
okwh 2014.10.20 09:04  

猜测你的意思是使用动态数组,不是指标数组。指标数组由系统自动分配。


那么使用前 应先分配空间 如: ArrayResize(a,10); 这时一般应该已经初始化为0了。


估计你的问题其实是 没有分配空间。 没有其他代码,无法判断 a[i]第一次出现的值就是 2147483647.0。 的来源


至少应提供这样三行代码吧? ArrayResize(a,3); ArrayInitialize(a,0); Print(a[0]," ",a[1]," ",a[2]);


如果是 指标数组 在init 设置 SetIndexBuffer(0,a); 此时在init 中其实并没分配更没初始化,即使用ArrayInitialize初始化 也其实无效。


  要初始化0, 需要在 start 中进行 ArrayInitialize(a,0), 但那样的化,需要计算全部;


  mql自动的默认的初始化 2147483647.0 是在start前有系统完成的。


关键是 理解 init中到底能干什么, start中干什么

gmxgmx
67
gmxgmx 2014.10.21 12:22  

非常感谢!看来这些东西的确不是我能想到的。谢谢!

我试试看。 

/
要添加评论,请登录注册