vdm666 发表于 2021-5-5 17:47:44

设置的进场条件,执行错乱

请教各位大侠

我设置的进场条件是,今天的开盘价大于昨天的收盘价,在复盘时发现,有相当一部分单子是错的,语句和复盘截图如下,请教错在哪里,如何纠正


Yuen_Lee 发表于 2021-5-6 08:01:50

在运行到开仓第二根K线时,k_Bstop和k_BS就又初始化了,不是你设定的Open+-200了。可以改用全局变量来保存这两个值,也可以用序列变量延续。

vdm666 发表于 2021-5-6 12:40:45

k_Bstop和k_BS,设置的都是全局变量,问题是没有按照open>closed(1)这个条件执行

vdm666 发表于 2021-5-6 12:44:09

从复盘截图中,右边的方框内可以看出,今天的开盘价明显低于昨天的收盘价,并不符合open>closed(1),

Yuen_Lee 发表于 2021-5-6 13:25:07

条件上没看到有什么问题,要么你用Commentary函数输出一下开仓K线时的Open和CloseD(1),看看现实什么数值。

vdm666 发表于 2021-5-6 17:25:32

好的,我试一下

vdm666 发表于 2021-5-6 20:29:49

Yuen_Lee你好,我不会使用超级图标,但是从“数据窗口”中可以找到每天的开盘价、收盘价等数据,open>close(1)这个条件,与“数据窗口”中的数据显示不吻合,

Yuen_Lee 发表于 2021-5-7 08:36:01

找到结症了。CloseD()为序列函数,不能放在If()语句中。按下面格式改一下就可以了。
Numeric  prevclose;

prevclose = CloseD(1);
If(MarketPosition == 0 && Open > prevclose)
{
   ...
}

vdm666 发表于 2021-5-7 10:55:23

谢谢,另外,移动平均线也是序列函数,在使用时,会不会也存在同样的问题
NumericSeries ma5;//5日平均线


ma5 = AverageFC(close,5);

if(ma5>ma5)//5日均线倾斜向上
{
……
}

ma5>ma5这个条件,这样用是不是也存在问题

Yuen_Lee 发表于 2021-5-7 11:40:27

本帖最后由 Yuen_Lee 于 2021-5-7 11:43 编辑

ma5是序列变量,不是函数,所以这种用法没有问题。只是不能把AverageFC()放在If()语句中,因为AverageFC()函数中含有序列变量。总之,含有序列变量的函数不能放在条件语句中,但序列变量是可以的。
页: [1] 2
查看完整版本: 设置的进场条件,执行错乱