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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 为什么两个品种数据量是不一样的?

   

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


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

主题:为什么两个品种数据量是不一样的?

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2018/3/15 17:13:57
  发帖心情 Post By:2018/7/13 10:50:48 [显示全部帖子]

附加一个问题,股指期货的程序化交易,平仓之后立即开仓,平仓返还的保证金是否是立即可以用于开仓,中间是否有时间差?如果有,怎样通过程序解决??

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2018/3/15 17:13:57
  发帖心情 Post By:2018/7/13 11:11:12 [显示全部帖子]

就是开仓和平仓的信号,在策略里总是有不一致


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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2018/3/15 17:13:57
  发帖心情 Post By:2018/7/13 11:36:56 [显示全部帖子]

这两个问题都存在,一个是两台电脑不一致,这个问题我继续测试;

另外一个是同一台电脑中,回测给出的结果,平仓后反向开仓时,开仓的信号,两腿之间会出现不一致,当然,金字塔的回测是假设为两个品种的独立回测,但是当开平仓条件都一致的情况下,也不应该出现不一致才对

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2018/3/15 17:13:57
  发帖心情 Post By:2018/7/13 11:39:45 [显示全部帖子]

再附加一个问题,回测时候,thisclose这个函数说明的是按照收盘价来交易,在实际的程序化交易时,他说处于图标交易时按照实际最优交易价格操作,这个是什么意思?我怎么能保证实际的交易也是按照周期的收盘时间点和收盘价来成交呢?

辛苦大神们了,谢谢!

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2018/3/15 17:13:57
  发帖心情 Post By:2018/7/13 14:20:41 [显示全部帖子]

同一台电脑中,回测给出的结果,平仓后反向开仓时,开仓的信号,两腿之间会出现不一致,当然,金字塔的回测是假设为两个品种的独立回测,但是当开平仓条件都一致的情况下,也不应该出现不一致才对
IF STRCMP(STKLABEL,'IH00') = 0  THEN BEGIN     //判定合约
   BUY(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=0,X,THISCLOSE);   //IH开多
   BUY(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=1 AND TYPE(1)=4,X,THISCLOSE);//日内反向开多

IF STRCMP(STKLABEL,'IC00') = 0 THEN BEGIN
 BUYSHORT(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T and TOTALDAYTRADE=0,Y,THISCLOSE); //IC开空
   BUYSHORT(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T and TOTALDAYTRADE=1 AND TYPE(1)=2,Y,THISCLOSE);//

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2018/3/15 17:13:57
  发帖心情 Post By:2018/7/13 15:48:20 [显示全部帖子]

//举例,交易明细里,在2018年5月29日出现了一次9:52分平了两腿,9点52分 一个开了仓,而到了10:31分才第二腿开仓
IH1:= "ih00$close";//收盘价
IH2:=CALLSTOCK('ih00',VTCLOSE,6,-1);//昨收
IH3:=IH1-IH2;  
DIFF1:=ROUNDS(IH3/IH2*100,2),COLORWHITE,LINETHICK0; //涨跌幅

IC1:= "ic00$close";
IC2:=CALLSTOCK('ic00',VTCLOSE,6,-1);//昨收
IC3:=IC1-IC2;//涨跌
DIFF2:=ROUNDS(IC3/IC2*100,2),COLORWHITE,LINETHICK0;//涨跌幅

DIFF:DIFF1-DIFF2,LINETHICK0;//指数差

T:=2;X:=3;Y:=2;M1:=0.5;N1:=-0.5;M2:=0.5;N2:=-0.5;//开盘分钟,IH手数,IC手数

KD:=DIFF>=M1;  //开多条件
KK:=DIFF<=N1;   //开空条件

PD1:=HHV(DIFF,TODAYBAR)-DIFF>=0.5 AND DIFF<=0.5;    //平多条件
PD2:=DIFF<=-0.5;  //第二个平多条件

PK1:=LLV(DIFF,TODAYBAR)-DIFF<=-0.5 AND DIFF>=-0.5;    //平空条件
PK2:=DIFF>=0.5;  //第二个平空条件

PC:=DIFF-REF(DIFF,ENTERBARS);

IF STRCMP(STKLABEL,'IH00') = 0  THEN BEGIN     //判定合约
   BUY(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=0,X,THISCLOSE);   //IH开多
   BUY(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=1 AND TYPE(1)=4,X,THISCLOSE);//日内反向开多
   SELL(PD1 AND DAYHOLDING>0 AND OPENMINUTES(TIME)>T,X,THISCLOSE); //平多条件1
   SELL(PD2 AND OPENMINUTES(TIME)>T AND HOLDING<>0,X,THISCLOSE);  //平多条件2
   SELL(PC<=-1.5 AND OPENMINUTES(TIME)>T,0,MARKETR);  //平多条件3
   BUYSHORT(KK AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=0,X,THISCLOSE); //IH开空
   BUYSHORT(KK AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=1 AND TYPE(1)=2,X,THISCLOSE);  //日内反向开空
   SELLSHORT(PK1 AND DAYHOLDING<0 AND OPENMINUTES(TIME)>T AND HOLDING<>0,X,THISCLOSE);  //平空条件1
   SELLSHORT(PK2 AND OPENMINUTES(TIME)>T AND HOLDING<>0,X,THISCLOSE);  //平空条件2
   SELLSHORT(PC>=1.5 AND OPENMINUTES(TIME)>T,0,MARKETR);  //平空条件3
END;

IF STRCMP(STKLABEL,'IC00') = 0 THEN BEGIN
   BUY(KK AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=0,Y,THISCLOSE);   //IC开多
   BUY(KK AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=1 AND TYPE(1)=4,Y,THISCLOSE);
   SELL(PK1 AND DAYHOLDING>0 AND OPENMINUTES(TIME)>T AND HOLDING<>0,Y,THISCLOSE);
   SELL(PK2 AND OPENMINUTES(TIME)>T AND HOLDING<>0,Y,THISCLOSE);
   SELL(PC>=1.5 AND OPENMINUTES(TIME)>T,0,MARKETR);
   BUYSHORT(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T and TOTALDAYTRADE=0,Y,THISCLOSE); //IC开空
   BUYSHORT(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T and TOTALDAYTRADE=1 AND TYPE(1)=2,Y,THISCLOSE);//
   SELLSHORT(PD1 AND DAYHOLDING<0 AND OPENMINUTES(TIME)>T,Y,THISCLOSE);
   SELLSHORT(PD2 AND OPENMINUTES(TIME)>T AND HOLDING<>0,Y,THISCLOSE);
   SELLSHORT(PC<=-1.5 AND OPENMINUTES(TIME)>T,0,MARKETR);
END;


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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2018/3/15 17:13:57
  发帖心情 Post By:2018/7/13 17:37:03 [显示全部帖子]


IF STRCMP(STKLABEL,'IH00') = 0  THEN BEGIN     //判定合约

   BUY(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=0,X,THISCLOSE);   //IH开多
   BUY(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=1 AND TYPE(1)=4,X,THISCLOSE);//日内反向开多
   SELL(PD1 AND DAYHOLDING>0 AND OPENMINUTES(TIME)>T,X,THISCLOSE); //平多条件1
   SELL(PD2 AND OPENMINUTES(TIME)>T AND HOLDING<>0,X,THISCLOSE);  //平多条件2
   SELL(PC<=-1.5 AND OPENMINUTES(TIME)>T,0,MARKETR);  //平多条件3
   BUYSHORT(KK AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=0,X,THISCLOSE); //IH开空
   BUYSHORT(KK AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=1 AND TYPE(1)=2,X,THISCLOSE);  //日内反向开空
   SELLSHORT(PK1 AND DAYHOLDING<0 AND OPENMINUTES(TIME)>T AND HOLDING<>0,X,THISCLOSE);  //平空条件1
   SELLSHORT(PK2 AND OPENMINUTES(TIME)>T AND HOLDING<>0,X,THISCLOSE);  //平空条件2
   SELLSHORT(PC>=1.5 AND OPENMINUTES(TIME)>T,0,MARKETR);  //平空条件3
END;

IF STRCMP(STKLABEL,'IC00') = 0 THEN BEGIN

   BUYSHORT(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T and TOTALDAYTRADE=0,Y,THISCLOSE); //IC开空
   BUYSHORT(KD AND HOLDING=0 AND OPENMINUTES(TIME)>T and TOTALDAYTRADE=1 AND TYPE(1)=2,Y,THISCLOSE);//
   SELLSHORT(PD1 AND DAYHOLDING<0 AND OPENMINUTES(TIME)>T,Y,THISCLOSE);
   SELLSHORT(PD2 AND OPENMINUTES(TIME)>T AND HOLDING<>0,Y,THISCLOSE);
   SELLSHORT(PC<=-1.5 AND OPENMINUTES(TIME)>T,0,MARKETR);
   BUY(KK AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=0,Y,THISCLOSE);   //IC开多
   BUY(KK AND HOLDING=0 AND OPENMINUTES(TIME)>T AND TOTALDAYTRADE=1 AND TYPE(1)=4,Y,THISCLOSE);
   SELL(PK1 AND DAYHOLDING>0 AND OPENMINUTES(TIME)>T AND HOLDING<>0,Y,THISCLOSE);
   SELL(PK2 AND OPENMINUTES(TIME)>T AND HOLDING<>0,Y,THISCLOSE);
   SELL(PC>=1.5 AND OPENMINUTES(TIME)>T,0,MARKETR);
END;

受您说的启发,这个顺序确实有影响,您给的结论是对的,我另一个办法,改为两腿正常对应顺序,也就是IH开多,IC开空,这样IH腿里开多平多开空平空,IC腿里开空平空开多平多,果然回测的交易不再出现单腿,

我们深入探讨一下,这个是因为封装的函数内部的底层代码是不是受了编写顺序的影响?以后应该怎样避免这样的问题?




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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2018/3/15 17:13:57
  发帖心情 Post By:2018/7/13 17:38:58 [显示全部帖子]

还有一个问题,关于复权,如果用指数做信号指标,我认为应该使用复权数据比较好,而交易时用的标的是股指期货,那么应该在回测内怎样设置?是可以直接设置,还是需要直接下载数据时候,选择复权的指数数据,和不复权的期指数据?

谢谢大神!

 回到顶部