设置的进场条件,执行错乱
请教各位大侠我设置的进场条件是,今天的开盘价大于昨天的收盘价,在复盘时发现,有相当一部分单子是错的,语句和复盘截图如下,请教错在哪里,如何纠正
在运行到开仓第二根K线时,k_Bstop和k_BS就又初始化了,不是你设定的Open+-200了。可以改用全局变量来保存这两个值,也可以用序列变量延续。 k_Bstop和k_BS,设置的都是全局变量,问题是没有按照open>closed(1)这个条件执行 从复盘截图中,右边的方框内可以看出,今天的开盘价明显低于昨天的收盘价,并不符合open>closed(1), 条件上没看到有什么问题,要么你用Commentary函数输出一下开仓K线时的Open和CloseD(1),看看现实什么数值。 好的,我试一下 Yuen_Lee你好,我不会使用超级图标,但是从“数据窗口”中可以找到每天的开盘价、收盘价等数据,open>close(1)这个条件,与“数据窗口”中的数据显示不吻合, 找到结症了。CloseD()为序列函数,不能放在If()语句中。按下面格式改一下就可以了。
Numeric prevclose;
prevclose = CloseD(1);
If(MarketPosition == 0 && Open > prevclose)
{
...
} 谢谢,另外,移动平均线也是序列函数,在使用时,会不会也存在同样的问题
NumericSeries ma5;//5日平均线
ma5 = AverageFC(close,5);
if(ma5>ma5)//5日均线倾斜向上
{
……
}
ma5>ma5这个条件,这样用是不是也存在问题 本帖最后由 Yuen_Lee 于 2021-5-7 11:43 编辑
ma5是序列变量,不是函数,所以这种用法没有问题。只是不能把AverageFC()放在If()语句中,因为AverageFC()函数中含有序列变量。总之,含有序列变量的函数不能放在条件语句中,但序列变量是可以的。
页:
[1]
2