以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  不懂sfilter的执行结果  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=75926)

--  作者:a141027
--  发布时间:2015/2/26 23:10:19
--  不懂sfilter的执行结果
我想用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次。这是怎么回事?

--  作者:FexTel
--  发布时间:2015/2/27 9:07:14
--  
1,
variable: a=0;
if cond then a:=a+1;

  //这种检测是不对的,因为A的值这样就是从历史一直反复累加,必然比1大

 

2,你是否采用固定轮询模式,看下是不是cond_b这个条件反复变化呢?

 另外buy执行的是否是不同根K线


--  作者:a141027
--  发布时间:2015/2/27 10:12:06
--  
逐一反馈如下:

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
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:k线3.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:k线4.png
图片点击可在新窗口打开查看


--  作者:a141027
--  发布时间:2015/2/27 10:18:20
--  
补充,图中字段sfilter_equal_one就是count(cond=1,10)的结果,以上5根k线是连续的。
--  作者:a141027
--  发布时间:2015/2/27 10:19:25
--  
补充,图中那两条平行线就是cond_a和cond_b的值。
--  作者:FexTel
--  发布时间:2015/2/27 10:22:06
--  
 具体代码方便提供下么?我这边瞅瞅,或者提供个简单反馈问题的
--  作者:a141027
--  发布时间:2015/2/27 10:31:30
--  
没问题的,麻烦您给我个q号,我一会儿就给您发过去。
--  作者:yukizzc
--  发布时间:2015/2/27 10:51:44
--  

QQ:2857926939

 

[此贴子已经被作者于2015/2/27 10:51:50编辑过]

--  作者:a141027
--  发布时间:2015/2/27 11:37:18
--  
已找到问题了,跟sfilter没关系,是另一个地方触发了。谢谢各位。