如何查找范围的最高和最低值

时间:2020-04-28 17:15:58

标签: c#

代码正在运行,但是我想知道如何在出现“突破条”后找到范围内最后三个条的最高和最低值。

在下面的示例中,该值为2。

enter image description here

protected override void OnBarUpdate()
{
    if (CurrentBar < 3)
    {
        Value[0] = 0;
    }
    else if((High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && Low[0] < Low[1] && Low[0] < Low[2] && Close[0] > High[1]))
    {
        Value[0] = 2;           
    }
    else if ((High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && Low[0] < Low[1] && Low[0] < Low[2] && Close[0] < Low[1]))
    {
        Value[0] = -2;
    } else if ((High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && Low[0] < Low[1] && Low[0] < Low[2] && Close[0] > Close[1]))
    {
        Value[0] = 1;
    } else if ((High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && Low[0] < Low[1] && Low[0] < Low[2] && Close[0] < Close[1]))
    {
        Value[0] = -1;
    }
    else
    {
        Value[0] = 0;
    }
}

1 个答案:

答案 0 :(得分:0)

我按照@kirodge的建议使用了MAX和MIN函数,它起作用了。这是解决方案。

protected override void OnBarUpdate()
{
    {
    if (CurrentBar < 3)
    {
        Value[0] = 0;
    }
    else if((High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && Low[0] < Low[1] && Low[0] < Low[2] && Low[0] < Low[3] && Close[0] > MAX(High, 3)[1]))
    {
        Value[0] = 2;

    }
    else if ((High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && Low[0] < Low[1] && Low[0] < Low[2] && Low[0] < Low[3] && Close[0] < MIN(Low, 3)[1]))
    {
        Value[0] = -2;
    } else if ((High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && Low[0] < Low[1] && Low[0] < Low[2] && Low[0] < Low[3] && Close[0] > Open[1]))
    {
        Value[0] = 1;
    } else if ((High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && Low[0] < Low[1] && Low[0] < Low[2] && Low[0] < Low[3] && Close[0] < Open[1]))
    {
        Value[0] = -1;
    }
        else {
        Value[0] = 0;
    }
}
}