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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 合约基差

   

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


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

主题:合约基差

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/12/16 14:50:22    Post IP:58.246.57.26[显示全部帖子]

 求不到的。还是和之前那个问题一样,只知道除权位置的,但是没有函数获取对应的具体合约是多少。

最多是很简单的获取上一个月份的合约的价格。但是有些品种,很可能好久才换一次。这样就没办法。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/12/16 15:02:35    Post IP:58.246.57.26[显示全部帖子]

啥意思?你自己把指标加载到上次主力合约(自行判断的)上 然后调用现在的主力合约做价差的计算?


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/12/16 15:12:31    Post IP:58.246.57.26[显示全部帖子]

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'));



JC:c-CALLSTOCK(STR00,vtCLOSE,-1,0),LINETHICK1,COLORWHITE;//当前加载的合约之间用C取收盘价;主力用CALLSTOCK函数调用,被调用的周期直接指定到当前加载的周期


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/12/16 16:59:13    Post IP:58.246.57.26[显示全部帖子]

 1.可以。但是具体什么品种,只能你自己指定。而且这样的代码没办法做到通用,你换了个品种,你代码都必须重新写一次,感觉还是挺麻烦的。

2.用参数的话,也是可以。可以利用参数拼接处月份合约,然后调用。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/12/16 17:13:01    Post IP:58.246.57.26[显示全部帖子]

 INPUT:M(1,0,12,1);//月份参数

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
//注意 不支持原油合约。因为原油合约的代码规则不一样,不能直接拼接出来。如果你需要的话我再想办法处理。
Mcode:STRCAT(STR ,STRRIGHT(NUMTOSTR(M/100,2),2) );//拼接品种名称+月份 生产品种代码。

JC:c-CALLSTOCK(Mcode,vtCLOSE,-1,0);//Mcode 是你指定月份的当前品种的合约。不支持对原油品种的处理。





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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/12/17 10:06:12    Post IP:58.246.57.26[显示全部帖子]

 “比如:如果上述参数:M=1的话,而加载的品种为豆粕,则用“豆粕2101”或“豆粕01“,或者“JC2101”或“JC01”作为变量名称,这样直观点

这种不行的。变量名本身无法进一步自定义了。


你直接在左侧输出下代码名称吧。加一句
DRAWTEXTEX(ISLASTBAR,0 ,0 ,0 ,Mcode);



命数如织,当如磐石。
 回到顶部