以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  连续合约对应的合约代码可以查到么?  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=56846)

--  作者:qq代人发帖
--  发布时间:2013/9/22 15:18:44
--  我有策略,哪位可以帮忙编写
请问,连续合约对应的合约代码可以查到么?例如STKLABEL对应的是什么?

--  作者:yukizzc
--  发布时间:2013/9/22 15:32:17
--  

您需要自己代码中把当前品种所有月份的成交量写出来,然后用连续的去和每一个做比较。

STKINDI(\'IF00\',\'vol.VOLUME\',0,1)

类似这个是取得if00的1分钟的成交量,其他依次类推。

 


--  作者:lichenghu
--  发布时间:2013/9/22 15:32:23
--  
  成交量做下对比,然后返回下品种代码
--  作者:学习交易
--  发布时间:2013/9/22 16:11:44
--  

那图表程序就不可以用了,只能用在后台了?


--  作者:学习交易
--  发布时间:2013/9/22 16:12:51
--  
其实只要象STKLABEL那样登记一下连续合约对应的主力合约代码,那我们就省事多了.
--  作者:lichenghu
--  发布时间:2013/9/22 16:17:23
--  
 图表也是可以用的
--  作者:学习交易
--  发布时间:2013/9/23 12:33:56
--  

合约代码:=EXTGBDATA(代码);
合约头:=STRLEFT(STKLABEL,2);
tVOL:=STKINDI(合约代码,\'vol.VOLUME\',0,1);
IF tVOL<>VOL AND CYC=1 THEN BEGIN //如果成交量不同代表换主力合约了,找新的主力合约代码
   tVOL:=STKINDI(STRCAT(合约头,\'01\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'01\');
   tVOL:=STKINDI(STRCAT(合约头,\'02\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'02\');
   tVOL:=STKINDI(STRCAT(合约头,\'03\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'03\');  
   tVOL:=STKINDI(STRCAT(合约头,\'04\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'04\');
   tVOL:=STKINDI(STRCAT(合约头,\'05\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'05\');
   tVOL:=STKINDI(STRCAT(合约头,\'06\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'06\');
   tVOL:=STKINDI(STRCAT(合约头,\'07\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'07\');
   tVOL:=STKINDI(STRCAT(合约头,\'08\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'08\');
   tVOL:=STKINDI(STRCAT(合约头,\'09\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'09\');  
   tVOL:=STKINDI(STRCAT(合约头,\'10\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'10\');
   tVOL:=STKINDI(STRCAT(合约头,\'11\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'11\');     
   tVOL:=STKINDI(STRCAT(合约头,\'12\'),\'vol.VOLUME\',0,1);
   if tVOL=VOL THEN 合约代码:=STRCAT(合约头,\'12\');
   EXTGBDATASET(代码,合约代码);
END

 

这段代码有什么错误么?

怎么不行,请看看.谢谢!!


--  作者:学习交易
--  发布时间:2013/9/23 12:34:39
--  

另外,请教一下在IF 里面可以用STKINI函数么?

因为以前用过好象有错的.


--  作者:lichenghu
--  发布时间:2013/9/23 13:38:13
--  

VOL0:STKINDI(STRCAT(STRLEFT(STKLABEL,2),\'00\'),\'vol.VOLUME\',0,6);
VOL1:STKINDI(STRCAT(STRLEFT(STKLABEL,2),\'01\'),\'vol.VOLUME\',0,6);
VOL2:STKINDI(STRCAT(STRLEFT(STKLABEL,2),\'02\'),\'vol.VOLUME\',0,6);
VOL3:STKINDI(STRCAT(STRLEFT(STKLABEL,2),\'03\'),\'vol.VOLUME\',0,6);
IF VOL0=VOL1 THEN EXTGBSTRINGSET(\'合约代码\',STRCAT(STRLEFT(STKLABEL,2),\'01\'));
IF VOL0=VOL2 THEN EXTGBSTRINGSET(\'合约代码\',STRCAT(STRLEFT(STKLABEL,2),\'02\'));
IF VOL0=VOL3 THEN EXTGBSTRINGSET(\'合约代码\',STRCAT(STRLEFT(STKLABEL,2),\'03\'));
DRAWTEXT( 1,H ,EXTGBSTRING(\'合约代码\'))

 

理解下把