以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- HOLDING条件影响测试结果 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=174486) |
-- 作者:server808 -- 发布时间:2020/2/22 16:38:12 -- HOLDING条件影响测试结果 下方条件1和条件2的回测结果不同,请指明原因;哪种用法才正确? 谢谢 //条件1: PD:=CLOSE<M1 AND HOLDING>0; pk:=CLOSE>M1 AND HOLDING<0; KK:=CLOSE<M1 AND HOLDING=0 KD:=CLOSE>M1 AND HOLDING=0; //条件2: PD:=CLOSE<M1 ; pk:=CLOSE>M1 ; KK:=CLOSE<M1 ; KD:=CLOSE>M1 ; 平空:sellshort(pk and holding<0 , 手数,MARKET); 平多:sell(pd and holding>0,手数,MARKET); 开多:buy( KD and holding=0, 手数,MARKET); 开空:buyshort(KK and holding=0,手数,MARKET); |
-- 作者:wenarm -- 发布时间:2020/2/22 16:57:30 -- 没有区别。也没有对错之分。只是条件1与开平语句组合后,条件重复而已。 pk and holding<0; 等价于 CLOSE>M1 AND HOLDING<0 and holding<0;
回测不同建议比对两次回测中的设置是否有差别。如果是两台金字塔之间比较,还要留一下数据是否一致以及合约信息设置中的信息。
|
-- 作者:server808 -- 发布时间:2020/2/22 16:59:44 -- 回测条件完全相同,都是在金字塔,但结果不同,麻烦您试一下 |
-- 作者:wenarm -- 发布时间:2020/2/22 17:34:55 -- 执行逻辑中holding的位置不同造成的。你可以使用条件2的方式处理。holding条件放在开平语句中。 条件1。以平空开多为例,当close>m1时,此时holding<0;那么KD条件是不成立的。 pk:=CLOSE>M1 AND HOLDING<0;//成立
KD:=CLOSE>M1 AND HOLDING=0;//不成立
而下面进行开平语句操作
平空:sellshort(pk and holding<0 , 手数,MARKET);
//平空操作完成时,holding=0,但是此前计算的KD为不成立,所以下面的的开多条件就是(0 and holding=0)也不成立,直到下根k时,前面的条件1中被更新掉holding的状态才成立。
开多:buy( KD and holding=0, 手数,MARKET);
|
-- 作者:server808 -- 发布时间:2020/2/22 18:00:24 -- 谢谢讲解,您的意思是使用下方语句是更正确的方法吗? //条件2: PD:=CLOSE<M1 ; pk:=CLOSE>M1 ; KK:=CLOSE<M1 ; KD:=CLOSE>M1 ; 平空:sellshort(pk and holding<0 , 手数,MARKET); 平多:sell(pd and holding>0,手数,MARKET); 开多:buy( KD and holding=0, 手数,MARKET); 开空:buyshort(KK and holding=0,手数,MARKET);
|
-- 作者:wenarm -- 发布时间:2020/2/22 18:03:19 -- 还是没有对错之分。根据你的整体代码。你应该是想做到一开一平原则。所以可以直接使用条件2. 或者你把条件1的语句位置调整也可以达到相同的目的。 |
-- 作者:server808 -- 发布时间:2020/2/22 18:07:47 -- 明白了这个含义,谢谢! |