[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 60

 
TheXpert >> :

记住了!字符串实施的一个特殊性。在数组被调整大小后,它必须被走完并清零。

我可能是错的,但它应该有帮助。

谢谢你的答复。试过了,但不幸的是,它没有帮助。在我们开始对数组做一些事情之前,归零的行为。而归零是通过对字符串VALUE的明确赋值完成的,而在我指出的案例中,数组元素被分配了函数的结果(应该返回字符串类型的VALUE),但实际上返回的是内存中字符串地址的REFERENCE,我认为这是错误的。而数值相同的结果是因为该函数被连续调用了几次,每次调用后,下一次实际上使用了相同的内存,把新数据放在那里。如果我们在调用之间做任何操作(调用任何f-ions,声明变量等),结果很可能更糟糕,即字符串数组元素的值将指向内存中的垃圾。


如果可能的话,我希望mql4的开发者能对这种情况进行评论,并解释使用字符串数组的正确方法。

 
xruss писал(а)>>
是不是出现了什么错误?

在产生开仓信号之前,会从历史上选择最后一个已关闭的订单,并将其类型分配给ORDtype变量。也就是说,如果历史不是空的,那么ORDtype显然不会等于-1。因此,信号出现的条件没有得到满足,因为

if ((ORDtype==-1)&&(...))

 
Everlost >> :

在开仓信号产生之前,会从历史上选择最后一个关闭的订单,并将其类型分配给ORDtype变量。也就是说,如果历史不是空的,那么ORDtype显然不会等于-1。因此,信号发生的条件没有得到满足,因为

if ((ORDtype==-1)&&(...))

还有一个问题--即使历史记录是空的,头寸也不会被打开(()。

 
Yug >> :

谢谢你的答复。试过了,但不幸的是,它没有帮助。在我们开始对数组做任何事情之前,归零是有效的。而归零是通过对字符串VALUE的明确赋值完成的,而在我指出的案例中,数组元素被赋值为函数的结果(应该返回字符串类型的VALUE),但实际上返回的是内存中字符串地址的REFERENCE,我认为这是不正确的。而数值相同的结果是因为该函数被连续调用了几次,每次调用后,下一次实际上使用了相同的内存,把新数据放在那里。如果你在调用之间做任何操作(任何形式的调用,变量的声明等),结果很可能更糟糕,即字符串数组元素的值将指向内存中的垃圾。


如果可能的话,我请求mql4开发者对这种情况进行评论,并解释如何正确处理字符串数组。

这样试试吧。

string tmp = func();
array[0] = tmp;

当然,是一个菜园,但它应该可以...

 

MT4在测试器中是什么意思 -优化,我在哪里打勾?这个功能是什么?它是将EA调整到一些特定的设置(标准),还是显示它在哪个时期(TF)工作得更好?

 
rafex >> :

MT4在测试器中是什么意思 -优化,我在哪里打勾?这个功能是什么?它是将EA调整到一些特定的设置(标准),还是显示它在哪个时间段(TF)工作得更好?

只有在你按下F1并仔细研究 "自动交易 "部分后,才能触及这个复选框。

 
komposter >> :

这样试试吧。

当然,是一个菜园,但它应该可以...

我在前天试过了。其结果是一样的。事实上,引用首先被复制到temp str,然后同样的引用被复制到一个数组元素:(

 
Yug >> :

我在前天试过了。其结果是一样的。事实上,引用首先被复制到临时字符串,然后同样被复制到数组元素:(

在函数中把返回字符串声明为静态,只有这样,初始化必须在声明之后进行。

 
亲爱的专家,请不要忽视我的问题。

是否有一个统计波动率的指标,比如说每天。但不是那个,它给出了一个未定义的数字,如0.34。但它应该计算出每天的烛台数,并将其除以一个给定的周期(天数),这样指标就能知道平均值。例如:开盘100,收盘200;第二天--开盘200,收盘250。这2天的平均波动率=((200-100)+(250-200))/2天=(100+50)/2=75
如果有的话在哪里下载。
 
TheXpert >> :

在函数中把返回字符串声明为静态的,但之后的初始化必须在声明之后完成。

我也试过这个变体。结果是一样的,即返回内存引用而不是值。

原因: