【发布时间】:2009-05-27 15:12:34
【问题描述】:
我正在使用在 10.000000 和 -10.000000 之间波动的振荡器
值每 5 分钟更改一次。我想找出当前值与 5 分钟前的值之间的差异。这是我的逻辑。
1 bar ago (1BA)= -.2
Current bar (CB) = .3
如果我执行以下操作,我不会得到 1 的值:
Abs(CB) - Abs(1BA) = .3 - .2 = 1
鉴于:
Abs(CB- 1BA) = .3 - -.2 = 5
我想简单地计算振荡器从一个时间帧到另一个时间帧的移动之间的差异。我在应用 Abs 时是否考虑到了正确的逻辑?
这是我的实际代码,请假设我被调用的方法是正确的:
if (Oscillator(PoFast, PoSlow, PoSmooth)[0] >
Oscillator(PoFast, PoSlow, PoSmooth)[3]
&& Math.Abs(Oscillator(PoFast, PoSlow, PoSmooth)[0] -
Oscillator(PoFast, PoSlow, PoSmooth)[3]) > .25)
【问题讨论】:
-
这不是你问题的答案,但是将 Oscillator(PoFast, PoSlow, PoSmooth) 的结果存储到一个变量中,这样你就不会调用它四次,这会让你的生活更轻松。
-
您的范围值介于
-10和+10之间,因此您可以非常安全地避免使用the trickiest errors 和Math.Abs函数之一,这可能需要注意。
标签: c# absolute-value