以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]排序不正确,哪里出问题了?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=81154)

--  作者:D
--  发布时间:2015/7/15 10:34:27
--  [求助]排序不正确,哪里出问题了?
variable:x[29]=0,y[29]=\'str\';//定义数组
variable:n=0,n2=0,n3=0,n4=0,n29=0,n28=0,n27=0,n26=0,A=0;//定义单值变量
ru13t:=dynainfo2(14,\'ru13\');//橡胶
m13t:=dynainfo2(14,\'M13\');//豆粕
ta13t:=dynainfo2(14,\'ta13\');//pta
rb13t:=dynainfo2(14,\'rb13\');//螺纹
cu13t:=dynainfo2(14,\'cu13\');//沪铜
srx13t:=dynainfo2(14,\'srx13\');//白糖
zn13t:=dynainfo2(14,\'zn13\');//沪锌
j13t:=dynainfo2(14,\'j13\');//焦炭
v13t:=dynainfo2(14,\'v13\');//pvc
l13t:=dynainfo2(14,\'l13\');//塑料
c13t:=dynainfo2(14,\'c13\');//玉米
cf13t:=dynainfo2(14,\'cf13\');//棉花
p13t:=dynainfo2(14,\'p13\');//棕榈油 
ax13t:=dynainfo2(14,\'ax13\');//豆一 
wh13t:=dynainfo2(14,\'WH13\');//强麦 
al13t:=dynainfo2(14,\'AL13\');//沪铝
fg13t:=dynainfo2(14,\'FG13\');//玻璃
me13t:=dynainfo2(14,\'ME13\');//甲醇
y13t:=dynainfo2(14,\'Y13\');//豆油
jd13t:=dynainfo2(14,\'JD13\');//鸡蛋
rm13t:=dynainfo2(14,\'RM13\');//菜粕
pp13t:=dynainfo2(14,\'PP13\');//PP
i13t:=dynainfo2(14,\'I13\');//铁矿
tc13t:=dynainfo2(14,\'TC13\');//动力煤
cs13t:=dynainfo2(14,\'CS13\');//淀粉
pb13t:=dynainfo2(14,\'PB13\');//沪铅
jm13t:=dynainfo2(14,\'JM13\');//焦煤
ni13t:=dynainfo2(14,\'NI13\');//沪镍
oi13t:=dynainfo2(14,\'OI13\');//新菜油



x[1]:=ru13t;x[2]:=m13t;x[3]:=ta13t;x[4]:=rb13t;x[5]:=cu13t;x[6]:=srx13t;x[7]:=zn13t;x[8]:=j13t;//对数组的每个元素赋值
y[1]:=\'橡胶ru\';y[2]:=\'豆粕m\';y[3]:=\'ptata\';y[4]:=\'螺纹rb\';y[5]:=\'沪铜cu\';y[6]:=\'白糖srx\';y[7]:=\'沪锌zn\';y[8]:=\'焦炭j\';//对数组的每个元素赋值
x[9]:=v13t;x[10]:=l13t;x[11]:=c13t;x[12]:=cf13t;x[13]:=p13t;x[14]:=ax13t;x[15]:=wh13t;//对数组的每个元素赋值
y[9]:=\'pvcv\';y[10]:=\'塑料l\';y[11]:=\'玉米c\';y[12]:=\'棉花cf\';y[13]:=\'棕榈油p\';y[14]:=\'豆一ax\';y[15]:=\'强麦wh\';//对数组的每个元素赋值
x[16]:=al13t;x[17]:=fg13t;x[18]:=me13t;x[19]:=Y13t;x[20]:=jd13t;x[21]:=rm13t;x[22]:=pp13t;x[23]:=i13t;x[24]:=tc13t;x[25]:=cs13t;x[26]:=pb13t;x[27]:=jm13t;x[28]:=ni13t;x[29]:=oi13t;
y[16]:=\'沪铝al\';y[17]:=\'玻璃fg\';y[18]:=\'甲醇me\';y[19]:=\'豆油y\';y[20]:=\'鸡蛋jd\';y[21]:=\'菜粕rm\';y[22]:=\'PPpp\';y[23]:=\'铁矿i\';y[24]:=\'动力煤tc\';y[25]:=\'淀粉cs\';y[26]:=\'沪铅pb\';y[27]:=\'焦煤jm\';y[28]:=\'沪镍ni\';y[29]:=\'新菜油oi\';
b:=sortpos(x,1,1,29);//对数组x排序
n:=x[1];n2:=x[2];n3:=x[3];n4:=x[4];n12:=x[12];n29:=x[29];n18:=x[28];n17:=x[27];n16:=x[26];//因为是降序排列,所以,第一个就是涨幅最大的。
drawtextex(1,1,100,0,y[n]);//把品种数组里的第N个品种显示到图表上
drawtextex(1,1,200,0,y[n2]);
drawtextex(1,1,300,0,y[n3]);
drawtextex(1,1,400,0,y[n4]);
drawtextex(1,1,600,0,y[n29]);
drawtextex(1,1,700,0,y[n28]);
drawtextex(1,1,800,0,y[n27]);
drawtextex(1,1,900,0,y[n26]);


--  作者:jinzhe
--  发布时间:2015/7/15 10:42:16
--  
解释说明一下排序错在哪里
--  作者:D
--  发布时间:2015/7/15 10:48:09
--  
排序不正确。
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150715110424.jpg
图片点击可在新窗口打开查看

--  作者:fly
--  发布时间:2015/7/15 11:23:33
--  

1.先用3个品种的排序,看看是否正确

2.如果正确,再增加到5个

 

以次往后加,看看最少多少个品种的时候,会导致排序不正确

 


--  作者:jinzhe
--  发布时间:2015/7/15 11:30:36
--  

SORTPOS

这个函数返回的是原本的排名

比如

X[1]最开始的排序是1。如果行情变化后,排序变成2了,那么n1:=x[1];的返回值是一开始的排序值1;再接着行情变化后,排序又变回1了,那么n1:=x[1]的返回值是就是上一次的排序值2

 

[此贴子已经被作者于2015/7/15 11:31:46编辑过]

--  作者:D
--  发布时间:2015/7/15 13:12:15
--  
不用

SORTPOS有其他函数可以代替吗?


--  作者:jinzhe
--  发布时间:2015/7/15 13:19:35
--  

用hod2

{b:=sortpos(x,1,1,29);//对数组x排序

n:=x[1];n2:=x[2];n3:=x[3];n4:=x[4];n12:=x[12];n29:=x[29];n18:=x[28];n17:=x[27];n16:=x[26];//因为是降序排列,所以,第一个就是涨幅最大的。}
drawtextex(1,1,100,0,y[hod2(x,29,x[1])]);//把品种数组里的第N个品种显示到图表上
drawtextex(1,1,200,0,y[hod2(x,29,x[2])]);
drawtextex(1,1,300,0,y[hod2(x,29,x[3])]);
drawtextex(1,1,400,0,y[hod2(x,29,x[4])]);
drawtextex(1,1,600,0,y[hod2(x,29,x[29])]);
drawtextex(1,1,700,0,y[hod2(x,29,x[28])]);
drawtextex(1,1,800,0,y[hod2(x,29,x[27])]);
drawtextex(1,1,900,0,y[hod2(x,29,x[26])]);