我想用sfilter过滤交易信号,但系统依然重复下单,不知是哪里的问题。语句如下
cond:=sfilter(cond_a,cond_b);
buy(cond,vol,marketr);
我用shift-Q逐条K线反复检查了cond的值,它只出现了1次1值,后面的值都是0,也就是说它是起到了过滤作用的。但奇怪的是buy指令执行了不止1次。
于是我把buy语句换成以下
variable: a=0;
if cond then a:=a+1;
然后再检查a值,它的确是大于1. 说明这不是下单的问题,而是cond值为1至少多于1次。这是怎么回事?
1,
variable: a=0;
if cond then a:=a+1;
//这种检测是不对的,因为A的值这样就是从历史一直反复累加,必然比1大
2,你是否采用固定轮询模式,看下是不是cond_b这个条件反复变化呢?
另外buy执行的是否是不同根K线
逐一反馈如下:
1、我有在日初把a重置为零的
a:=if(todaybar=1,0,a);
2、我有用固定轮询模式,但我看了cond_a和cond_b都是交易当天以前的数据,不会变的,我画了线,它们是条直线。后面会上图。
为了确认自己没数错cond值为1的次数,我添加了
count(cond=1,10),nodraw;
结果是一样的,cond值为1的次数只发生了1次,而a值却是2(a值是cond值为1时的自动累加变量)。
前后只有5根k线,数量不多,我分别截图了。请见图。

此主题相关图片如下:k线0.png


此主题相关图片如下:k线1.png


此主题相关图片如下:k线2.png

补充,图中字段sfilter_equal_one就是count(cond=1,10)的结果,以上5根k线是连续的。
补充,图中那两条平行线就是cond_a和cond_b的值。
具体代码方便提供下么?我这边瞅瞅,或者提供个简单反馈问题的
没问题的,麻烦您给我个q号,我一会儿就给您发过去。
QQ:2857926939
[此贴子已经被作者于2015/2/27 10:51:50编辑过]
已找到问题了,跟sfilter没关系,是另一个地方触发了。谢谢各位。