Ninjatrader根据条件绘制点

时间:2016-06-03 12:48:16

标签: c#

我是NinjaTrader编码的新手。我试图根据条件为真在条形下画一个点。

如果我的条件尽可能简单,就像这样:

if (Close[0] < Open[0]) 

- 我可以正确显示点。

但是,如果我尝试引用之前的栏,就像这样:

if (Close[0] < Open[1]) 

- 代码不起作用。所以,我认为这是条件本身,我错了。

有人可以解释为什么这种改变会阻止代码工作,以及我如何正确引用以前的代码?

任何帮助表示感谢。

这是代码的其余部分。

protected override void OnBarUpdate()
    {

        {   

            //if (Close[0] < Open[0]) 
            if (Close[1] > Open[1])
            //if(Close[1] < Close[0] && Close[1] < Close[2])

                { 
                    myBarCloses=1;
                } else {
                    myBarCloses=0;
                }

                if (myBarCloses==1) 
                {
                    DrawDot(CurrentBar.ToString() +"BarCloseDot",true, 0, Low[0]*0.997, Color.Magenta);
                }

        }      

    }

2 个答案:

答案 0 :(得分:3)

如果其他人需要此信息,则需要检查您正在访问的数据系列中是否有足够的条形码。

我不知道是否允许发布外部链接,所以我认为不是。 Google搜索应该找到信息。

我必须修改下面的代码。

protected override void OnBarUpdate()
{
    if (CurrentBar < 1)
        return;

    if (Close[0] < Open[1])
        // etc
}

答案 1 :(得分:0)

对于这些情况,您可以仅使用Strategy Builder创建代码。我做到了,这就是我得到的:

    if (BarsInProgress != 0) 
        return;

    if (CurrentBars[0] < 1)
        return;

     // Set 1
    if (Close[1] > Open[1])
    {
        Draw.Dot(this, @"Temp01 Dot_1", false, 0, 3, Brushes.CornflowerBlue);
    }

此方法的优势在于,您始终可以获得有效的代码。