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


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

   

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


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

主题:关于主力合约问题

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


加好友 发短信
等级:新手上路 帖子:71 积分:0 威望:0 精华:0 注册:2015/4/20 8:53:07
关于主力合约问题  发帖心情 Post By:2015/5/18 16:06:38    Post IP:27.154.22.183[只看该作者]

如果想程序化交易商品,编写策略时一般会取连续合约进行测试,但是问题产生了:一旦商品进入换月,那么测试数据就会失真。


本人的想法是这样:连续合约的日期跟主力合约一致的,将符合范围的时间值标记输出;

比如,当前主力合约为1505时,将主力合约的这个时间(假设为150205开始,到150403结束,就将这两个时间值取出来,而且这两个时间戳理论上是和连续合约吻合的)

在150205到150403这段时间的主力合约数据和连续合约的数据理论是吻合的(比如成交量,最高价,最低价等等)


最好能够将数据生成外部文件格式存放。


万能的版主啊,请教您,如何实现这个想法?希望给予帮助啊。不胜感激。



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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/5/18 16:22:04    Post IP:58.246.57.26[只看该作者]

处理中,请稍等


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/5/18 16:24:47    Post IP:58.246.57.26[只看该作者]

runmode:0;
aa:=strleft(stklabel,2);
nn:=aa+'00';


if vol=callstock(nn,vtvol,datatype) then nn1:date+19000000;
debugfile2('d:\test.txt','当前为主力合约日期: %.0f',nn1,0);

文档在d盘的test文档



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:新手上路 帖子:71 积分:0 威望:0 精华:0 注册:2015/4/20 8:53:07
  发帖心情 Post By:2015/5/18 16:42:46    Post IP:27.154.22.183[只看该作者]

我在MA09下执行这段代码,输出结果为:
当前主力合约日期: 20150414
当前主力合约日期: 20150415
当前主力合约日期: 20150416
当前主力合约日期: 20150417
当前主力合约日期: 20150420
当前主力合约日期: 20150421
当前主力合约日期: 20150422
当前主力合约日期: 20150423
当前主力合约日期: 20150424
当前主力合约日期: 20150427
当前主力合约日期: 20150428
当前主力合约日期: 20150429
当前主力合约日期: 20150430
当前主力合约日期: 20150504
当前主力合约日期: 20150505
当前主力合约日期: 20150506
当前主力合约日期: 20150507
当前主力合约日期: 20150508
当前主力合约日期: 20150511
当前主力合约日期: 20150512
当前主力合约日期: 20150513
当前主力合约日期: 20150514
当前主力合约日期: 20150515
当前主力合约日期: 20150518

如何利用函数读取外部生成的test.txt文件,将时间信息读入金字塔自编函数;
时间开始和结束这两个值,20150414(VAR1)和20150518(VAR2),存在两个变量中VAR1和VAR2;
entertime := data>=VAR1 and data<=VAR2

大概就只这个意图。谢谢版主



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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/5/18 16:50:02    Post IP:58.246.57.26[只看该作者]

runmode:0;
aa:=strleft(stklabel,2);
nn:=aa+'00';
nn1:=0;
drawtext(islastbar,close,aa);
drawtext(islastbar,close,nn);


if vol=callstock(nn,vtvol,datatype) then nn1:=date+19000000;

if nn1<>0 then debugfile2('d:\test.txt','当前为主力合约日期: %.0f',nn1,0);

 

entertime:=nn1>0;



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:新手上路 帖子:71 积分:0 威望:0 精华:0 注册:2015/4/20 8:53:07
  发帖心情 Post By:2015/5/18 17:16:58    Post IP:27.154.22.183[只看该作者]

版主给出的代码真是个好东西。但是还是不符合我的想法,我的表达有问题,重新说明如下:

在连续合约页面下,自动判断连续合约和主力合约的时间戳;
1、自动寻找1501主力合约时间:将这个起始点和终点时间取出;
2、1502...直到1512;

也许需要做成外部数据文件,每个品种去做成一个数据表格。

这些时间构成断断续续的二维数组;

当执行主力合约换月的时候,连续合约上面必须强制平仓,等待新的信号出现,才出现开仓信号(以吻合换月后的新合约)。那么在连续合约上,就必须要有这些时间戳来匹配。否则执行换月的时候,价格可能会有跳空情况出现,导致测试数据失真。

这个时间戳就是为了过滤这个换月过程带来的数据异常情况。

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/5/18 17:20:48    Post IP:58.246.57.26[只看该作者]

你的要求实现不了,

之前的代码可以实现判断当前合约是不是主力合约,再多的就没有了



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:新手上路 帖子:71 积分:0 威望:0 精华:0 注册:2015/4/20 8:53:07
关于主力合约问题  发帖心情 Post By:2015/5/21 8:26:16    Post IP:27.154.22.84[只看该作者]

版主你好:

品种比如是I00,和TA00,显然公式得修改:
aa:=strleft(stklabel,2);
nn:=aa+'00';

能否加个判断,优化下,当前品种为一个字母的,自动取aa:=strleft(stklabel,1); 当品种为2个字母的,自动取aa:=strleft(stklabel,2);
[此贴子已经被作者于2015/5/21 8:26:46编辑过]

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


加好友 发短信
等级:新手上路 帖子:71 积分:0 威望:0 精华:0 注册:2015/4/20 8:53:07
关于主力合约问题  发帖心情 Post By:2015/5/21 9:07:13    Post IP:27.154.22.84[只看该作者]

版主你好:

品种比如是I00,和TA00,显然公式得修改:
aa:=strleft(stklabel,2);
nn:=aa+'00';

能否加个判断,优化下,当前品种为一个字母的,自动取aa:=strleft(stklabel,1); 当品种为2个字母的,自动取aa:=strleft(stklabel,2);

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/5/21 9:21:19    Post IP:58.246.57.26[只看该作者]

这个判断不了是不是字母,如果合约是1个字母的,那就自行把aa:=strleft(stklabel,2);修改为aa:=strleft(stklabel,1);


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
总数 14 1 2 下一页