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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 能否自动指定改合约的连续合约?

   

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


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

主题:能否自动指定改合约的连续合约?

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


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
能否自动指定改合约的连续合约?  发帖心情 Post By:2020/7/15 8:15:19    Post IP:202.105.59.65[只看该作者]

我的程序必须在具体合约实施, 例如SF2009,CF2009, 但是我又想直接调用该合约的连续合约的日线的指标,也就是问能否自动指定改合约的连续合约? 例如这个程序放在SF2009 5分钟上能自动调用SF的连续合约, 放到CF2009 5分钟上又会自动调用CF的连续合约, 不需要在不同品种中修改程序, 要怎样写?  

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/7/15 8:58:31    Post IP:58.246.57.26[只看该作者]

 s:=STRREMOVE(STKLABEL,STRLEN(STKLABEL)-2,2);
lxstr:=s+'00';//连续品种代码

这样有了品种代码。你后面就可以调用连续的数据了。在跨周期调用里面指定品种代码是lxstr 就行了。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
OscarDeng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
  发帖心情 Post By:2020/7/15 18:15:49    Post IP:202.105.59.65[只看该作者]

使用你给的程序, 放在AP10 的一分钟身上, 得出s是:100001.000, lsstr:1000002.000,  并不会返回AP00 呀? 是不是你程序有错?

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


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

字符串不能直接在图表变量值输出。必须通过绘图函数或者EXPLAIN函数输出显示。

上面的代码没没有对双年份合约和原油进行处理。需要调整下。以保证逻辑的健壮性。

 

STR:=STRTRIMRIGHT( STKLABEL, '0123456789');

//双年份合约,豆一和白糖虽然取消双年份,但是金字塔为保证老用户策略的正常操作,所以保持不变。因此依旧需要区分。
if STRCMP(STR,'AY')=0 or  STRCMP(STR,'BUY')=0 OR  STRCMP(STR,'SRY') THEN BEGIN
 STR:=STRREPLACE(STR , 'Y','X' );
END
//EXPLAIN( 1, STR );

//区分处理原油和其他品种的连续代码
STR00:=IF(STRCMP(STR,'SC')=0,STRCAT(STR , '0000'),STRCAT( STR, '00'));
EXPLAIN( 1, STR00 );

[此贴子已经被作者于2020/7/16 8:29:48编辑过]


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


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
  发帖心情 Post By:2020/7/16 9:57:57    Post IP:202.105.59.65[只看该作者]

你的程序跟第一次给的程序完全不一样,   我只需要拿到一个连续合约代码, 输出值是 STR00 吗?我直接调用STR00  就可以了吗? 例如  STKINDI('str00','macd.def',0,6,-1),noaxis;

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/7/16 10:00:35    Post IP:58.246.57.26[只看该作者]

前面的方式在部分品种上会失效   以4楼的方式为准。


STR:=STRTRIMRIGHT( STKLABEL, '0123456789');

//双年份合约,豆一和白糖虽然取消双年份,但是金字塔为保证老用户策略的正常操作,所以保持不变。因此依旧需要区分。
if STRCMP(STR,'AY')=0 or  STRCMP(STR,'BUY')=0 OR  STRCMP(STR,'SRY') THEN BEGIN
 STR:=STRREPLACE(STR , 'Y','X' );
END

//区分处理原油和其他品种的连续代码
STR00:=IF(STRCMP(STR,'SC')=0,STRCAT(STR , '0000'),STRCAT( STR, '00'));



STKINDI(str00,'macd.def',0,6,-1),noaxis;
这里不用带引号。本身就是字符串变量了。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
OscarDeng
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
  发帖心情 Post By:2020/7/27 17:45:22    Post IP:116.23.134.107[只看该作者]

使用4楼的公式能成功调用跨周期的, 但是STKINDI调用后, 我发现调用后得出的数值与被调用的真实数值区别很大, 不知道什么原因? 是我写的程序有问题吗? 能否帮忙检查一下哪里出错了?  下面的语句是程序运行在主力合约例如CJ09在一分钟周期内 调用CJ00的一分钟周期成交量指标。 例如:在09合约2020年7月27日15点00分MV1 和 MV2 是222和89 , 但是连续合约查到的值15:00是 156和91;14:59是134和77. 


STR:=STRTRIMRIGHT( STKLABEL, '0123456789');
//双年份合约,豆一和白糖虽然取消双年份,但是金字塔为保证老用户策略的正常操作,所以保持不变。因此依旧需要区分。
if STRCMP(STR,'AY')=0 or  STRCMP(STR,'BUY')=0 OR  STRCMP(STR,'SRY') THEN BEGIN
 STR:=STRREPLACE(STR , 'Y','X' );
END
//EXPLAIN( 1, STR );
//区分处理原油和其他品种的连续代码
STR00:=IF(STRCMP(STR,'SC')=0,STRCAT(STR , '0000'),STRCAT( STR, '00'));
EXPLAIN( 1, STR00 );

MV1:STKINDI(STR00,'VOL1.MA1(3,100)',0,1,1);
MV2:STKINDI(STR00,'VOL1.MA2(3,100)',0,1,-1);


//被调用的成交量指标
VOLUME:VOL,VOLSTICK;
OPENINT,linethick3, coloryellow,NOAXIS;
MA1:MA(VOL,M1);
MA2:MA(VOL,M2);
//MA3:MA(VOL,M3); 


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


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

代码没问题。怀疑你在连续上看错了或者周期不对。建议你自己再核实下

[此贴子已经被作者于2020/7/27 23:45:11编辑过]


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


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
  发帖心情 Post By:2020/7/28 10:06:01    Post IP:116.23.134.107[只看该作者]

就是核实过才会 过来问的。 
 例如:在JC09合约2020年7月27日15点00分MV1 和 MV2 是222和89 , 但是连续合约查到的值15:00是 156和91;14:59是134和77. 
 例如:在JC09合约2020年7月28日10点01分MV1 和 MV2 是46和81 , 但是连续合约查到的值10:01是 156和91;14:59是59和50. 

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


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

截图看。我本地结果是正常的

 



编程无捷径,技巧靠积累。
 回到顶部
总数 13 1 2 下一页