下载MetaTrader 5
要添加评论,请登录注册
您想要编写技术指标吗?在MQL5 参考中找出解决方案!
skaghi
18
skaghi 2011.03.24 17:33 

=(Close[i]-Close[i+1])/MathAbs(Close[i+1]-Close[i+2]); 只能得到十几个值

=(Close[i]-Close[i+1])/(Close[i+1]-Close[i+2]); 也一样

为什么无法正常运算得到更多值?

正确的式子应该怎么写?

请高手赐教

okwh
1629
okwh 2011.03.25 11:25  

可能除0.

试试:

MathAbs(Close[i+1]-Close[i+2]); 改为 (MathAbs(Close[i+1]-Close[i+2])+Point);

JUN HU
209
JUN HU 2011.03.25 11:51  

你是要计算斜率吗?这样计算就不对了,(Close[i]-Close[i+1])/MathAbs(Close[i+1]-Close[i+2])是个变量,不固定的,不知道你这个式子要表达什么意思,所以我也不好给你更好的建议。

skaghi
18
skaghi 2011.03.25 16:11  
DxdCn:

可能除0.

试试:

MathAbs(Close[i+1]-Close[i+2]); 改为 (MathAbs(Close[i+1]-Close[i+2])+Point);


"+Point"起什么作用呢?(如果问得小白了请见谅 我基础薄弱)

另外,好像没有起作用,出现'+Point' - variable not defined”的错误。 是要现在前面定义么,还是怎样?

skaghi
18
skaghi 2011.03.25 16:26  
h137j:

你是要计算斜率吗?这样计算就不对了,(Close[i]-Close[i+1])/MathAbs(Close[i+1]-Close[i+2])是个变量,不固定的,不知道你这个式子要表达什么意思,所以我也不好给你更好的建议。


目标是想得到目标柱的价格变动大小(分正负)与前一柱的价格变动大小(取绝对值)的比,以此来突出初始突破柱。

我试出除号后只有一个"Close[x]"时正常,有一个以上时就出问题,这是引起了什么样的逻辑错误?

skaghi
18
skaghi 2011.03.25 16:29  
谢谢两位的关注和帮助! 麻烦大家帮我把这个问题彻底解决!
skaghi
18
skaghi 2011.03.25 16:45  
DxdCn:

可能除0.

试试:

MathAbs(Close[i+1]-Close[i+2]); 改为 (MathAbs(Close[i+1]-Close[i+2])+Point);

哇 成功了! 谢谢你!

之前的错误是因为直接复制的你的回复中的"+"是全角字符。
可以给我讲讲其中的道理么! 为什么加Point就好了?

okwh
1629
okwh 2011.03.27 10:40  

如果Close[i+1] = Close[i+2], MathAbs(Close[i+1]-Close[i+2]) 就等于0, 那么除0就引起程序出错!

Point是当前货币一个点(pip)的值, 这样保证价格变动绝对大小最小是point,  就可以保证不再有碰到价格不变时的除0错。

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