如何在C#中找到2个值之间的差异?

时间:2009-05-27 15:12:35

标签: c# absolute-value

我正在使用一个在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

我想简单地计算振荡器从一个时间帧移动到另一个时间帧之间的差异。我是否正在考虑使用正确的逻辑?

这是我的实际代码,请假设我调用的方法是正确的:

if (Oscillator(PoFast, PoSlow, PoSmooth)[0] > 
           Oscillator(PoFast, PoSlow, PoSmooth)[3]
    && Math.Abs(Oscillator(PoFast, PoSlow, PoSmooth)[0] - 
           Oscillator(PoFast, PoSlow, PoSmooth)[3]) > .25)

2 个答案:

答案 0 :(得分:6)

在这两个中,Abs(CB-1BA)是正确的,因为两个读数之间的变化为.5。

编辑:为了使其更具可读性,并假设您获得了双倍值,您可以执行类似的操作,但需要进行错误检查,并且可能使.25成为变量。< / p>

double[] values = Oscillator(PoFast, PoSlow, PoSmooth);
double currentBar = values[0];
double oneBarAgo = values[3];

if (currentBar > oneBarAgo && Math.Abs(currentBar - oneBarAgo) > .25)
{
    // do something
}

答案 1 :(得分:2)

你的逻辑,Abs(CB-1BA)是正确的。

顺便说一句,如果你不是开发人员,你真的认为你应该编写C#代码来交易期货合约吗?它们有足够的风险在最好的时候进行交易,没关系,当你编写代码时,你不是开发人员!!!!