以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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线,数量不多,我分别截图了。请见图。
|
-- 作者: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没关系,是另一个地方触发了。谢谢各位。 |