欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → HOLDING条件影响测试结果

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2609人关注过本帖树形打印复制链接

主题:HOLDING条件影响测试结果

帅哥哟,离线,有人找我吗?
server808
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:119 积分:0 威望:0 精华:0 注册:2017/9/30 17:54:43
HOLDING条件影响测试结果  发帖心情 Post By:2020/2/22 16:38:12 [只看该作者]


下方条件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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/2/22 16:57:30 [只看该作者]

没有区别。也没有对错之分。只是条件1与开平语句组合后,条件重复而已。

pk and holding<0;

等价于

CLOSE>M1 AND HOLDING<0 and  holding<0;

 

 

回测不同建议比对两次回测中的设置是否有差别。如果是两台金字塔之间比较,还要留一下数据是否一致以及合约信息设置中的信息。

 

 



编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
server808
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:119 积分:0 威望:0 精华:0 注册:2017/9/30 17:54:43
  发帖心情 Post By:2020/2/22 16:59:44 [只看该作者]

回测条件完全相同,都是在金字塔,但结果不同,麻烦您试一下

 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:119 积分:0 威望:0 精华:0 注册:2017/9/30 17:54:43
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/2/22 18:03:19 [只看该作者]

还是没有对错之分。根据你的整体代码。你应该是想做到一开一平原则。所以可以直接使用条件2.

或者你把条件1的语句位置调整也可以达到相同的目的。



编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
server808
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:119 积分:0 威望:0 精华:0 注册:2017/9/30 17:54:43
  发帖心情 Post By:2020/2/22 18:07:47 [只看该作者]

明白了这个含义,谢谢!

 回到顶部