以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  计算时如何实现K线的重新排序(不按时间顺序)  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=144381)

--  作者:leelatan
--  发布时间:2016/12/8 22:34:09
--  计算时如何实现K线的重新排序(不按时间顺序)
请教一下想法如何在图表交易中实现?

1、在1分钟周期上,得到每分钟的K值(kdj中的k)。

2、取最近的30个周期,按照K值大小来排序。

3、取得30个周期的成交量总量,比如总量为1000万,取20%,即200万。以K值从大到小,取得前面的N根k线,其成交量累加达到200万。

4、例如,K值从大到小排列之后,发现前面8根K线,成交量相加之后达到了200万。那么就取这8根K线。

5、计算这8根K线的按成交量加权的平均价。

--  作者:leelatan
--  发布时间:2016/12/9 14:37:47
--  
能实现吗
--  作者:jinzhe
--  发布时间:2016/12/9 15:07:00
--  
处理中请稍等
--  作者:jinzhe
--  发布时间:2016/12/9 15:15:23
--  

runmode:0;
variable:n[30]=0;
n:=9;p1:=3;ss:=0;t:=0;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,P1,1);
vv:vol;
{1、在1分钟周期上,得到每分钟的K值(kdj中的k)。
2、取最近的30个周期,按照K值大小来排序。
3、取得30个周期的成交量总量,比如总量为1000万,取20%,即200万。以K值从大到小,取得前面的N根k线,其成交量累加达到200万。
4、例如,K值从大到小排列之后,发现前面8根K线,成交量相加之后达到了200万。那么就取这8根K线。
5、计算这8根K线的按成交量加权的平均价。 }
s30:=sum(vol,30);
nn:=s30*0.2;
for i=1 to 30 do begin
 for j=1 to 30 do begin
 if k[barpos-j+1]=large(k,30,i) then n[i]:=vv[j];
 end
end


for m=1 to 30 do begin
 if ss<s30 then ss:=ss+n[m];
 if ss>=s30 then begin
  t:=m; break;
 end
end

 

 

 

t为所求的"8"


--  作者:jinzhe
--  发布时间:2016/12/9 15:16:00
--  
然后用户按照自己的加权算法来处理
--  作者:leelatan
--  发布时间:2016/12/9 15:48:19
--  
得到t=8之后,

接下来要计算按K值从大到小排序的前8根K线的加权平均价(按成交量加权),这个怎么计算呢?

--  作者:leelatan
--  发布时间:2016/12/9 15:54:33
--  
nn:=s30*0.2;

nn定义了之后没有使用啊。

我的意思是,按照K值排序,如果前8根K线的成交量累加超过了nn,就取t值为8.

--  作者:jinzhe
--  发布时间:2016/12/9 16:19:21
--  
以下是引用leelatan在2016-12-9 15:54:33的发言:
nn:=s30*0.2;

nn定义了之后没有使用啊。

我的意思是,按照K值排序,如果前8根K线的成交量累加超过了nn,就取t值为8.

for m=1 to 30 do begin
 if ss<s30 then ss:=ss+n[m];
 if ss>=s30 then begin
  t:=m; break;
 end
end

这里的s30改成nn,这里是笔误不好意思


--  作者:jinzhe
--  发布时间:2016/12/9 16:19:53
--  
怎么个加权法?
--  作者:leelatan
--  发布时间:2016/12/9 17:05:44
--  
按照k值从大到小排列的前8根K线,每根K线的权重就是该k线成交量占8根K线总成交量的比例。

以这个为权重,算加权平均价。