以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  赞成按实时持仓量加权计算指数合约的请举手  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=13423)

--  作者:小布丁
--  发布时间:2012/8/2 14:04:16
--  赞成按实时持仓量加权计算指数合约的请举手
赞成按实时持仓量加权计算指数合约的请举手,谢谢!
--  作者:董小球
--  发布时间:2012/8/2 14:06:00
--  
想法是不错的,但是技术实现上可能会存在问题,所以目前还实现不了!
--  作者:小布丁
--  发布时间:2012/8/2 14:08:30
--  

别的软件都做到了,没理由金字塔做不到,同意的哥们把帖子顶上~


--  作者:小布丁
--  发布时间:2012/8/3 14:28:51
--  

没人支持我,好伤心!

以下我自己写的根据实时的持仓量来计算豆粕指数合约的代码,可能存在不足的地方,望高手们加以改进:

 

//引用当前所在K线周期豆粕所有合约的实时持仓量
MVol1:=STKINDI(\'M01\',\'CCL\',0,DATATYPE,0);
MVol3:=STKINDI(\'M03\',\'CCL\',0,DATATYPE,0);
MVol5:=STKINDI(\'M05\',\'CCL\',0,DATATYPE,0);
MVol7:=STKINDI(\'M07\',\'CCL\',0,DATATYPE,0);
MVol8:=STKINDI(\'M08\',\'CCL\',0,DATATYPE,0);
MVol9:=STKINDI(\'M09\',\'CCL\',0,DATATYPE,0);
MVol11:=STKINDI(\'M11\',\'CCL\',0,DATATYPE,0);
MVol12:=STKINDI(\'M12\',\'CCL\',0,DATATYPE,0);


//对各合约持仓量求和,得到豆粕品种总的持仓量
MVol88:=MVol1+MVol3+MVol5+MVol7+MVol8+MVol9+MVol11+MVol12;

 

//计算各豆粕合约的权重
权重1:=MVol1/MVol88;
权重3:=MVol3/MVol88;
权重5:=MVol5/MVol88;
权重7:=MVol7/MVol88;
权重8:=MVol8/MVol88;
权重9:=MVol9/MVol88;
权重11:=MVol11/MVol88;
权重12:=MVol12/MVol88;

 

//引用当前所在K线周期各豆粕合约的收盘价
MClose1:=CALLSTOCK(\'M01\',VTCLOSE,-1);
MClose3:=CALLSTOCK(\'M03\',VTCLOSE,-1);
MClose5:=CALLSTOCK(\'M05\',VTCLOSE,-1);
MClose7:=CALLSTOCK(\'M07\',VTCLOSE,-1);
MClose8:=CALLSTOCK(\'M08\',VTCLOSE,-1);
MClose9:=CALLSTOCK(\'M09\',VTCLOSE,-1);
MClose11:=CALLSTOCK(\'M11\',VTCLOSE,-1);
MClose12:=CALLSTOCK(\'M12\',VTCLOSE,-1);


//根据权重计算指数收盘价
MClose88:=权重1*MClose1+权重3*MClose3+权重5*MClose5+权重7*MClose7+权重8*MClose8+权重9*MClose9+权重11*MClose11+权重12*MClose12;

 

//引用当前所在K线周期各豆粕合约的开盘价
MOpen1:=CALLSTOCK(\'M01\',VTOPEN,-1);
MOpen3:=CALLSTOCK(\'M03\',VTOPEN,-1);
MOpen5:=CALLSTOCK(\'M05\',VTOPEN,-1);
MOpen7:=CALLSTOCK(\'M07\',VTOPEN,-1);
MOpen8:=CALLSTOCK(\'M08\',VTOPEN,-1);
MOpen9:=CALLSTOCK(\'M09\',VTOPEN,-1);
MOpen11:=CALLSTOCK(\'M11\',VTOPEN,-1);
MOpen12:=CALLSTOCK(\'M12\',VTOPEN,-1);


//根据权重计算指数开盘价
MOpen88:=权重1*MOpen1+权重3*MOpen3+权重5*MOpen5+权重7*MOpen7+权重8*MOpen8+权重9*MOpen9+权重11*MOpen11+权重12*MOpen12;

 

//引用当前所在K线周期各豆粕合约的最高价
MHigh1:=CALLSTOCK(\'M01\',VTHIGH,-1);
MHigh3:=CALLSTOCK(\'M03\',VTHIGH,-1);
MHigh5:=CALLSTOCK(\'M05\',VTHIGH,-1);
MHigh7:=CALLSTOCK(\'M07\',VTHIGH,-1);
MHigh8:=CALLSTOCK(\'M08\',VTHIGH,-1);
MHigh9:=CALLSTOCK(\'M09\',VTHIGH,-1);
MHigh11:=CALLSTOCK(\'M11\',VTHIGH,-1);
MHigh12:=CALLSTOCK(\'M12\',VTHIGH,-1);


//根据权重计算指数最高价
MHigh88:=权重1*MHigh1+权重3*MHigh3+权重5*MHigh5+权重7*MHigh7+权重8*MHigh8+权重9*MHigh9+权重11*MHigh11+权重12*MHigh12;

 

//引用当前所在K线周期各豆粕合约的最低价
MLow1:=CALLSTOCK(\'M01\',VTLOW,-1);
MLow3:=CALLSTOCK(\'M03\',VTLOW,-1);
MLow5:=CALLSTOCK(\'M05\',VTLOW,-1);
MLow7:=CALLSTOCK(\'M07\',VTLOW,-1);
MLow8:=CALLSTOCK(\'M08\',VTLOW,-1);
MLow9:=CALLSTOCK(\'M09\',VTLOW,-1);
MLow11:=CALLSTOCK(\'M11\',VTLOW,-1);
MLow12:=CALLSTOCK(\'M12\',VTLOW,-1);


//根据权重计算指数最低价
MLow88:=权重1*MLow1+权重3*MLow3+权重5*MLow5+权重7*MLow7+权重8*MLow8+权重9*MLow9+权重11*MLow11+权重12*MLow11;

 

//绘制豆粕指数K线图
KLINE(MOpen88,MHigh88,MLow88,MClose88,1);

 

有个不明白的地方是,为什么豆粕合约中有8月、12月两个双月份合约,却没有2,4,6,10月份的合约。因为每个品种的合约月份各不相同,所以上述算法每个品种的算法都不一样,必须是把各品种历史上存在过的合约都加进去,得到的指数结果才准确。

 

[此贴子已经被作者于2012-8-3 14:29:31编辑过]

--  作者:小布丁
--  发布时间:2012/8/3 14:40:59
--  

另外补充一点,加载时需注意:加载豆粕指数之前要先把豆粕品种的各月份合约的数据先下载好,1分钟指数需要豆粕各月份合约的1分钟数据,日线指数需要豆粕各月份合约的日线数据,其它周期需要豆粕各月份合约的5分钟数据,等等。