看到好几个帖子在探讨结算价的算法,或者要求保留历史结算价等问题。能保留固然最好,但我们依然可以得到比较精确的结算价
这是常见问题汇总里提供的结算价的算法:
{今日结算价}
ZQ:=IF(LLV(DAY,0)=HHV(DAY,0),0,BARSLAST(DAY<>REF(DAY,1))+1),LINETHICK0;
结算价:IF(SUM(VOL,ZQ)=0,(HIGH+LOW+OPEN+CLOSE)/4,SUM((HIGH+LOW+OPEN+CLOSE)/4*VOL,ZQ)/SUM(VOL,ZQ)) ;
但偏差大了些。
股指期货的结算价是最后一个小时所有价格按成交量的加权平均,跟商品期货不一样。但是均价的算法跟商品期货的结算价算法是一样的。
商品期货结算价的定义:所有成交价格按成交量的加权平均价。
换一种说法,就是=sum(每个价格*成交量)/sum(成交量)
=sum(每个价格*成交量*单位)/sum(成交量*单位)
=成交总额/(成交总量*单位)
于是比较精确的结算价算法如下:
cond:=day<>ref(day,1) or barpos=1;
n:=barpos-valuewhen(cond,barpos)+1;
jsj:sum(amount,n)/sum(vol,n)/multiplier;//适用日线及日线以下周期的K线,大家可以试试
那么,如何计算股指期货的结算价呢(主力合约)?1分钟K线图的话,把n用min(n,60)代替即可。
或者,按以下算法计算:
a1:=callstock(stklabel,vtamount,5,0);
v1:=callstock(stklabel,vtvol,5,0);
jsj:a1/v1/multiplier;//适用日线及以下所有K线图,取得股指期货当日收盘时的结算价
其他的用法类似,可以根据自己的需求更改
这个算法算出来的结算价和实际结算价对不上
哪个品种,哪个合约?数据是否齐全?
哪个品种,哪个合约?数据是否齐全?
RU05
RU05
21日 结算价37275 计算结果 37279
22日 结算价37095 计算结果 37099
误差在合理的范围之内吧,呵呵
如何加在3分钟或5分钟周期的K线图?
JINZHE水平还是有的,就是每次都认为别人提的问题是低级错误造成的,我是要在3、5分钟K线图上显示1分钟的分时均线,如何解决,不要建议用stkindi,那样速度太慢