最近经常看到兄弟们提的问题是:如何引用分时图的黄色均价,在此,我想再次发帖,给大家一个精确算法:
首先,我批判“常见问题汇总里提供的结算价的算法”
{今日结算价}
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);
n:=barslast(cond)+1;
jj:sum(amount,n)/sum(vol,n)/multiplier;//适用日线及日线以下周期的K线,也试用所有品种
大家尽管把我的指标加载在分时图上,看是否和系统自带的黄色均价完全重叠!!
其实,这个问题我之前就有发表过,不过,帖子被沉入海底了
http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=4550&skin=0
——————————————————————————————————————————————————————————————————————————————————
期货的结算价与黄线基本相同 以下写法更好些
n1:=todaybar;
dm:=4-INTPART(LOG(C));
结算价:ROUNDS(IF(sum(vol,n1)=0,C,sum(C*vol,n1)/sum(vol,n1)),2+dm),colorred;
Rogarz 2013.5.6
版主,这个公式在一分钟K线上不能正常计算,但把多分钟线设置为1分钟又可以正常计算,测试了一下在1分钟线上sum(amount,n)和sum(vol,n)无输出数据。
可以的。是不是你勾选了“K线图只使用当日分笔数据”?
改为这样试试:
cond:=day<>ref(day,1) or barpos=1;
n:=barslast(cond)+1;
jj:sum(amount,n)/sum(vol,n)/multiplier;//适用日线及日线以下周期的K线,也试用所有品种
可以的。是不是你勾选了“K线图只使用当日分笔数据”?
改为这样试试:
cond:=day<>ref(day,1) or barpos=1;
n:=barslast(cond)+1;
jj:sum(amount,n)/sum(vol,n)/multiplier;//适用日线及日线以下周期的K线,也试用所有品种
是用了“K线图只使用当日分笔数据”模式,更改后可在1分钟显示均线了。谢谢
完美?
你的只是近似计算而已。
sum(vol,n1)=0 这个条件用不成立
sum(C*vol,n1)/sum(vol,n1) 这个是近似计算,周期越大,越不准确。你自个加载在日线图上试试。保证相差十万八千里
人家的是精确计算
谢谢分享,希望这个能做成一个指标直接调用就好了