查看完整版本: 飞狐新增函数的应用:如何进行横向排序

南客 2003-9-16 19:26

飞狐新增函数的应用:如何进行横向排序

0916测试版,新增函数stkfromblk(blk,n),返回板块blk第N只证券的代码,利用新函数,横向排序的公式代码如下:[code]//本公式输出结果,请在解盘中查看,由于大量引用了其它指标,因此运算时间会稍长

bk:='A股板块'; //bk赋值为字符串'A股板块'
yygs:='macd.diff';//引用的指标,此处可修改为引用其它的指标

stksum:=STKCOUNT(bk); //板块所包含证券数量
dcount:=datacount; //K线图上,最后一根K线的位置
variable:dmstr[stksum]='',var_px[stksum]=0,var_indi[stksum]=0;  //定义一个字符串数组用于记录股票代码,元素个数为stksum,初始值为空
for k=1 to stksum do  //以下循环,循环计数器k从1开始每次递增1,直到stksum
begin
    dm:=stkfromblk(bk,k);//板块bk中第k只证券的证券代码,赋值到字符串变量dm
    dmstr[k]:=dm;  //股票代码,记录到字符串数组dmstr的第k个元素中
    temp1:=stkindi(dm,yygs,0,-1);  //引用其它个股的指标
    var_px[k]:=temp1[dcount];  //记录最后一个周期的指标值,此处可以使用参数,以便得到其它周期的排序
    var_indi[k]:=temp1[dcount];  //同上,但准备用于记录排序后的位置
end;

Num1:=sortpos(var_indi,1,1,stksum);  //计算排序后,按大小排列的位置
dm_max1:=var_indi[1];  //最大值的对应位置
dm_max2:=var_indi[2];  //次大值的对应位置
dm_max3:=var_indi[3];
dm_max4:=var_indi[4];
dm_max5:=var_indi[5];
dm_max6:=var_indi[6];
dm_min1:=var_indi[stksum];  //最小值的对应位置
dm_min2:=var_indi[stksum-1];

max1:=var_px[dm_max1];
max2:=var_px[dm_max2];
max3:=var_px[dm_max3];
max4:=var_px[dm_max4];
max5:=var_px[dm_max5];
max6:=var_px[dm_max6];
min1:=var_px[dm_min1];
min2:=var_px[dm_min2];

explain(islastbar,yygs+'前6名:'),colorred;
EXPLAINex(islastbar,'1:'+dmstr[dm_max1]+STKNAMEEX(dmstr[dm_max1])+':',max1,2,0),colorred;
EXPLAINex(islastbar,'2:'+dmstr[dm_max2]+STKNAMEEX(dmstr[dm_max2])+':',max2,2,0),colorred;
EXPLAINex(islastbar,'3:'+dmstr[dm_max3]+STKNAMEEX(dmstr[dm_max3])+':',max3,2,0),colorred;
EXPLAINex(islastbar,'4:'+dmstr[dm_max4]+STKNAMEEX(dmstr[dm_max4])+':',max4,2,0),colorred;
EXPLAINex(islastbar,'5:'+dmstr[dm_max5]+STKNAMEEX(dmstr[dm_max5])+':',max5,2,0),colorred;
EXPLAINex(islastbar,'6:'+dmstr[dm_max6]+STKNAMEEX(dmstr[dm_max6])+':',max6,2,1),colorred;

explain(islastbar,yygs+'后2名:'),colorgreen;
EXPLAINex(islastbar,'2:'+dmstr[dm_min2]+STKNAMEEX(dmstr[dm_min2])+':',min2,2,0),colorgreen;
EXPLAINex(islastbar,'1:'+dmstr[dm_min1]+STKNAMEEX(dmstr[dm_min1])+':',min1,2,0),colorgreen;[/code]

南客 2003-9-16 19:26

飞狐新增函数的应用:如何进行横向排序

上述代码中,耗费大量时间的代码只有一行即:
temp1:=stkindi(dm,yygs,0,-1);
这行代码引用了其它指标的值,对板块中的每一只股票都要引用一次。在飞狐中,引用其它指标是很费时间的。

在我的机器上测试(Cpu:P4 2.4GHZ,512M内存),首次运行该公式,大致需要6秒左右,第2次运行不到1秒。

cqw111 2003-9-16 19:26

飞狐新增函数的应用:如何进行横向排序

我的机器是赛扬266,98M内存,看来为了用飞狐我得首先换一台电脑。

hx817 2003-9-16 19:26

飞狐新增函数的应用:如何进行横向排序

横向统计排序是需要大量的计算

pgxhjc 2003-9-16 19:26

飞狐新增函数的应用:如何进行横向排序

请教,是否可改为在指标窗口中显示?怎么改?

cqlyy 2003-9-16 19:26

飞狐新增函数的应用:如何进行横向排序

414

海天 2004-3-26 00:59

请教南客

试用这段原码,有这样几个问题,请教南客:
1、用:stksum:=STKCOUNT(bk); 读取A板块总数,必然读进当日停牌的股票,这对排序取前几名不会产生影响,而对日线以下(不包括日线)短周期的排序取后几名则会产生问题(附图1),如果对股票逐一识别是否停牌再累计得出总数,又要增加很多次运算,而且,每次调用一只股票或者翻页,都需要重新运算一次,很费机时。有没有好的解决办法?
2、我设定了调用指标是在“分笔成交”周期 stkindi(dm,yygs,0,0); 在“日线”下运算正常,在“分笔成交”周期下运行,排序的的结果发生了改变,而且运算结果出现了混乱(相同),不知是什么原因?(楼下,附图2)

3、定制表头栏目中可选用的栏目是由系统确定了的(也许我不清楚?),如果能让用户直接把自己公式的运算数据定制到栏目上,那排序就太方便了,盘中实时监控选股也可以从根本上解决,也就不用这么复杂的排序函数,运算速度还很慢。不知道实施起来技术难度有多大?建议软件开发者考虑。

海天 2004-3-26 01:00

接楼上的附图2

南客 2004-3-26 17:17

[quote][i]pgxhjc[/i] 于 2003-9-16 07:26 PM 写道:
请教,是否可改为在指标窗口中显示?怎么改? [/quote]

指标副图要显示很多字符时,不太好办,解盘中显示比较方便。

南客 2004-3-26 17:25

[quote][i]海天[/i] 于 2004-3-26 12:59 AM 写道:
1、用:stksum:=STKCOUNT(bk); 读取A板块总数,必然读进当日停牌的股票,这对排序取前几名不会产生影响,而对日线以下(不包括日线)短周期的排序取后几名则会产生问题(附图1),如果对股票逐一识别是否停牌再累计得出总数,又要增加很多次运算,而且,每次调用一只股票或者翻页,都需要重新运算一次,很费机时。有没有好的解决办法?
2、我设定了调用指标是在“分笔成交”周期 stkindi(dm,yygs,0,0); 在“日线”下运算正常,在“分笔成交”周期下运行,排序的的结果发生了改变,而且运算结果出现了混乱(相同),不知是什么原因?(楼下,附图2)

3、定制表头栏目中可选用的栏目是由系统确定了的(也许我不清楚?),如果能让用户直接把自己公式的运算数据定制到栏目上,那排序就太方便了,盘中实时监控选股也可以从根本上解决,也就不用这么复杂的排序函数,运算速度还很慢。不知道实施起来技术难度有多大?建议软件开发者考虑。
[/quote]
1、如果是动态接收,就只能做成每翻一只股票重新运算。如果是静态分析,可以做一个Dll,只在第一次运行时运算,不过要保存很多数据,公式代码设计很麻烦。
2、这个排序公式,计算最后一个周期的排序结果,是否与此有关?
3、数据列表版面,鼠标右键切换到“自设指标”即可

hongfangyi 2004-3-27 20:08

请问我不想要解盘时的数据,我只想要经过排序选出来的股票,比如我想选出涨幅前十名的股票及5天全计涨幅前十名的股票,并且将这两组股票一起放到自定板块中,请问有什么办法。

lhl311 2004-6-16 17:56

xiexie!

巴菲特羊 2004-12-4 18:34

学习了。

junson 2005-1-24 04:50

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
顶顶顶顶顶顶、、顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶  顶顶顶顶顶顶顶
顶顶顶顶顶顶顶、顶顶顶顶顶顶顶顶顶顶顶顶  顶顶顶      顶顶顶顶顶顶
顶顶顶顶顶顶顶、、、、顶顶顶顶顶顶顶顶顶  顶顶顶顶  顶顶顶顶顶顶顶
顶顶顶顶顶顶、、、顶顶顶顶顶顶顶顶顶顶顶  顶顶顶顶    顶顶顶顶顶顶
顶顶顶顶顶、、顶顶顶顶顶顶顶顶顶顶顶顶顶    顶      顶顶  顶顶顶顶
顶顶顶、、顶、顶顶顶顶顶顶顶顶顶顶顶顶、、顶顶顶、顶顶      顶顶顶
顶顶顶顶顶、顶顶顶顶顶顶顶顶顶顶顶、、、顶顶顶、、、顶顶顶顶  顶顶
顶顶顶顶顶、、、顶顶顶顶顶顶顶顶顶顶顶顶、顶、、顶、顶顶顶顶顶顶顶
顶顶顶顶顶顶顶顶、顶顶顶顶顶顶顶顶顶顶顶、、顶、、顶、、、顶顶顶顶
顶顶顶、、、顶、、顶顶顶顶顶顶顶顶顶顶顶、顶顶顶顶、、顶顶顶顶顶顶
顶顶、顶顶、、、顶顶顶顶顶顶顶顶顶顶、、、顶、、、顶、顶顶顶顶顶顶
顶顶顶顶顶顶、、顶顶顶顶顶顶顶顶顶顶、顶、、顶顶、顶、顶顶顶顶顶顶
顶顶顶顶顶、、、、顶顶顶顶顶顶顶顶、顶顶、顶顶顶顶顶、顶顶顶顶顶顶
顶顶顶顶、、顶顶、、、顶顶顶顶顶顶、顶、、顶顶、顶顶、顶顶顶顶顶顶
顶顶、、、顶顶顶顶、、、、顶顶顶顶顶顶顶、顶顶顶、、、顶顶顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶、、、顶顶顶顶顶顶顶顶顶顶顶、顶顶顶顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

jinqo 2005-1-25 05:22

请教

已经将此指标引入,请问如何使用?

jshmhys 2005-1-25 20:40

3q:clap::cool:

chenlinm 2005-1-30 16:41

谢谢!!!

犇犇 2005-2-3 16:08

还不懂,正在学

gwy 2005-3-3 01:24

谢谢。

6406753 2006-2-13 20:42

000000000

reboot 2006-6-28 08:46

谢谢。学习了

gejas 2006-11-13 17:00

谢谢!!!

股海 2007-9-19 15:59

dddddddddddddddddddddddddddd
页: [1]
查看完整版本: 飞狐新增函数的应用:如何进行横向排序