2

我正在使用在 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)
4

2 回答 2

6

在这两个中,绝对值(CB-1BA)是正确的,因为两个读数之间的变化为 0.5。

编辑:为了使它更具可读性,并假设你得到双值,你会做这样的事情,但有错误检查,并且可能使 .25 成为变量。

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

if (currentBar > oneBarAgo && Math.Abs(currentBar - oneBarAgo) > .25)
{
    // do something
}
于 2009-05-27T15:16:02.293 回答
2

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

顺便说一句,如果您不是开发人员,您真的认为您应该编写 C# 代码来交易期货合约吗?他们有足够的风险在最好的时候进行交易,不要介意当你编写代码来做这件事而你不是开发人员时!!!!

于 2009-05-27T15:18:07.843 回答