以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  过滤连续信号  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=167944)

--  作者:zcl
--  发布时间:2019/1/25 1:39:06
--  过滤连续信号
过滤连续信号,用了FILTER(KD,10)不起作用,不知为什么
--  作者:FireScript
--  发布时间:2019/1/25 9:07:06
--  
 KD这个不是完整开仓条件把。
或者说可能是存在KD满足,但不开仓的某种情况,比如说还要满足holding=0。

--  作者:zcl
--  发布时间:2019/1/25 23:54:58
--  
没有别的条件,KD就是一个上穿条件
--  作者:zcl
--  发布时间:2019/1/26 14:01:57
--  
试了把下面的加入到系统自带的指标也不行。比如均线交易系统。
FILTER(kd2 ,20);
FILTER(kk ,10 );

--  作者:FireScript
--  发布时间:2019/1/28 9:12:39
--  
 你完整代码怎么写的呢?我看下你代码吧。这个函数的效果我是试过的,是可用的。
--  作者:zcl
--  发布时间:2019/1/28 15:05:13
--  
可我在金字塔软件里的均线系统加上该句也不起作用。在均线系统里试最简单的了,也不会有其他错误的干扰,如果用其他的自编指标还怀疑是编写错误
--  作者:FireScript
--  发布时间:2019/1/28 15:22:53
--  
 提供你的代码我直接看下你的操作方式。
--  作者:zcl
--  发布时间:2019/1/29 10:48:20
--  
m:14;ss:1;

TR1 := SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),M);
HD := HIGH-REF(HIGH,1);
LD := REF(LOW,1)-LOW;
PDM:= SUM(IF(HD>0 AND HD>LD,HD,0),M);
MDM:= SUM(IF(LD>0 AND LD>HD,LD,0),M);
PDI:= PDM*100/TR1;
MDI:= MDM*100/TR1;
手数:=ss;

//交易条件
开多平空条件:=CROSS(PDI,MDI);//开多平空条件
开空平多条件:=CROSS(MDI,PDI);//开空平多条件

//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
//FILTER(CROSS(PDI,MDI) ,20);
//FILTER(CROSS(MDI,PDI) ,10 );
//注意交易系统先开后平的原则



--  作者:zcl
--  发布时间:2019/1/29 10:51:33
--  
测试加了FILTER(CROSS(PDI,MDI) ,20);//FILTER(CROSS(MDI,PDI) ,10 );与不加该句结果一样
--  作者:FireScript
--  发布时间:2019/1/29 11:05:46
--  
FILTER本身对信号根本不会有影响的,你必须加到条件里面去才行。如下:

 平空:SELLSHORT(开多平空条件 and FILTER(开多平空条件,20),手数,MARKET);
平多:SELL(开空平多条件 and FILTER(开空平多条件,10 ),手数,MARKET);
开多:BUY(开多平空条件 and and FILTER(开多平空条件,20),手数,MARKET);
开空:BUYSHORT(开空平多条件 and FILTER(开空平多条件,10 ),手数,MARKET);